{ inputs, pkgs, ... }: { programs.neovim = let toLua = str: "lua << EOF\n${str}\nEOF\n"; toLuaFile = file: "lua << EOF\n${builtins.readFile file}\nEOF\n"; in { enable = true; viAlias = true; vimAlias = true; vimdiffAlias = true; defaultEditor = true; plugins = with pkgs.vimPlugins; [ # Colorschemes { plugin = catppuccin-nvim; config = toLuaFile ./plugins/colorschemes/catppuccin.lua; } # LSP { plugin = nvim-lspconfig; config = toLuaFile ./plugins/lsp.lua; } cmp-buffer cmp-cmdline cmp-nvim-lsp cmp-nvim-lua cmp-path cmp_luasnip luasnip nvim-cmp # The rest { plugin = indent-blankline-nvim; config = toLuaFile ./plugins/indent.lua; } { plugin = nvim-ts-autotag; config = toLuaFile ./plugins/autotag.lua; } { plugin = nvim-colorizer-lua; config = toLuaFile ./plugins/colorizer.lua; } ]; extraLuaConfig = '' vim.cmd("runtime! core/*.lua") ''; extraPackages = with pkgs; [ lua-language-server nodePackages_latest.vscode-langservers-extracted nixd ]; }; }