{ pkgs, ... }: { programs.neovim = { enable = true; plugins = [ { plugin = pkgs.vimPlugins.airline; # config = "let g:airline#extensions#tabline#left_alt_sep = '>'"; } pkgs.vimPlugins.vim-airline-themes { plugin = pkgs.vimPlugins.nightfox-nvim; config = "colorscheme nightfox"; } { plugin = pkgs.vimPlugins.nvim-lspconfig; type = "lua"; config = '' local lspconfig = require('lspconfig') local capabilities = require("cmp_nvim_lsp").default_capabilities() lspconfig.pylsp.setup {capabilities=capabilities} lspconfig.nil_ls.setup {capabilities=capabilities} lspconfig.rust_analyzer.setup {capabilities=capabilities} lspconfig.texlab.setup {capabilities=capabilities} ''; } pkgs.vimPlugins.nvim-treesitter.withAllGrammars pkgs.vimPlugins.plenary-nvim pkgs.vimPlugins.mini-nvim pkgs.vimPlugins.telescope-nvim pkgs.vimPlugins.gitsigns-nvim pkgs.vimPlugins.nvim-tree-lua # completion pkgs.vimPlugins.nvim-cmp { plugin = pkgs.vimPlugins.cmp-nvim-lsp; type = "lua"; config = '' local cmp = require("cmp") cmp.setup({ mapping = cmp.mapping.preset.insert({ [""] = cmp.mapping.scroll_docs(-4), [""] = cmp.mapping.scroll_docs(4), [""] = cmp.mapping.complete(), [""] = cmp.mapping.abort(), [""] = cmp.mapping.confirm({ select = true }), }), sources = cmp.config.sources({ { name = "nvim_lsp" }, { name = "buffer" } }) }) ''; } # pkgs.vimPlugins.fugitive # pkgs.vimPlugins.surround # { # plugin = pkgs.vimPlugins.vim-airline-themes; # config = "let g:airline_theme='nightfox'"; # } ]; # settings = { ignorecase = true; }; coc.enable = true; viAlias = true; vimAlias = true; vimdiffAlias = true; extraConfig = '' set mouse=a ''; }; }