pkgs: { opts = { number = true; relativenumber = true; shiftwidth = 2; tabstop = 2; scrolloff = 999; textwidth = 83; linebreak = true; completeopt = ["menu" "menuone" "noselect"]; }; keymaps = [ { mode = ["n" "i" "t"]; key = "<A-h>"; action = ''<C-\><C-N><C-w>h''; } { mode = ["n" "i" "t"]; key = "<A-j>"; action = ''<C-\><C-N><C-w>j''; } { mode = ["n" "i" "t"]; key = "<A-k>"; action = ''<C-\><C-N><C-w>k''; } { mode = ["n" "i" "t"]; key = "<A-l>"; action = ''<C-\><C-N><C-w>l''; } { key = "<A-t>"; action = ":Neotree float reveal_force_cwd<cr>"; } { key = "<A-b>"; action = ":Neotree float buffers<cr>"; } { key = "<A-s>"; action = ":Neotree float git_status<cr>"; } ]; extraPlugins = with pkgs.vimPlugins; [ vim-airline-themes ]; plugins = { airline = { enable = true; settings = { powerline_fonts = true; }; }; cmp = { enable = true; autoEnableSources = true; settings = { snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end"; mappings = { "<C-Space>" = "cmp.mapping.complete()"; "<C-d>" = "cmp.mapping.scroll_docs(-4)"; "<C-e>" = "cmp.mapping.close()"; "<C-f>" = "cmp.mapping.scroll_docs(4)"; "<CR>" = "cmp.mapping.confirm({ select = true })"; "<S-Tab>" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})"; "<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; }; sources = [ {name = "luasnip";} {name = "nvim_lsp";} {name = "path";} { name = "buffer"; option.get_bufnrs.__raw = "vim.api.nvim_list_bufs"; } {name = "git";} {name = "conventionalcommits";} ]; }; }; cmp-path.enable = true; coq-nvim = { enable = false; settings = { auto_start = "shut-up"; }; installArtifacts = true; }; dashboard = { enable = true; }; lsp = { enable = true; servers = { nil_ls.enable = true; rust-analyzer = { enable = true; installCargo = true; installRustc = true; }; ltex.enable = true; java-language-server.enable = true; }; }; lspkind = { enable = true; cmp = { enable = true; menu = { nvim_lsp = "[LSP]"; nvim_lua = "[api]"; path = "[path]"; luasnip = "[snip]"; buffer = "[buffer]"; neorg = "[neorg]"; }; }; }; lsp-format = { enable = true; }; luasnip.enable = true; quickmath.enable = true; treesitter = { enable = true; indent = true; }; treesitter-context = { enable = true; }; treesitter-refactor = { enable = true; }; mini = { enable = true; }; markdown-preview = { enable = true; }; nix = { enable = true; }; neo-tree = { enable = true; autoCleanAfterSessionRestore = true; closeIfLastWindow = true; }; nvim-autopairs = { enable = true; }; vim-css-color = { enable = true; }; vimtex = { enable = true; }; }; }