Vim
Vim plugins can be installed with the help of nix. You can omit using vim plugin managers and do everything in your .nixpkgs/config
.
Examples
Using VAM as manager
You can add this to you nix configuration to get vim with custom .vimrc
and listed plugins.
vim_configurable.customize { name = "vim-with-plugins"; # add custom .vimrc lines like this: vimrcConfig.customRC = '' set hidden set colorcolumn=80 ''; vimrcConfig.vam.knownPlugins = pkgs.vimPlugins; # optional vimrcConfig.vam.pluginDictionaries = [ # load always { name = "youcompleteme"; } { names = [ "youcompleteme" "foo" ]; } # only load when opening a .php file { name = "phpCompletion"; ft_regex = "^php\$"; } { name = "phpCompletion"; filename_regex = "^.php\$"; } # provide plugin which can be loaded manually: { name = "phpCompletion"; tag = "lazy"; } ]; };
Full documentation at VAM homepage.
Using Pathogen as manager
There is a pathogen implementation as well, but its startup is slower and [VAM] has more features.
vimrcConfig.pathogen.knownPlugins = vimPlugins; # optional vimrcConfig.pathogen.pluginNames = [ "vim-addon-nix" "youcompleteme" ];
Adding new plugins
- Check https://github.com/NixOS/nixpkgs/tree/master/pkgs/misc/vim-plugins
- Add your plugin to ./vim-plugin-names
- Generate via
vim-plugin-names-to-nix
If plugin needs additional code (for example: some dependencies, extra build steps etc.) then create a pull request to vim2nix. That will helps update plugins in the future.(vim2nix 404)
Real life examples
YouCompleteMe
Currently the youcompleteme plugin uses unwrapped clang on linux. This causes it to not find stdlib.h
. There is a workaround you can put in your .ycm_extra_conf.py
file, which works by executing the C/C++ compiler and getting it to output the list of search paths - which includes the search path to find stdlib.h
.