about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/editors/kakoune/wrapper.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/editors/kakoune/wrapper.nix')
-rw-r--r--nixpkgs/pkgs/applications/editors/kakoune/wrapper.nix31
1 files changed, 31 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/editors/kakoune/wrapper.nix b/nixpkgs/pkgs/applications/editors/kakoune/wrapper.nix
new file mode 100644
index 000000000000..451507885ce0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/kakoune/wrapper.nix
@@ -0,0 +1,31 @@
+{ 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}";
+
+    nativeBuildInputs = [ 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; };
+  }