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