{ config, lib, nixosConfig, pkgs, ... }: let rainbow_csv = pkgs.unstable.vimUtils.buildVimPluginFrom2Nix rec { name = "rainbow_csv"; src = pkgs.fetchFromGitHub { owner = "mechatroner"; repo = name; rev = "df89266d6c03479def77793fd7a0a651986865a5"; sha256 = "0c9b1r49vw6r3yhm6g02janyxw6d9j6bkjmv8zpdav46avmk74fh"; }; meta.license = lib.licenses.mit; }; vim-openscad = pkgs.unstable.vimUtils.buildVimPluginFrom2Nix rec { name = "vim-openscad"; src = pkgs.fetchFromGitHub { owner = "sirtaj"; repo = name; rev = "81db508b1888fdbea994d43ccef1acd86c8af3f7"; sha256 = "1wcdfayjpb9h0lzwdi5nda4c0ch263fdr0379l9k1gf47bgq9cx2"; }; meta.license = lib.licenses.publicDomain; }; Vim-Jinja2-Syntax = pkgs.unstable.vimUtils.buildVimPluginFrom2Nix rec { name = "Vim-Jinja2-Syntax"; src = pkgs.fetchFromGitHub { owner = "Glench"; repo = name; rev = "5d2496eb5fd4415c7ce062ccbcd53a3f0de93aa3"; sha256 = "1ss065b2psalli46bs3v13fhaplqydh13bg3jg3zr98wbdn70cws"; }; meta.license = lib.licenses.bsd3; }; in { programs.neovim = { enable = true; package = pkgs.unstable.neovim-unwrapped; vimAlias = true; extraConfig = '' lua require('init') ''; extraPackages = with pkgs; [ unzip # zip.vim ] ++ (lib.optionals nixosConfig.sbruder.full [ gopls haskell-language-server rnix-lsp rust-analyzer # very ugly, but required to make non-yapf/autopep8 formatters work ((unstable.python3.override { packageOverrides = _: prev: { python-lsp-server = prev.python-lsp-server.override { withAutopep8 = false; withYapf = false; }; }; }).withPackages (ps: with ps; [ pyls-isort pylsp-mypy python-lsp-black python-lsp-server ])) ]); plugins = with pkgs.unstable.vimPlugins; [ Vim-Jinja2-Syntax cmp-buffer cmp-nvim-lsp cmp-path cmp_luasnip diffview-nvim editorconfig-nvim friendly-snippets gitsigns-nvim lspkind-nvim lualine-lsp-progress lualine-nvim luasnip neogit nvim-cmp nvim-lspconfig nvim-solarized-lua nvim-web-devicons plenary-nvim rainbow_csv rust-vim tagbar telescope-nvim trouble-nvim vim-fugitive vim-markdown vim-nix vim-openscad vim-snippets vim-toml vimtex which-key-nvim ]; }; xdg.configFile = { "nvim/lua/init.lua".source = ./init.lua; "nvim/lua/snippets.lua".source = pkgs.callPackage ./snippets.nix { }; }; home.sessionVariables.EDITOR = "nvim"; }