{ nvf, pkgs, ... }: { imports = [ nvf.homeManagerModules.default ]; programs.nvf = { # enable nvf neovim distribution enable = true; # set stuff! settings = { vim = { # setting alias to _always_ use neovim viAlias = true; vimAlias = true; # useSystemClipboard = true; # setting some nvim settings that are not in nvf luaConfigPost = '' vim.opt.tabstop = 2 vim.opt.shiftwidth = 2 vim.opt.expandtab = true vim.opt.autoindent = true vim.opt.smartindent = true vim.opt.smarttab = true vim.opt.scrolloff = 20; ''; # clipboard configuration clipboard = { enable = true; providers = { wl-copy.enable = true; }; registers = "unnamed,unnamedplus"; }; # LSP configuration lsp = { enable = true; formatOnSave = true; lspkind.enable = true; lspconfig.enable = true; lightbulb.enable = false; lspsaga.enable = false; trouble.enable = false; lspSignature.enable = true; otter-nvim.enable = false; nvim-docs-view.enable = false; }; # debugger configuration debugger = { nvim-dap = { enable = true; ui.enable = true; }; }; # disable spellcheck spellcheck.enable = false; # enable diagnostics diagnostics = { enable = true; config = { underline = true; virtual_lines = true; }; }; # language specific configuartion languages = { enableFormat = true; enableTreesitter = true; enableExtraDiagnostics = true; nix = { enable = true; lsp.enable = true; treesitter.enable = true; format = { enable = true; package = pkgs.alejandra; }; extraDiagnostics = { enable = true; types = ["statix"]; }; }; markdown.enable = true; bash.enable = true; clang.enable = true; css = { enable = true; format = { enable = true; package = pkgs.prettierd; }; }; html.enable = true; sql.enable = true; java.enable = true; kotlin = { enable = true; lsp.enable = true; treesitter.enable = true; extraDiagnostics.enable = true; }; ts = { enable = true; format = { enable = true; package = pkgs.prettierd; }; }; lua.enable = false; python.enable = true; rust = { enable = true; lsp.enable = true; dap.enable = true; format.enable = true; crates.enable = true; }; csharp = { enable = true; lsp = { enable = true; server = "csharp_ls"; }; treesitter.enable = true; }; }; # statusline configuration statusline = { lualine = { enable = true; theme = "catppuccin"; }; }; # theme configuration theme = { enable = true; name = "catppuccin"; style = "mocha"; transparent = true; }; # visual/ui configuration visuals = { nvim-scrollbar.enable = false; nvim-web-devicons.enable = true; nvim-cursorline.enable = true; cinnamon-nvim.enable = true; fidget-nvim.enable = false; highlight-undo.enable = true; indent-blankline.enable = true; }; ui = { borders.enable = true; noice.enable = false; colorizer.enable = true; modes-nvim.enable = false; # the theme looks terrible with catppuccin illuminate.enable = true; breadcrumbs = { enable = true; navbuddy.enable = false; }; fastaction.enable = true; }; # autocomplete/intellisense configuration autopairs.nvim-autopairs.enable = true; autocomplete.nvim-cmp = { enable = true; sources = { nvim-lsp = "nvim_lsp"; async-path = "async_path"; }; }; # tabline configuration tabline = { nvimBufferline.enable = true; nvimBufferline.mappings = { closeCurrent = "x"; cycleNext = ""; cyclePrevious = ""; moveNext = null; movePrevious = null; sortByDirectory = null; sortByExtension = null; sortById = null; }; }; treesitter = { context = { enable = true; setupOpts.max_lines = 3; }; }; binds = { whichKey.enable = true; cheatsheet.enable = true; }; telescope.enable = true; git = { enable = true; gitsigns.enable = true; gitsigns.codeActions.enable = false; # throws an annoying debug message git-conflict.enable = true; }; comments = { comment-nvim.enable = true; }; # discord integration presence = { neocord.enable = true; }; notify = { nvim-notify.enable = true; }; dashboard = { dashboard-nvim.enable = false; alpha.enable = true; }; filetree = { neo-tree = { enable = true; setupOpts.enable_refresh_on_write = true; }; }; # terminal integration configuration terminal = { toggleterm = { enable = true; lazygit.enable = true; }; }; # notes! notes = { obsidian = { enable = true; # more to be added here setupOpts = { workspaces = [ { name = "notes"; path = "~/Source/notes"; } ]; }; }; todo-comments.enable = true; }; # ai assistant configuration assistant = { copilot = { enable = true; cmp.enable = true; }; }; # custom key mappings keymaps = [ # Ctrl-S save { mode = ["n" "v" "i"]; key = ""; action = "w"; } # toggle file explorer { mode = ["n"]; key = ""; action = "Neotree toggle left"; } # copy/cut/paste to system clipboard # { # mode = ["v"]; # key = ""; # action = '' # "+y # ''; # noremap = true; # } # { # mode = ["n"]; # key = ""; # action = '' # l"+P # ''; # noremap = true; # } # { # mode = ["v"]; # key = ""; # action = '' # "+P # ''; # noremap = true; # } # { # mode = ["c"]; # key = ""; # action = '' # l"+P # ''; # noremap = true; # } # { # mode = ["i"]; # key = ""; # action = '' # l"+Pli # ''; # noremap = true; # } # { # mode = ["t"]; # key = ""; # action = '' # "+Pi # ''; # noremap = true; # } ]; ### end of settings }; }; }; }