{ inputs, pkgs, ... }: { imports = [ inputs.nixvim.homeManagerModules.nixvim ]; programs.nixvim = { enable = true; opts = { number = true; }; colorschemes.tokyonight.enable = true; autoCmd = [ { event = "VimEnter"; command = "Neotree"; } ]; keymaps = [ # Simple save Ctrl + S { action = "w"; key = ""; options.silent = true; } # Vsplit { action = "vsplit"; key = ""; options.silent = true; } # [H]split { action = "split"; key = ""; options.silent = true; } # Toggleterm Ctrl + ` { action = "ToggleTerm"; key = ""; options.silent = true; } ]; plugins = { neo-tree = { enable = true; closeIfLastWindow = true; buffers.followCurrentFile.leaveDirsOpen = true; }; lightline.enable = true; toggleterm.enable = true; rainbow-delimiters.enable = true; treesitter.enable = true; barbar.enable = true; gitgutter.enable = true; persistence.enable = true; cmp.enable = true; cmp-nvim-lsp.enable = true; cmp_luasnip.enable = true; luasnip.enable = true; lsp = { enable = true; servers = { nil_ls.enable = true; rust-analyzer.enable = true; rust-analyzer.installRustc = false; # use rustc in nix shells, maybe? rust-analyzer.installCargo = false; tsserver.enable = true; htmx.enable = true; html.enable = true; }; }; }; extraPlugins = with pkgs.vimPlugins; [ vim-sleuth ]; }; }