{ inputs, pkgs, lib, ... }: { imports = [inputs.nvf.homeManagerModules.default]; programs.nvf = { enable = true; settings.vim = { viAlias = true; vimAlias = true; enableLuaLoader = true; preventJunkFiles = true; tabWidth = 4; autoIndent = false; useSystemClipboard = true; luaConfigPost = lib.concatStrings [ '' vim.opt.formatoptions:remove('c') vim.opt.formatoptions:remove('r') vim.opt.formatoptions:remove('o') '' ]; maps = { normal = { "m" = { silent = true; action = "make"; }; # Same as nnoremap m make "t" = { silent = true; action = "Neotree toggle"; }; }; }; theme = { enable = true; name = "catppuccin"; style = "frappe"; }; visuals = { enable = true; nvimWebDevicons.enable = true; }; ui = { noice.enable = true; }; notify.nvim-notify.enable = true; statusline.lualine = { enable = true; theme = "catppuccin"; }; git.enable = true; lsp = { enable = true; lspSignature.enable = true; lspconfig.enable = true; formatOnSave = true; mappings = { addWorkspaceFolder = "wa"; codeAction = "a"; goToDeclaration = "gD"; goToDefinition = "gd"; hover = "K"; listImplementations = "gi"; listReferences = "gr"; listWorkspaceFolders = "wl"; nextDiagnostic = "k"; previousDiagnostic = "j"; openDiagnosticFloat = "e"; removeWorkspaceFolder = "wr"; renameSymbol = "r"; signatureHelp = ""; }; }; autocomplete = { enable = true; alwaysComplete = true; }; autopairs.enable = true; languages = { enableExtraDiagnostics = true; enableFormat = true; enableLSP = true; enableTreesitter = true; nix.enable = true; clang.enable = true; python.enable = true; ts.enable = true; }; treesitter = { enable = true; fold = true; context.enable = true; grammars = [ pkgs.vimPlugins.nvim-treesitter.builtGrammars.nix pkgs.vimPlugins.nvim-treesitter.builtGrammars.c pkgs.vimPlugins.nvim-treesitter.builtGrammars.python ]; }; binds.whichKey.enable = true; filetree.neo-tree.enable = true; telescope.enable = true; }; }; }