Estimated Time:less than a minute

    Easy neovim with nix

    In this post, I will show how to maintain a neovim configuration with the nix package manager. Nix can be installed on any linux distribution with a single sudo bash script.

    One of the good point is it ease the way to install and configure softwares: below is an example on how to install neomutt and several vim packages. In case a package does not yet exists or is not up-to-date, the nixpkgs github repository is the place to make pull requests.

    In case the merge is accepted, the nix unstable channel will get the modification few hours later, and any body is able to install the package.

    Nix is well documented and the community looks extraordinary active. However the syntax and what happens behind the scene is for now a source of curiosity for me: I have not yet switch to nixos, and only be using the nix manager on few servers.

    Still some packages are bogus, but things looks moving fast and I such active community makes the invest confident.

    # .config/nixpkgs/config.nix
      packageOverrides = pkgs: with pkgs; rec {
        myNeovim = neovim.override {
            vimAlias = true;
          configure = {
            customRC = ''
        colo murphy
        set number
        set encoding=utf-8
        au FileType python setlocal formatprg=autopep8\ -
        function! DoPrettyXML()
          let l:origft = &ft
          set ft=
          1s/<?xml .*?>//e
          0put ='<PrettyXML>'
          $put ='</PrettyXML>'
          silent %!xmllint --format -
          exe "set ft=" . l:origft
        command! PrettyXML call DoPrettyXML()
            packages.myVimPackage = with pkgs.vimPlugins; {
              start = [ 
              opt = [ ];
        myPackages = pkgs.buildEnv {
          name = "myPackages";
          paths = [
    # it is possible to refresh the channels 
    nix-channel --update
    # it is possible to install an apply both vimrc/packages from this command:
    nix-env -i myPackages
    # it is possible to remove this by doing
    nix-env -e myPackages

    React ?

    This page was last modified: