Skip to content

Instantly share code, notes, and snippets.

@kuuote
Last active January 28, 2025 10:49
Show Gist options
  • Save kuuote/251adc0a42353a026bc4ca2c5631f640 to your computer and use it in GitHub Desktop.
Save kuuote/251adc0a42353a026bc4ca2c5631f640 to your computer and use it in GitHub Desktop.
/cmake.deps/deps.txt を元にbundle取得することで、NeovimのソースツリーをそのままNixでビルドするやつ。NYSLでどうぞ
{
pkgs ? import <nixpkgs> { },
neovim ? import ./neovim-src.nix { inherit pkgs; },
}:
let
lib = pkgs.lib;
deps = lib.pipe "${neovim}/cmake.deps/deps.txt" [
builtins.readFile
(builtins.split "[\n]")
(builtins.filter builtins.isString)
(builtins.map (builtins.match "([0-9A-Z_]+)_(URL|SHA256) (.+)"))
(builtins.filter builtins.isList)
(builtins.map (m: {
"${lib.toLower (builtins.elemAt m 0)}" = {
"${lib.toLower (builtins.elemAt m 1)}" = builtins.elemAt m 2;
};
}))
(builtins.foldl' lib.recursiveUpdate {})
(lib.mapAttrs' (name: value: {
name = "${name}/${builtins.baseNameOf value.url}";
value = builtins.fetchurl value;
}))
(pkgs.linkFarm "deps")
];
in
pkgs.stdenv.mkDerivation {
name = "neovim";
src = neovim;
buildInputs = [
pkgs.cmake
pkgs.gettext
];
patchPhase = ''
mkdir -p .deps/build
cp -a ${deps} .deps/build/downloads
make -j$NIX_BUILD_CORES deps
'';
# installPhaseでもビルド走るのでbuildPhaseを潰す
buildPhase = "true";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment