{ pkgs, ... }: { programs = { neovim = { enable = true; defaultEditor = true; vimAlias = true; extraPackages = with pkgs; [ nodePackages_latest.nodejs ]; plugins = with pkgs.vimPlugins; [ catppuccin-nvim cmp-buffer cmp-cmdline cmp-nvim-lsp cmp_luasnip copilot-cmp copilot-lua lsp-zero-nvim lualine-nvim luasnip nvim-cmp nvim-lspconfig plenary-nvim telescope-nvim undotree vim-floaterm vim-fugitive vim-sleuth (nvim-treesitter.withPlugins (p: [ p.tree-sitter-yaml p.tree-sitter-nix p.tree-sitter-go p.tree-sitter-lua p.tree-sitter-vim p.tree-sitter-bash p.tree-sitter-json p.tree-sitter-python p.tree-sitter-c p.tree-sitter-cmake p.tree-sitter-cpp p.tree-sitter-markdown p.tree-sitter-markdown-inline ])) ]; initLua = '' ${builtins.readFile ./plugins.lua} ${builtins.readFile ./options.lua} ${builtins.readFile ./keybinds.lua} ''; }; }; home.packages = with pkgs; [ # nix stuff nixfmt statix # LSPs gopls pyright nodePackages.typescript-language-server nodePackages.typescript nil yaml-language-server lua-language-server clang-tools zls ruff ]; home.sessionVariables.EDITOR = "nvim"; }