{ user, home }: { inputs, lib, pkgs, ... }: { environment.persistence = { "/persist/state"."${home}/.local/share/nvf" = { }; "/persist/cache"."${home}/.cache/nvf" = { }; }; home-manager.users.${user} = { imports = [ inputs.nvf.homeManagerModules.default ]; programs = { nvf = { enable = true; defaultEditor = true; settings = { vim = { enableLuaLoader = true; viAlias = true; vimAlias = true; autocomplete = { blink-cmp = { enable = true; setupOpts = { signature.enabled = true; }; }; }; binds = { whichKey.enable = true; }; clipboard = { enable = true; providers.wl-copy.enable = true; registers = "unnamedplus"; }; comments = { comment-nvim.enable = true; }; dashboard = { alpha.enable = true; }; diagnostics = { enable = true; config = { virtual_text = true; signs = true; }; }; git = { enable = true; git-conflict.enable = true; gitsigns.enable = true; vim-fugitive.enable = true; }; languages = { enableDAP = true; enableFormat = true; enableTreesitter = true; enableExtraDiagnostics = true; assembly.enable = true; bash.enable = true; clang.enable = true; csharp.enable = true; css.enable = true; go.enable = true; html.enable = true; java.enable = true; lua.enable = true; markdown.enable = true; nix = { enable = true; format.type = "nixfmt"; lsp.options.nil = { nix = { maxMemoryMB = null; flake = { autoArchive = true; autoEvalInputs = true; }; }; }; }; php.enable = true; python.enable = true; rust.enable = true; sql.enable = true; svelte.enable = true; ts.enable = true; yaml.enable = true; }; lsp = { enable = true; formatOnSave = true; otter-nvim = { enable = true; setupOpts.handle_leading_whitespace = true; }; }; notify = { nvim-notify.enable = true; }; options = { tabstop = 2; shiftwidth = 2; expandtab = true; smartindent = true; }; searchCase = "smart"; tabline = { nvimBufferline = { enable = true; mappings.closeCurrent = "bd"; setupOpts.options = { indicator.style = "icon"; show_close_icon = false; show_buffer_close_icons = false; }; }; }; telescope = { enable = true; setupOpts.defaults = { wrap_results = true; file_ignore_patterns = [ "node_modules" "%.venv/" "%.git/" "dist/" "build/" "target/" "result/" ]; }; }; terminal = { toggleterm = { enable = true; lazygit.enable = true; setupOpts.winbar.enabled = false; }; }; treesitter = { enable = true; context.enable = true; fold = true; textobjects.enable = true; }; ui = { colorizer.enable = true; illuminate.enable = true; }; undoFile.enable = true; utility = { images = { img-clip = { enable = true; setupOpts.default.verbose = false; }; }; mkdir.enable = true; motion = { precognition.enable = true; }; surround.enable = true; undotree.enable = true; yazi-nvim = { enable = true; setupOpts.open_for_directories = true; }; }; visuals = { highlight-undo = { enable = true; setupOpts.duration = 250; }; indent-blankline.enable = true; nvim-cursorline.enable = true; nvim-scrollbar.enable = true; nvim-web-devicons.enable = true; }; keymaps = [ { mode = [ "n" ]; key = ""; action = "zz"; silent = true; noremap = true; desc = "Page up and center"; } { mode = [ "n" ]; key = ""; action = "zz"; silent = true; noremap = true; desc = "Half-page up and center"; } { mode = [ "n" ]; key = ""; action = "zz"; silent = true; noremap = true; desc = "Half-page down and center"; } { mode = [ "n" ]; key = ""; action = "zz"; silent = true; noremap = true; desc = "Page down and center"; } { mode = [ "n" ]; key = "ww"; action = "w"; silent = true; desc = "Save"; } { mode = [ "n" ]; key = "wq"; action = "wq"; silent = true; desc = "Save & Quit"; } { mode = [ "n" ]; key = "be"; action = "enew"; silent = true; desc = "New buffer"; } ]; }; }; }; zsh = { p10k.extraRightPromptElements = [ "vim_shell" ]; shellAliases.v = "nvim"; }; }; }; }