{ pkgs, ... }: { programs.neovim = { enable = true; plugins = with pkgs.vimPlugins; [ catppuccin-nvim tokyonight-nvim nvim-lspconfig nvim-cmp cmp-nvim-lsp cmp-buffer cmp-path plenary-nvim telescope-nvim (nvim-treesitter.withAllGrammars) vim-nix ]; extraLuaConfig = '' vim.cmd("colorscheme catppuccin-mocha") -- Basic settings vim.o.number = true vim.o.relativenumber = true -- ========================= -- LSP (Neovim 0.11+ way) -- ========================= -- Add cmp capabilities local capabilities = require("cmp_nvim_lsp").default_capabilities() vim.lsp.config("nil_ls", { capabilities = capabilities, }) vim.lsp.enable("nil_ls") -- ========================= -- nvim-cmp -- ========================= local cmp = require("cmp") cmp.setup({ mapping = cmp.mapping.preset.insert({ [""] = cmp.mapping.complete(), [""] = cmp.mapping.confirm({ select = true }), }), sources = { { name = "nvim_lsp" }, { name = "buffer" }, { name = "path" }, } }) -- ========================= -- Telescope -- ========================= local builtin = require("telescope.builtin") vim.keymap.set("n", "ff", builtin.find_files, {}) vim.keymap.set("n", "fg", builtin.live_grep, {}) ''; }; }