{ config, pkgs, lib, ... }: { programs.neovim = { enable = true; defaultEditor = true; extraLuaConfig = '' ${builtins.readFile ./config.lua} ''; extraPackages = with pkgs; [ nodePackages_latest.typescript-language-server vscode-langservers-extracted gopls nil ]; plugins = with pkgs.vimPlugins; [ vim-surround vim-commentary { plugin = telescope-nvim; type = "lua"; config = '' local builtin = require('telescope.builtin') vim.keymap.set('n', 'ff', builtin.find_files, {}) vim.keymap.set('n', 'fg', builtin.live_grep, {}) vim.keymap.set('n', 'fb', builtin.buffers, {}) vim.keymap.set('n', 'fh', builtin.help_tags, {}) ''; } { plugin = nvim-lspconfig; type = "lua"; config = builtins.readFile ./lspconfig.lua; } firenvim ]; }; programs.vscode = { extensions = [ pkgs.vscode-extensions.asvetliakov.vscode-neovim ]; userSettings = { "vscode-neovim.neovimExecutablePaths.linux" = "${pkgs.neovim}/bin/nvim"; "extensions.experimental.affinity" = { "asvetliakov.vscode-neovim" = 1; }; }; }; }