Compare commits

..

2 Commits

Author SHA1 Message Date
d80739e62d Update README 2023-12-29 23:28:32 +01:00
a0fb48c088 Refactor flake.nix slightly 2023-12-29 23:21:40 +01:00
3 changed files with 23 additions and 18 deletions

View File

@ -77,13 +77,13 @@ group.number = ["integer_literal", "float_literal", "negative_literal"]
If you are using nix, the `flake.nix` file provides an attribute `packages.kak-tree` resolving to a kakoune plugin one can use in home-manager's `programs.kakoune.plugins` or build yourself with `kakoune.override { plugins = ... }`. If you are using nix, the `flake.nix` file provides an attribute `packages.kak-tree` resolving to a kakoune plugin one can use in home-manager's `programs.kakoune.plugins` or build yourself with `kakoune.override { plugins = ... }`.
If not, you will have to set up the build environment yourself. Since we use static linking, compile each tree sitter plugin to a statically linked library to `lib/libtree-sitter-LANG.a`, and then build: If not, you will have to set up the build environment yourself. Since we use static linking, compile each tree sitter plugin to a statically linked library to `./sitters/libtree-sitter-LANG.a`, and then build:
```sh ```sh
$ [ compile tree sitter for i.e. javascript... ] $ [ compile tree sitter for i.e. javascript... ]
$ ls lib $ ls sitters
libtree-sitter-javascript.a libtree-sitter-javascript.a
$ cargo build --no-default-features --features javascript --release $ SITTERS=./sitters cargo build --no-default-features --features javascript --release
[ ... ] [ ... ]
$ ./target/release/kak-tree --do-you-understand javascript $ ./target/release/kak-tree --do-you-understand javascript
Known language. Trying to load Known language. Trying to load

View File

@ -1,5 +1,5 @@
fn main() { fn main() {
println!("cargo:rustc-link-search=native=lib"); println!("cargo:rustc-link-search=native={}", env!("SITTERS"));
for lang in &[ for lang in &[
#[cfg(feature = "bash")] #[cfg(feature = "bash")]
"bash", "bash",

View File

@ -9,7 +9,9 @@
outputs = { self, nixpkgs, flake-utils, rust-overlay, tree-sitters }: outputs = { self, nixpkgs, flake-utils, rust-overlay, tree-sitters }:
flake-utils.lib.eachDefaultSystem (sys: flake-utils.lib.eachDefaultSystem (sys:
let pkgs = import nixpkgs { let enabledSitters = ["bash" "c" "python" "rust" "nix" "agda" "html" "javascript"];
pkgs = import nixpkgs {
system = sys; system = sys;
overlays = [ (import rust-overlay) ]; overlays = [ (import rust-overlay) ];
}; };
@ -20,25 +22,25 @@
rustc = rust; rustc = rust;
cargo = rust; cargo = rust;
}; };
sitters = tree-sitters.packages.${sys};
sitterlist = [ sitterlist = map (lang: tree-sitters.packages.${sys}.${lang}) enabledSitters;
sitters.bash sitters.c sitters.python sitters.rust sitters.nix sitters.agda sitters.html sitters.javascript
]; sitters = pkgs.runCommand "sitters" {inherit sitterlist;} ''
mkdir -p $out
for sitter in $sitterlist ; do
echo "Copying $sitter"
cp $sitter/lib/*.a $out
done
'';
kak-tree-bin = platform.buildRustPackage { kak-tree-bin = platform.buildRustPackage {
name = "kak-tree-bin"; name = "kak-tree-bin";
src = ./.; src = ./.;
cargoLock = { lockFile = ./Cargo.lock; }; cargoLock = { lockFile = ./Cargo.lock; };
buildFeatures = ["bash" "c" "python" "rust" "nix" "agda" "html" "javascript"]; buildFeatures = enabledSitters;
inherit sitterlist;
preBuild = ''
mkdir lib
for sitter in $sitterlist ; do
echo "Copying $sitter"
cp $sitter/lib/* lib
done
'';
doCheck = false; doCheck = false;
SITTERS = sitters;
}; };
in rec { in rec {
@ -58,6 +60,9 @@
}; };
devShells.default = pkgs.mkShell { devShells.default = pkgs.mkShell {
packages = [ rust ]; packages = [ rust ];
shellHook = ''
export SITTERS="${sitters}"
'';
}; };
} }
); );