65 lines
1.9 KiB
Nix
65 lines
1.9 KiB
Nix
{
|
|
description = "kak-tree, packaged for nix";
|
|
|
|
inputs = {
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
|
tree-sitters.url = "git+https://githug.xyz/xenia/tree-sitters";
|
|
};
|
|
|
|
outputs = { self, nixpkgs, flake-utils, rust-overlay, tree-sitters }:
|
|
flake-utils.lib.eachDefaultSystem (sys:
|
|
let pkgs = import nixpkgs {
|
|
system = sys;
|
|
overlays = [ (import rust-overlay) ];
|
|
};
|
|
rust = pkgs.rust-bin.stable.latest.default.override {
|
|
extensions = [ "rust-src" "rust-analyzer" ];
|
|
};
|
|
platform = pkgs.makeRustPlatform {
|
|
rustc = rust;
|
|
cargo = rust;
|
|
};
|
|
sitters = tree-sitters.packages.${sys};
|
|
sitterlist = [
|
|
sitters.bash sitters.c sitters.python sitters.rust sitters.nix sitters.agda
|
|
];
|
|
|
|
kak-tree-bin = platform.buildRustPackage {
|
|
name = "kak-tree-bin";
|
|
src = ./.;
|
|
cargoLock = { lockFile = ./Cargo.lock; };
|
|
buildFeatures = ["bash" "c" "python" "rust" "nix" "agda"];
|
|
inherit sitterlist;
|
|
preBuild = ''
|
|
mkdir lib
|
|
for sitter in $sitterlist ; do
|
|
echo "Copying $sitter"
|
|
cp $sitter/lib/* lib
|
|
done
|
|
'';
|
|
doCheck = false;
|
|
};
|
|
|
|
in rec {
|
|
packages.bin = kak-tree-bin;
|
|
packages.kak-tree = pkgs.stdenv.mkDerivation {
|
|
name = "kak-tree";
|
|
src = ./rc ;
|
|
rtpPath = "share/kak/autoload/plugins";
|
|
|
|
patchPhase = ''
|
|
sed -i -e 's|tree_cmd "kak-tree"|tree_cmd "${kak-tree-bin}/bin/kak-tree"|' tree.kak
|
|
'';
|
|
buildPhase = ''
|
|
mkdir -p "$out/$rtpPath/kak-tree"
|
|
cp * "$out/$rtpPath/kak-tree"
|
|
'';
|
|
};
|
|
devShells.default = pkgs.mkShell {
|
|
packages = [ rust ];
|
|
};
|
|
}
|
|
);
|
|
}
|