summaryrefslogtreecommitdiffstats
path: root/neovim.nix
diff options
context:
space:
mode:
authorAndrew <admonty1@protonmail.com>2025-08-30 12:33:55 -0400
committerAndrew <admonty1@protonmail.com>2025-08-30 12:33:55 -0400
commit08e6294366ed9a42b5b08e4d38f60567b91d858c (patch)
tree36268a87ff2898b9173939dc23ebfa110a5f21b4 /neovim.nix
parentadd space after username in prompt for starship because it looks better (diff)
downloadnixos-08e6294366ed9a42b5b08e4d38f60567b91d858c.tar.gz
nixos-08e6294366ed9a42b5b08e4d38f60567b91d858c.tar.bz2
nixos-08e6294366ed9a42b5b08e4d38f60567b91d858c.zip
tmux and neovim config
Diffstat (limited to 'neovim.nix')
-rw-r--r--neovim.nix269
1 files changed, 269 insertions, 0 deletions
diff --git a/neovim.nix b/neovim.nix
new file mode 100644
index 0000000..a6562d9
--- /dev/null
+++ b/neovim.nix
@@ -0,0 +1,269 @@
+{inputs, pkgs, ...}: {
+ config.vim = {
+ viAlias = true;
+ vimAlias = true;
+ debugMode = {
+ enable = false;
+ level = 16;
+ logFile = "/tmp/nvim.log";
+ };
+
+ spellcheck = {
+ enable = true;
+ programmingWordlist.enable = true;
+ };
+
+ lsp = {
+ # This must be enabled for the language modules to hook into
+ # the LSP API.
+ enable = true;
+
+ formatOnSave = true;
+ lspkind.enable = false;
+ lightbulb.enable = true;
+ lspsaga.enable = false;
+ trouble.enable = true;
+ lspSignature.enable = !true; # conflicts with blink in maximal
+ otter-nvim.enable = true;
+ nvim-docs-view.enable = true;
+ };
+
+ debugger = {
+ nvim-dap = {
+ enable = true;
+ ui.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 = {
+ enableFormat = true;
+ enableTreesitter = true;
+ enableExtraDiagnostics = true;
+
+ # Languages that will be supported in default and maximal configurations.
+ nix.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 = false;
+ 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;
+ fsharp.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: <https://github.com/PMunch/nimlsp/issues/178#issue-2128106096>
+ 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;
+
+ # nvf provides various autocomplete options. The tried and tested nvim-cmp
+ # is enabled in default package, because it does not trigger a build. We
+ # enable blink-cmp in maximal because it needs to build its rust fuzzy
+ # matcher library.
+ autocomplete = {
+ nvim-cmp.enable = !true;
+ blink-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
+ neogit.enable = true;
+ };
+
+ 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;
+ diffview-nvim.enable = true;
+ yanky-nvim.enable = false;
+ icon-picker.enable = true;
+ surround.enable = true;
+ leetcode-nvim.enable = true;
+ multicursors.enable = true;
+ smart-splits.enable = true;
+ undotree.enable = true;
+ nvim-biscuits.enable = true;
+
+ motion = {
+ hop.enable = true;
+ leap.enable = true;
+ precognition.enable = true;
+ };
+ images = {
+ image-nvim.enable = false;
+ img-clip.enable = true;
+ };
+ };
+
+ 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;
+ };
+ codecompanion-nvim.enable = false;
+ avante-nvim.enable = true;
+ };
+
+ session = {
+ nvim-session-manager.enable = false;
+ };
+
+ gestures = {
+ gesture-nvim.enable = false;
+ };
+
+ comments = {
+ comment-nvim.enable = true;
+ };
+
+ presence = {
+ neocord.enable = false;
+ };
+ };
+}