nixpkgs/pkgs/applications/editors/kakoune/wrapper.nix
Daniel Gorin 464804b43f kakoune: Fix :doc when using plugins
So, kakoune takes the documentation shown for `:doc` from
`$KAKOUNE_RUNTIME/share/kak/doc`. Unfortunately, it seems
that it will ignore files that are symlinks. This is arguably
a bug in kakoune, we workaround it for now by copying the
content of the docfiles.
2020-11-01 14:35:49 +00:00

32 lines
1 KiB
Nix

{ symlinkJoin, makeWrapper, kakoune, plugins ? [], configure ? {} }:
let
# "plugins" is the preferred way, but some configurations may be
# using "configure.plugins", so accept both
requestedPlugins = plugins ++ (configure.plugins or []);
in
symlinkJoin {
name = "kakoune-${kakoune.version}";
buildInputs = [ makeWrapper ];
paths = [ kakoune ] ++ requestedPlugins;
postBuild = ''
# location of kak binary is used to find ../share/kak/autoload,
# unless explicitly overriden with KAKOUNE_RUNTIME
rm "$out/bin/kak"
makeWrapper "${kakoune}/bin/kak" "$out/bin/kak" --set KAKOUNE_RUNTIME "$out/share/kak"
# 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"
'';
meta = kakoune.meta // { priority = (kakoune.meta.priority or 0) - 1; };
}