Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 19 additions & 7 deletions modules/programs/neovim.nix
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,21 @@ let
'' else
"";

allPlugins = cfg.plugins ++ optional cfg.coc.enable {
type = "viml";
plugin = pkgs.vimPlugins.coc-nvim;
config = cfg.coc.pluginConfig;
optional = false;
};

moduleConfigure = {
packages.home-manager = {
start = remove null (map
(x: if x ? plugin && x.optional == true then null else (x.plugin or x))
cfg.plugins);
allPlugins);
opt = remove null
(map (x: if x ? plugin && x.optional == true then x.plugin else null)
cfg.plugins);
allPlugins);
};
beforePlugins = "";
};
Expand Down Expand Up @@ -328,6 +335,12 @@ in {
for options.
'';
};

pluginConfig = mkOption {
type = types.lines;
default = "";
description = "Script to configure CoC. Must be viml.";
};
};
};
};
Expand All @@ -342,16 +355,15 @@ in {
plugin = x;
config = "";
optional = false;
}) cfg.plugins;
}) allPlugins;
suppressNotVimlConfig = p:
if p.type != "viml" then p // { config = ""; } else p;

neovimConfig = pkgs.neovimUtils.makeNeovimConfig {
inherit (cfg)
extraPython3Packages withPython3 withNodeJs withRuby viAlias vimAlias;
inherit (cfg) extraPython3Packages withPython3 withRuby viAlias vimAlias;
withNodeJs = cfg.withNodeJs or cfg.coc.enable;
configure = cfg.configure // moduleConfigure;
plugins = (map suppressNotVimlConfig pluginsNormalized)
++ optionals cfg.coc.enable [{ plugin = pkgs.vimPlugins.coc-nvim; }];
plugins = map suppressNotVimlConfig pluginsNormalized;
customRC = cfg.extraConfig;
};

Expand Down