diff --git a/modules/programs/neovim.nix b/modules/programs/neovim.nix
index 6aaa3980a..dadda2c71 100644
--- a/modules/programs/neovim.nix
+++ b/modules/programs/neovim.nix
@@ -24,6 +24,14 @@ let
merge = mergeOneOption;
};
+ moduleConfigure =
+ optionalAttrs (cfg.extraConfig != "") {
+ customRC = cfg.extraConfig;
+ }
+ // optionalAttrs (cfg.plugins != []) {
+ packages.home-manager.start = cfg.plugins;
+ };
+
in
{
@@ -137,19 +145,68 @@ in
description = ''
Generate your init file from your list of plugins and custom commands,
and loads it from the store via nvim -u /nix/store/hash-vimrc
+
+
+
+ This option is deprecated. Please use the options extraConfig
+ and plugins which are mutually exclusive with this option.
+ '';
+ };
+
+ extraConfig = mkOption {
+ type = types.lines;
+ default = "";
+ example = ''
+ set nocompatible
+ set nobackup
+ '';
+ description = ''
+ Custom vimrc lines.
+
+
+
+ This option is mutually exclusive with configure.
+ '';
+ };
+
+ plugins = mkOption {
+ type = with types; listOf package;
+ default = [ ];
+ example = literalExample "[ pkgs.vimPlugins.yankring ]";
+ description = ''
+ List of vim plugins to install.
+
+
+
+ This option is mutually exclusive with configure.
'';
};
};
};
config = mkIf cfg.enable {
+ assertions = [
+ {
+ assertion = cfg.configure == { } || moduleConfigure == { };
+ message = "The programs.neovim option configure is mutually exclusive"
+ + " with extraConfig and plugins.";
+ }
+ ];
+
+ warnings = optional (cfg.configure != {}) ''
+ The programs.neovim.configure option is deprecated. Please use
+ extraConfig and package option.
+ '';
+
home.packages = [ cfg.finalPackage ];
programs.neovim.finalPackage = pkgs.wrapNeovim cfg.package {
inherit (cfg)
extraPython3Packages withPython3
extraPythonPackages withPython
- withNodeJs withRuby viAlias vimAlias configure;
+ withNodeJs withRuby viAlias vimAlias;
+
+ configure = cfg.configure // moduleConfigure;
};
};
}