2017-11-02 18:34:42 +01:00
|
|
|
{ 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.
|
|
|
|
'';
|
|
|
|
};
|
2018-01-31 09:14:01 +01:00
|
|
|
|
|
|
|
configure = mkOption {
|
|
|
|
type = types.nullOr types.attrs;
|
|
|
|
default = null;
|
|
|
|
example = literalExample ''
|
|
|
|
configure = {
|
|
|
|
customRC = $''''
|
|
|
|
" here your custom configuration goes!
|
|
|
|
$'''';
|
|
|
|
packages.myVimPackage = with pkgs.vimPlugins; {
|
|
|
|
# loaded on launch
|
|
|
|
start = [ fugitive ];
|
|
|
|
# manually loadable by calling `:packadd $plugin-name`
|
|
|
|
opt = [ ];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
'';
|
|
|
|
description = ''
|
|
|
|
Generate your init file from your list of plugins and custom commands,
|
|
|
|
and loads it from the store via <command>nvim -u /nix/store/hash-vimrc</command>
|
|
|
|
'';
|
|
|
|
};
|
2017-11-02 18:34:42 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
home.packages = [
|
|
|
|
(pkgs.neovim.override {
|
|
|
|
inherit (cfg)
|
|
|
|
extraPython3Packages withPython3
|
|
|
|
extraPythonPackages withPython
|
2018-01-31 09:14:01 +01:00
|
|
|
withRuby configure;
|
2017-11-02 18:34:42 +01:00
|
|
|
})
|
|
|
|
];
|
|
|
|
};
|
|
|
|
}
|