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
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
.