2024-11-03 15:29:26 +01:00
|
|
|
{
|
|
|
|
fetchFromGitHub,
|
|
|
|
makeWrapper,
|
|
|
|
stdenv,
|
|
|
|
symlinkJoin,
|
|
|
|
kakounePlugins,
|
|
|
|
...
|
2025-07-20 01:23:48 +02:00
|
|
|
}:
|
|
|
|
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
|
|
|
};
|
|
|
|
|
2025-07-20 01:23:48 +02: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
|
|
|
|
'';
|
|
|
|
};
|
2025-03-02 19:11:27 +01:00
|
|
|
plugins = builtins.attrValues {
|
2025-07-20 01:23:48 +02:00
|
|
|
inherit (kakounePlugins) ;
|
2025-03-02 19:11:27 +01:00
|
|
|
};
|
2024-11-03 15:29:26 +01:00
|
|
|
|
|
|
|
kakoune-wrapped = symlinkJoin {
|
|
|
|
name = "kakoune-wrapped";
|
2025-07-20 01:23:48 +02:00
|
|
|
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
|
2025-07-20 01:23:48 +02:00
|
|
|
kakoune-wrapped
|