{ 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; } # HTML # TODO: enable this when treesitter is installed # { # plugin = nvim-ts-autotag; # config = toLuaFile ./plugins/autotag.lua; # } { plugin = nvim-colorizer-lua; config = toLuaFile ./plugins/colorizer.lua; } # GIT { plugin = gitsigns-nvim; config = toLuaFile ./plugins/gitsigns.lua } vim-fugitive ]; extraLuaConfig = '' ${builtins.readFile ./core/colors.lua} ${builtins.readFile ./core/options.lua} ''; extraPackages = with pkgs; [ lua-language-server nodePackages_latest.vscode-langservers-extracted nixd ]; }; }