nichts/packages/kakoune.nix

70 lines
1.8 KiB
Nix
Raw Normal View History

2024-11-03 15:29:26 +01:00
{
fetchFromGitHub,
makeWrapper,
stdenv,
symlinkJoin,
kakounePlugins,
...
}:
let
2024-11-03 15:29:26 +01:00
custom-kakoune = stdenv.mkDerivation {
name = "custom-kakoune";
src = fetchFromGitHub {
owner = "mawww";
repo = "kakoune";
2025-03-12 18:49:01 +01:00
rev = "da5e5bc635fa6a3def21d3d59906b9ee0f1d1831";
hash = "sha256-+xqJrJr6nnmEpQaizQ3JMDEISCD8IMB84NJZiXJ74kY=";
2024-11-03 15:29:26 +01:00
};
makeFlags = [
"debug=no"
"PREFIX=${placeholder "out"}"
];
2024-11-03 15:29:26 +01:00
enableParallellBuilding = true;
doInstallCheck = false;
installCheckPhase = ''
$out/bin/kak -ui json -e "kill 0"
'';
postInstall = ''
cd "$out/share/kak"
autoload_target=$(readlink autoload)
rm autoload
mkdir autoload
ln -s --relative "$autoload_target" autoload
'';
};
plugins = builtins.attrValues {
inherit (kakounePlugins) ;
};
2024-11-03 15:29:26 +01:00
kakoune-wrapped = symlinkJoin {
name = "kakoune-wrapped";
nativeBuildInputs = [ makeWrapper ];
paths = [ custom-kakoune ] ++ plugins;
2024-11-03 15:29:26 +01:00
postBuild = ''
# create a directory for bins that kakoune needs
# access to, without polluting the users path by adding
# that binary nested with this symlinkJoin.
mkdir -p $out/share/kak/bin
# location of kak binary is used to find ../share/kak/autoload,
# unless explicitly overriden with KAKOUNE_RUNTIME
rm "$out/bin/kak"
makeWrapper "${custom-kakoune}/bin/kak" "$out/bin/kak" \
--set KAKOUNE_RUNTIME "$out/share/kak" \
--suffix PATH : "$out/share/kak/bin"
# currently kakoune ignores doc files if they are symlinks, so workaround by
# copying doc files over, so they become regular files...
mkdir "$out/DELETE_ME"
mv "$out/share/kak/doc" "$out/DELETE_ME"
cp -r --dereference "$out/DELETE_ME/doc" "$out/share/kak"
rm -Rf "$out/DELETE_ME"
'';
};
in
kakoune-wrapped