diff --git a/nvf-configuration.nix b/nvf-configuration.nix index de48013..c503984 100644 --- a/nvf-configuration.nix +++ b/nvf-configuration.nix @@ -1,43 +1,249 @@ { pkgs, lib, ...}: { - vim = { - theme = { - enable = true; - name = "base16"; - style = "dark"; + config.vim = { + viAlias = true; + vimAlias = true; + debugMode = { + enable = false; + level = 16; + logFile = "/tmp/nvim.log"; + }; - base16-colors = { - base00 = "#000000"; - base01 = "#ff0000"; - base02 = "#33ff00"; - base03 = "#ff0099"; - base04 = "#0066ff"; - base05 = "#cc00ff"; - base06 = "#00ffff"; - base07 = "#d0d0d0"; - base08 = "#808080"; - base09 = "#ff9900"; - base0A = "#404040"; - base0B = "#606060"; - base0C = "#c0c0c0"; - base0D = "#e0e0e0"; - base0E = "#3300ff"; - base0F = "#ffffff"; + spellcheck = { + enable = true; + }; + + lsp = { + formatOnSave = true; + lspkind.enable = false; + lightbulb.enable = true; + lspsaga.enable = false; + trouble.enable = true; + lspSignature.enable = true; + otter-nvim.enable = true; + lsplines.enable = true; + nvim-docs-view.enable = true; + }; + + debugger = { + nvim-dap = { + enable = true; + ui.enable = true; }; }; - - statusline.lualine.enable = true; - telescope.enable = true; - autocomplete.nvim-cmp.enable = true; + # This section does not include a comprehensive list of available language modules. + # To list all available language module options, please visit the nvf manual. languages = { enableLSP = true; + enableFormat = true; enableTreesitter = true; + enableExtraDiagnostics = true; + # Languages that will be supported in default and maximal configurations. nix.enable = true; - rust.enable = true; + markdown.enable = true; + + # Languages that are enabled in the maximal configuration. + bash.enable = true; + clang.enable = true; + css.enable = true; + html.enable = true; + sql.enable = true; + java.enable = true; + kotlin.enable = true; + ts.enable = true; + go.enable = true; + lua.enable = true; + zig.enable = true; + python.enable = true; + typst.enable = true; + rust = { + enable = true; + crates.enable = true; + }; + + # Language modules that are not as common. + assembly.enable = false; + astro.enable = false; + nu.enable = false; csharp.enable = true; + julia.enable = false; + vala.enable = false; + scala.enable = false; + r.enable = false; + gleam.enable = false; + dart.enable = false; + ocaml.enable = false; + elixir.enable = false; + haskell.enable = false; + ruby.enable = false; + + tailwind.enable = false; + svelte.enable = false; + + # Nim LSP is broken on Darwin and therefore + # should be disabled by default. Users may still enable + # `vim.languages.vim` to enable it, this does not restrict + # that. + # See: + nim.enable = false; + }; + + visuals = { + nvim-scrollbar.enable = true; + nvim-web-devicons.enable = true; + nvim-cursorline.enable = true; + cinnamon-nvim.enable = true; + fidget-nvim.enable = true; + + highlight-undo.enable = true; + indent-blankline.enable = true; + + # Fun + cellular-automaton.enable = false; + }; + + statusline = { + lualine = { + enable = true; + theme = "catppuccin"; + }; + }; + + theme = { + enable = true; + name = "catppuccin"; + style = "mocha"; + transparent = false; + }; + + autopairs.nvim-autopairs.enable = true; + + autocomplete.nvim-cmp.enable = true; + snippets.luasnip.enable = true; + + filetree = { + neo-tree = { + enable = true; + }; + }; + + tabline = { + nvimBufferline.enable = true; + }; + + treesitter.context.enable = true; + + 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 + }; + + minimap = { + minimap-vim.enable = false; + codewindow.enable = true; # lighter, faster, and uses lua for configuration + }; + + dashboard = { + dashboard-nvim.enable = false; + alpha.enable = true; + }; + + notify = { + nvim-notify.enable = true; + }; + + projects = { + project-nvim.enable = true; + }; + + utility = { + ccc.enable = false; + vim-wakatime.enable = false; + icon-picker.enable = true; + surround.enable = true; + diffview-nvim.enable = true; + motion = { + hop.enable = true; + leap.enable = true; + precognition.enable = true; + }; + + images = { + image-nvim.enable = false; + }; + }; + + notes = { + obsidian.enable = false; # FIXME: neovim fails to build if obsidian is enabled + neorg.enable = false; + orgmode.enable = false; + mind-nvim.enable = true; + todo-comments.enable = true; + }; + + terminal = { + toggleterm = { + enable = true; + lazygit.enable = true; + }; + }; + + ui = { + borders.enable = true; + noice.enable = true; + colorizer.enable = true; + modes-nvim.enable = false; # the theme looks terrible with catppuccin + illuminate.enable = true; + breadcrumbs = { + enable = true; + navbuddy.enable = true; + }; + smartcolumn = { + enable = true; + setupOpts.custom_colorcolumn = { + # this is a freeform module, it's `buftype = int;` for configuring column position + nix = "110"; + ruby = "120"; + java = "130"; + go = ["90" "130"]; + }; + }; + fastaction.enable = true; + }; + + assistant = { + chatgpt.enable = false; + copilot = { + enable = false; + cmp.enable = true; + }; + }; + + session = { + nvim-session-manager.enable = false; + }; + + gestures = { + gesture-nvim.enable = false; + }; + + comments = { + comment-nvim.enable = true; + }; + + presence = { + neocord.enable = false; }; }; }