{ user, home }: { inputs, ... }: { 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; # enableSharedCmpSources = true; # }; binds = { hardtime-nvim.enable = true; whichKey.enable = true; }; clipboard = { enable = true; providers.wl-copy.enable = true; registers = "unnamedplus"; }; comments = { comment-nvim.enable = true; }; # dashboard = { # alpha.enable = true; # }; filetree = { neo-tree = { enable = true; setupOpts = { git_status_async = true; filesystem = { position = "current"; hijack_netrw_behavior = "open_current"; }; }; }; }; # formatter = { # conform-nvim.enable = true; # }; git = { enable = true; # git-conflict.enable = true; gitsigns.enable = true; # neogit.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"; }; 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; # nvim-docs-view.enable = true; # otter-nvim.enable = true; # trouble.enable = true; }; # minimap = { # codewindow.enable = true; # }; notify = { nvim-notify.enable = true; }; options = { tabstop = 2; shiftwidth = 2; expandtab = true; smartindent = true; }; # projects = { # project-nvim.enable = true; # }; searchCase = "smart"; # snippets = { # luasnip.enable = true; # }; tabline = { nvimBufferline = { enable = true; setupOpts.options = { show_close_icon = false; show_buffer_close_icons = false; }; }; }; telescope = { enable = true; }; terminal = { toggleterm = { enable = true; setupOpts.winbar.enabled = false; }; }; treesitter = { enable = true; context.enable = true; fold = true; textobjects.enable = true; }; ui = { # breadcrumbs = { # enable = true; # navbuddy.enable = true; # }; colorizer.enable = true; # fastaction.enable = true; # illuminate.enable = true; }; undoFile.enable = true; utility = { # diffview-nvim.enable = true; # icon-picker.enable = true; # images = { # img-clip.enable = true; # }; # mkdir.enable = true; motion = { precognition.enable = true; }; # multicursors.enable = true; # nvim-biscuits.enable = true; # smart-splits.enable = true; # surround.enable = true; # undotree.enable = true; # yazi-nvim.enable = true; }; visuals = { # cinnamon-nvim.enable = true; # fidget-nvim.enable = true; # highlight-undo.enable = true; 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 = "ee"; action = "Neotree toggle"; silent = true; desc = "Toggle Neo-tree"; } { mode = [ "n" ]; key = "ef"; action = "Neotree reveal"; silent = true; desc = "Reveal file in Neo-tree"; } ]; }; }; }; zsh.p10k.extraRightPromptElements = [ "vim_shell" ]; }; }; }