diff --git a/modules/default.nix b/modules/default.nix index f82cfdbbc..7c67887cb 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -35,6 +35,7 @@ let ./programs/info.nix ./programs/lesspipe.nix ./programs/man.nix + ./programs/neovim.nix ./programs/rofi.nix ./programs/ssh.nix ./programs/termite.nix diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 44b9d7f59..b177d6ce4 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -442,6 +442,12 @@ in December 6, 2017. ''; } + { + time = "2017-11-12T00:18:59+00:00"; + message = '' + A new program module is available: 'programs.neovim'. + ''; + } ]; }; } diff --git a/modules/programs/neovim.nix b/modules/programs/neovim.nix new file mode 100644 index 000000000..8e0663f60 --- /dev/null +++ b/modules/programs/neovim.nix @@ -0,0 +1,74 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.programs.neovim; + +in + +{ + options = { + programs.neovim = { + enable = mkEnableOption "Neovim"; + + withPython = mkOption { + type = types.bool; + default = true; + description = '' + Enable Python 2 provider. Set to <literal>true</literal> to + use Python 2 plugins. + ''; + }; + + extraPythonPackages = mkOption { + type = types.listOf types.package; + default = [ ]; + example = literalExample "with pkgs.python2Packages; [ pandas jedi ]"; + description = '' + List here Python 2 packages required for your plugins to + work. + ''; + }; + + withRuby = mkOption { + type = types.nullOr types.bool; + default = true; + description = '' + Enable ruby provider. + ''; + }; + + withPython3 = mkOption { + type = types.bool; + default = true; + description = '' + Enable Python 3 provider. Set to <literal>true</literal> to + use Python 3 plugins. + ''; + }; + + extraPython3Packages = mkOption { + type = types.listOf types.package; + default = [ ]; + example = literalExample + "with pkgs.python3Packages; [ python-language-server ]"; + description = '' + List here Python 3 packages required for your plugins to work. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + home.packages = [ + (pkgs.neovim.override { + inherit (cfg) + extraPython3Packages withPython3 + extraPythonPackages withPython + withRuby; + }) + ]; + }; +}