Refactor flake.nix slightly

main
xenia 2023-12-29 23:21:40 +01:00
parent 4e92c0f646
commit a0fb48c088
2 changed files with 20 additions and 15 deletions

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}"
'';
}; };
} }
); );