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

can be loaded with packadd!
wip/yesman
Matthieu Coudron 4 years ago committed by GitHub
parent e6a58a7e71
commit 9d775bad07
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 24
      modules/programs/neovim.nix

@ -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}"'';

Loading…
Cancel
Save