neovim: mark plugins as optional (possibly) (#1559)

can be loaded with packadd!
This commit is contained in:
Matthieu Coudron 2020-12-10 22:30:16 +01:00 committed by GitHub
parent e6a58a7e71
commit 9d775bad07
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -24,15 +24,20 @@ let
pluginWithConfigType = types.submodule {
options = {
plugin = mkOption {
type = types.package;
description = "vim plugin";
};
config = mkOption {
type = types.lines;
description = "vimscript for this plugin to be placed in init.vim";
default = "";
};
optional = mkEnableOption "optional" // {
description = "Don't load by default (load with :packadd)";
};
plugin = mkOption {
type = types.package;
description = "vim plugin";
};
};
};
@ -49,8 +54,15 @@ let
|| (lib.filter (hasAttr "config") cfg.plugins) != [ ]) {
customRC = cfg.extraConfig
+ pkgs.lib.concatMapStrings pluginConfig cfg.plugins;
} // optionalAttrs (cfg.plugins != [ ]) {
packages.home-manager.start = map (x: x.plugin or x) cfg.plugins;
packages.home-manager = {
start = filter (f: f != null) (map (x:
if x ? plugin && x.optional == true then null else (x.plugin or x))
cfg.plugins);
opt = filter (f: f != null)
(map (x: if x ? plugin && x.optional == true then x.plugin else null)
cfg.plugins);
};
};
extraMakeWrapperArgs = lib.optionalString (cfg.extraPackages != [ ])
''--prefix PATH : "${lib.makeBinPath cfg.extraPackages}"'';