{ pkgs, ... }: { environment.variables.EDITOR = pkgs.lib.mkForce "nvim"; environment.shellAliases.vi = "nvim"; environment.shellAliases.vim = "nvim"; environment.shellAliases.view = "nvim -R"; nixpkgs.config.packageOverrides = pkgs: { vimPlugins = pkgs.vimPlugins // { cheat-sh-vim = pkgs.callPackage { }; vim-fetch = pkgs.callPackage { }; vim-colors-paramount = pkgs.callPackage { }; vim-256noir = pkgs.callPackage { }; icalendar-vim = pkgs.callPackage { }; jq-vim = pkgs.callPackage { }; vim-fsharp = pkgs.callPackage { }; vim-reason-plus = pkgs.callPackage { }; vim-mail = pkgs.callPackage { }; }; }; environment.systemPackages = [ (pkgs.writers.writeDashBin "vim" ''neovim "$@"'') (pkgs.neovim.override { configure = { customRC = builtins.readFile ; packages.nvim = with pkgs.vimPlugins; { start = [ ale fzf-vim fzfWrapper supertab undotree tabular # vimwiki vim-colors-paramount vim-commentary vim-css-color vim-eunuch vim-fetch vim-fugitive vim-gitgutter vim-repeat vim-sensible vim-surround ]; opt = [ csv elm-vim emmet-vim haskell-vim icalendar-vim jq-vim rust-vim typescript-vim vim-javascript vim-ledger vim-nix vimtex vim-pandoc vim-pandoc-syntax vim-256noir ]; }; }; }) ]; }