aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/applications/editors/kakoune/wrapper.nix
blob: 7ac56d9cb1e0c4ca7e4d896f02deec4af68b1bd2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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}";

    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; };
  }