/
kakoune.nix
67 lines (61 loc) · 1.85 KB
/
kakoune.nix
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
{ pkgs, lib, ... }:
with lib; {
mkPlugin = attrs:
pkgs.stdenv.mkDerivation {
name = attrs.name;
src = attrs.src;
installPhase = ''
mkdir -p $out/share/kak/autoload
cp -R . $out/share/kak/autoload/${attrs.name}
'';
};
mkPlugins = plugins:
pkgs.stdenv.mkDerivation {
name = "kakoune-plugins";
srcs = ./kakoune;
buildInputs = plugins;
buildPhase = ''
mkdir autoload
for derivation in ${concatStrings (intersperse " " plugins)}; do
for plugin in $(find $derivation/share/kak/autoload -mindepth 1 -maxdepth 1); do
ln -s $plugin autoload/$(basename $plugin)
done
done
# if this directory is linked in `<rtpath>/share/autoload`, Kakoune
# will ignore the built-in autoloads. We can get around this by
# linking those autoloads into our output.
ln -s ${pkgs.kakoune-unwrapped}/share/kak/autoload autoload/builtin
'';
installPhase = ''
mkdir -p $out/share/kak
mv autoload $out/share/kak/autoload
'';
};
mkColorPlugin = attrs:
pkgs.stdenv.mkDerivation {
name = attrs.name;
src = attrs.src;
installPhase = ''
mkdir -p $out/share/kak/colors
cp -R . $out/share/kak/colors/${attrs.name}
'';
};
mkColors = plugins:
pkgs.stdenv.mkDerivation {
name = "kakoune-plugins";
srcs = ./kakoune;
buildInputs = plugins;
buildPhase = ''
mkdir colors
for derivation in ${concatStrings (intersperse " " plugins)}; do
for plugin in $(find $derivation/share/kak/colors -mindepth 1 -maxdepth 1); do
ln -s $plugin colors/$(basename $plugin)
done
done
'';
installPhase = ''
mkdir -p $out/share/kak
mv colors $out/share/kak/colors
'';
};
}