kakoune: add support for plugins

The kakoune editor has a plugin mechanism and several plugins are
already packaged under `pkgs.kakounePlugins`. However, adding these
packages to `home.packages` is not enough: the `kakoune` package needs
to be configured with the list of plugins to include, so that they get
sourced on start-up.

We add a `programs.kakoune.plugins` option, analogous to
`programs.vim.plugins`.

The change is backwards compatible since `pkgs.kakoune` is defined as

    wrapKakoune kakoune-unwrapped { };

and `wrapKakoune` defaults the list of plugins to empty.

PR #1356
This commit is contained in:
Daniel Gorin 2020-06-24 10:35:17 +01:00 committed by Robert Helgesson
parent 3886f8db33
commit 96e2f1bdf0
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
4 changed files with 49 additions and 1 deletions

View file

@ -489,6 +489,10 @@ let
};
};
kakouneWithPlugins = pkgs.wrapKakoune pkgs.kakoune-unwrapped {
configure = { plugins = cfg.plugins; };
};
configFile = let
wrapOptions = with cfg.config.wrapLines;
concatStrings [
@ -634,11 +638,22 @@ in {
<filename>~/.config/kak/kakrc</filename>.
'';
};
plugins = mkOption {
type = with types; listOf package;
default = [ ];
example = literalExample "[ pkgs.kakounePlugins.kak-fzf ]";
description = ''
List of kakoune plugins to install. To get a list of
supported plugins run:
<command>nix-env -f '&lt;nixpkgs&gt;' -qaP -A kakounePlugins</command>.
'';
};
};
};
config = mkIf cfg.enable {
home.packages = [ pkgs.kakoune ];
home.packages = [ kakouneWithPlugins ];
xdg.configFile."kak/kakrc".source = configFile;
};
}