From 34813d1dde1327f1a6214db9d50b12339e47210e Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Fri, 11 Sep 2026 21:57:50 +0530 Subject: feat(development/nixvim): added dap to nixvim Added debugging capabilities to nixvim with the nvim-dap plugin + some other supporting plugins for the interface. --- modules/development/nixvim/plugins/dap-ui.nix | 7 +++++++ modules/development/nixvim/plugins/dap-virtual-text.nix | 7 +++++++ modules/development/nixvim/plugins/dap.nix | 7 +++++++ modules/development/nixvim/plugins/default.nix | 3 +++ 4 files changed, 24 insertions(+) create mode 100644 modules/development/nixvim/plugins/dap-ui.nix create mode 100644 modules/development/nixvim/plugins/dap-virtual-text.nix create mode 100644 modules/development/nixvim/plugins/dap.nix (limited to 'modules') diff --git a/modules/development/nixvim/plugins/dap-ui.nix b/modules/development/nixvim/plugins/dap-ui.nix new file mode 100644 index 0000000..5885e54 --- /dev/null +++ b/modules/development/nixvim/plugins/dap-ui.nix @@ -0,0 +1,7 @@ +# A UI for nvim-dap. +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.dap-ui = lib.mkIf config.development.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/dap-virtual-text.nix b/modules/development/nixvim/plugins/dap-virtual-text.nix new file mode 100644 index 0000000..4fea5ca --- /dev/null +++ b/modules/development/nixvim/plugins/dap-virtual-text.nix @@ -0,0 +1,7 @@ +# A plugin that adds virtual text support to the nvim-dap. +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.dap-virtual-text = lib.mkIf config.development.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/dap.nix b/modules/development/nixvim/plugins/dap.nix new file mode 100644 index 0000000..215a41c --- /dev/null +++ b/modules/development/nixvim/plugins/dap.nix @@ -0,0 +1,7 @@ +# Debug Adapter Protocol client implementation for Neovim. +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.dap = lib.mkIf config.development.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/default.nix b/modules/development/nixvim/plugins/default.nix index c7ebea4..67f7f06 100644 --- a/modules/development/nixvim/plugins/default.nix +++ b/modules/development/nixvim/plugins/default.nix @@ -4,6 +4,9 @@ imports = [ ./cmp.nix ./comment.nix + ./dap-ui.nix + ./dap-virtual-text.nix + ./dap.nix ./gitsigns.nix ./indent-blankline.nix ./lsp.nix -- cgit v1.2.3 From 8d0780f666fe7716397e9824624e0aced85670e5 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Sat, 12 Sep 2026 05:57:11 +0530 Subject: feat(development/nixvim): gitsigns configurations Finally made a fully featured gitsigns config integrating all its features. --- modules/development/nixvim/default.nix | 1 + modules/development/nixvim/plugins/gitsigns.nix | 102 ++++++++++++++++++++++- modules/development/nixvim/plugins/telescope.nix | 10 --- 3 files changed, 100 insertions(+), 13 deletions(-) (limited to 'modules') diff --git a/modules/development/nixvim/default.nix b/modules/development/nixvim/default.nix index bf3d143..f1e038a 100644 --- a/modules/development/nixvim/default.nix +++ b/modules/development/nixvim/default.nix @@ -34,6 +34,7 @@ clipboard = "unnamedplus"; updatetime = 500; }; + globals.mapleader = " "; clipboard.providers.xclip.enable = true; extraConfigLuaPre = with config.scheme.withHashtag; '' vim.opt.fillchars:append({ eob = " " }) diff --git a/modules/development/nixvim/plugins/gitsigns.nix b/modules/development/nixvim/plugins/gitsigns.nix index 38ad85f..ccfb2c9 100644 --- a/modules/development/nixvim/plugins/gitsigns.nix +++ b/modules/development/nixvim/plugins/gitsigns.nix @@ -1,7 +1,103 @@ -# Git status in the sign column +# Git integration: signs, blame, diffs and hunk operations { config, lib, ... }: { - config.programs.nixvim.plugins.gitsigns = lib.mkIf config.development.nixvim.enable { - enable = true; + config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + plugins.gitsigns = { + enable = true; + + settings = { + signs = { + add.text = "┃"; + change.text = "┃"; + delete.text = "▁"; + topdelete.text = "▔"; + changedelete.text = "~"; + untracked.text = "┆"; + }; + + numhl = true; + current_line_blame = false; + current_line_blame_formatter = ", - "; + + on_attach = '' + function(bufnr) + local gitsigns = require('gitsigns') + local function map(mode, lhs, rhs, desc) + vim.keymap.set(mode, lhs, rhs, { buffer = bufnr, silent = true, desc = desc }) + end + + -- Navigation + map('n', ']c', function() gitsigns.nav_hunk('next') end, 'Next hunk') + map('n', '[c', function() gitsigns.nav_hunk('prev') end, 'Previous hunk') + map('n', ']C', function() gitsigns.nav_hunk('last') end, 'Last hunk') + map('n', '[C', function() gitsigns.nav_hunk('first') end, 'First hunk') + + -- Hunk actions + map('n', 'gs', gitsigns.stage_hunk, 'Stage hunk') + map('v', 'gs', function() + gitsigns.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') }) + end, 'Stage visual range hunk') + map('n', 'gr', gitsigns.reset_hunk, 'Reset hunk') + map('v', 'gr', function() + gitsigns.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') }) + end, 'Reset visual range hunk') + map('n', 'gS', gitsigns.stage_buffer, 'Stage buffer') + map('n', 'gR', gitsigns.reset_buffer, 'Reset buffer') + map('n', 'gi', gitsigns.reset_buffer_index, 'Unstage buffer (reset index)') + map('n', 'gu', gitsigns.undo_stage_hunk, 'Undo stage hunk') + + -- Preview + map('n', 'gp', gitsigns.preview_hunk, 'Preview hunk') + map('n', 'gP', gitsigns.preview_hunk_inline, 'Preview hunk inline') + + -- Blame + map('n', 'gb', gitsigns.blame_line, 'Blame line') + map('n', 'gB', function() + gitsigns.blame_line({ full = true }) + end, 'Blame line (full)') + + -- Diffs / base + map('n', 'gd', gitsigns.diffthis, 'Diff this (index)') + map('n', 'gD', function() + gitsigns.diffthis('~') + end, 'Diff this (HEAD)') + map('n', 'gc', function() + gitsigns.change_base(nil, true) + end, 'Change diff base') + + -- Quickfix / location list + map('n', 'gq', gitsigns.setqflist, 'Hunks to quickfix') + map('n', 'gQ', function() + gitsigns.setqflist('all') + end, 'Repo hunks to quickfix') + map('n', 'gl', gitsigns.setloclist, 'Hunks to location list') + + -- Toggles + map('n', 'gts', gitsigns.toggle_signs, 'Toggle signs') + map('n', 'gtl', gitsigns.toggle_linehl, 'Toggle line highlight') + map('n', 'gtn', gitsigns.toggle_numhl, 'Toggle number highlight') + map('n', 'gtw', gitsigns.toggle_word_diff, 'Toggle word diff') + map('n', 'gtb', gitsigns.toggle_current_line_blame, 'Toggle current line blame') + map('n', 'gtd', gitsigns.toggle_deleted, 'Toggle deleted lines') + + -- Misc + map('n', 'gF', gitsigns.refresh, 'Refresh gitsigns') + + -- Text object + map({ 'o', 'x' }, 'ih', gitsigns.select_hunk, 'Select hunk text object') + end + ''; + }; + }; + + highlight = with config.scheme.withHashtag; { + GitSignsAdd.fg = base0B; + GitSignsChange.fg = base0A; + GitSignsDelete.fg = base08; + GitSignsTopdelete.fg = base08; + GitSignsChangedelete.fg = base0A; + GitSignsUntracked.fg = base0C; + GitSignsCurrentLineBlame.fg = base04; + }; }; } diff --git a/modules/development/nixvim/plugins/telescope.nix b/modules/development/nixvim/plugins/telescope.nix index 8f06ec9..505a3eb 100644 --- a/modules/development/nixvim/plugins/telescope.nix +++ b/modules/development/nixvim/plugins/telescope.nix @@ -56,16 +56,6 @@ options.desc = "Document symbols"; }; - # Git - "gc" = { - action = "git_commits"; - options.desc = "Git commits"; - }; - "gb" = { - action = "git_branches"; - options.desc = "Git branches"; - }; - # Misc "fh" = { action = "help_tags"; -- cgit v1.2.3 From d954af6cb5b34be42e90a75b7f3138bf8b143d6f Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Sat, 12 Sep 2026 06:01:50 +0530 Subject: chore(development/nixvim): removed pure lua text configs --- modules/development/nixvim/default.nix | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'modules') diff --git a/modules/development/nixvim/default.nix b/modules/development/nixvim/default.nix index f1e038a..4cdb355 100644 --- a/modules/development/nixvim/default.nix +++ b/modules/development/nixvim/default.nix @@ -33,27 +33,19 @@ foldlevel = 99; clipboard = "unnamedplus"; updatetime = 500; + fillchars = "eob: "; + listchars = "tab: ,trail:_,lead: "; }; globals.mapleader = " "; clipboard.providers.xclip.enable = true; - extraConfigLuaPre = with config.scheme.withHashtag; '' - vim.opt.fillchars:append({ eob = " " }) - vim.opt.listchars = { tab = " ", trail = "_", lead = " " } - vim.api.nvim_set_hl(0, "WinSeparator", { - fg = "${base01}", - bg = "${base00}", - }) - vim.api.nvim_create_autocmd({ "FileType" }, { - pattern = { "yaml", "yml" }, - callback = function() - vim.opt_local.expandtab = true - vim.opt_local.shiftwidth = 2 - vim.opt_local.softtabstop = 2 - vim.opt_local.tabstop = 2 - end, - }) - ''; + highlight = with config.scheme.withHashtag; { + WinSeparator = { + fg = base01; + bg = base00; + }; + }; + performance = { byteCompileLua.enable = true; combinePlugins.enable = true; @@ -84,6 +76,14 @@ end ''; } + { + event = [ "FileType" ]; + pattern = [ + "yaml" + "yml" + ]; + command = "setlocal expandtab shiftwidth=2 softtabstop=2 tabstop=2"; + } ]; }; }; -- cgit v1.2.3 From 3f8dda78a30e920d516648503b5f49e865bacc89 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Sun, 13 Sep 2026 00:56:29 +0530 Subject: feat(development/nixvim): nixvim word-wrapping, disable gitsins column Now in neovim/nixvim lines breaks on words instead of characters, and there is a character indicator for each wrapped line. Gitsigns diff symbols column has been disabled, the line number highlighting is good enough. --- modules/development/nixvim/default.nix | 4 ++++ modules/development/nixvim/plugins/gitsigns.nix | 1 + 2 files changed, 5 insertions(+) (limited to 'modules') diff --git a/modules/development/nixvim/default.nix b/modules/development/nixvim/default.nix index 4cdb355..eab3d85 100644 --- a/modules/development/nixvim/default.nix +++ b/modules/development/nixvim/default.nix @@ -28,6 +28,10 @@ tabstop = 2; softtabstop = 2; expandtab = true; + wrap = true; + linebreak = true; + breakindent = true; + showbreak = "↳"; list = true; laststatus = 3; foldlevel = 99; diff --git a/modules/development/nixvim/plugins/gitsigns.nix b/modules/development/nixvim/plugins/gitsigns.nix index ccfb2c9..28123fd 100644 --- a/modules/development/nixvim/plugins/gitsigns.nix +++ b/modules/development/nixvim/plugins/gitsigns.nix @@ -15,6 +15,7 @@ untracked.text = "┆"; }; + signcolumn = false; numhl = true; current_line_blame = false; current_line_blame_formatter = ", - "; -- cgit v1.2.3 From b3123b2c13a039cda45e0a2b45e0e404dac8d96e Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Sun, 13 Sep 2026 03:42:05 +0530 Subject: feat(development/nixvim): added more comprehensive list of keybindings for lsp --- modules/development/nixvim/plugins/lsp.nix | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'modules') diff --git a/modules/development/nixvim/plugins/lsp.nix b/modules/development/nixvim/plugins/lsp.nix index 0a92f86..35d80dc 100644 --- a/modules/development/nixvim/plugins/lsp.nix +++ b/modules/development/nixvim/plugins/lsp.nix @@ -6,12 +6,28 @@ inlayHints = true; autoLoad = true; - keymaps.lspBuf = { - K = "hover"; - gD = "references"; - gd = "definition"; - gi = "implementation"; - gt = "type_definition"; + keymaps = { + lspBuf = { + "lh" = "hover"; + "lr" = "references"; + "ld" = "definition"; + "li" = "implementation"; + "lt" = "type_definition"; + "lD" = "declaration"; + "lR" = "rename"; + "la" = "code_action"; + "lf" = "format"; + "ls" = "signature_help"; + "lwa" = "add_workspace_folder"; + "lwr" = "remove_workspace_folder"; + "lwl" = "list_workspace_folders"; + }; + diagnostic = { + "le" = "open_float"; + "lq" = "setloclist"; + "[d" = "goto_prev"; + "]d" = "goto_next"; + }; }; servers = { -- cgit v1.2.3 From 9c2bec03e1ac5226bbd175506286dff0516702be Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Sun, 13 Sep 2026 21:43:59 +0530 Subject: feat(development/nixvim): enabled exrc, added .nvim.lua Now each project can set their own .nvim.lua config to start the specific language servers, with its own custom configuration options, no need for global lsp configs. --- .nvim.lua | 5 +++++ modules/development/nixvim/default.nix | 1 + 2 files changed, 6 insertions(+) create mode 100644 .nvim.lua (limited to 'modules') diff --git a/.nvim.lua b/.nvim.lua new file mode 100644 index 0000000..c95d560 --- /dev/null +++ b/.nvim.lua @@ -0,0 +1,5 @@ +vim.lsp.enable({ + 'lua_ls', + 'nixd', + 'bash_ls' +}) diff --git a/modules/development/nixvim/default.nix b/modules/development/nixvim/default.nix index eab3d85..8506b7d 100644 --- a/modules/development/nixvim/default.nix +++ b/modules/development/nixvim/default.nix @@ -39,6 +39,7 @@ updatetime = 500; fillchars = "eob: "; listchars = "tab: ,trail:_,lead: "; + exrc = true; }; globals.mapleader = " "; clipboard.providers.xclip.enable = true; -- cgit v1.2.3 From 4befa9082c71e6ae323222de2838a1b2afc685be Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Mon, 14 Sep 2026 05:24:52 +0530 Subject: feat(development/nixvim): added dap keybindings --- modules/development/nixvim/plugins/dap-ui.nix | 22 ++++- modules/development/nixvim/plugins/dap.nix | 119 +++++++++++++++++++++++++- 2 files changed, 137 insertions(+), 4 deletions(-) (limited to 'modules') diff --git a/modules/development/nixvim/plugins/dap-ui.nix b/modules/development/nixvim/plugins/dap-ui.nix index 5885e54..cc25d2d 100644 --- a/modules/development/nixvim/plugins/dap-ui.nix +++ b/modules/development/nixvim/plugins/dap-ui.nix @@ -1,7 +1,25 @@ # A UI for nvim-dap. { config, lib, ... }: { - config.programs.nixvim.plugins.dap-ui = lib.mkIf config.development.nixvim.enable { - enable = true; + config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + plugins.dap-ui = { + enable = true; + }; + + keymaps = [ + # dap-ui controls + { + mode = "n"; + key = "du"; + action = "lua require('dapui').toggle()"; + options.desc = "Debug: Toggle UI"; + } + { + mode = "n"; + key = "de"; + action = "lua require('dapui').eval()"; + options.desc = "Debug: Eval Expression Under Cursor"; + } + ]; }; } diff --git a/modules/development/nixvim/plugins/dap.nix b/modules/development/nixvim/plugins/dap.nix index 215a41c..f45e029 100644 --- a/modules/development/nixvim/plugins/dap.nix +++ b/modules/development/nixvim/plugins/dap.nix @@ -1,7 +1,122 @@ # Debug Adapter Protocol client implementation for Neovim. { config, lib, ... }: { - config.programs.nixvim.plugins.dap = lib.mkIf config.development.nixvim.enable { - enable = true; + config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + plugins.dap = { + enable = true; + + # Example adapter — adjust/add per language you actually debug. + # This one assumes you have `netcoredbg`/`codelldb`/etc. available, + # swap for whatever debuggers you use. + adapters.servers = { + # Example: python debugpy adapter + # python = { + # command = "${pkgs.python3Packages.debugpy}/bin/python"; + # args = [ "-m" "debugpy.adapter" ]; + # }; + }; + }; + + keymaps = [ + # Core DAP controls + { + mode = "n"; + key = "dc"; + action = "lua require('dap').continue()"; + options.desc = "Debug: Continue"; + } + { + mode = "n"; + key = "di"; + action = "lua require('dap').step_into()"; + options.desc = "Debug: Step Into"; + } + { + mode = "n"; + key = "do"; + action = "lua require('dap').step_over()"; + options.desc = "Debug: Step Over"; + } + { + mode = "n"; + key = "dO"; + action = "lua require('dap').step_out()"; + options.desc = "Debug: Step Out"; + } + { + mode = "n"; + key = "db"; + action = "lua require('dap').toggle_breakpoint()"; + options.desc = "Debug: Toggle Breakpoint"; + } + { + mode = "n"; + key = "dB"; + action = "lua require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: '))"; + options.desc = "Debug: Conditional Breakpoint"; + } + { + mode = "n"; + key = "dl"; + action = "lua require('dap').run_last()"; + options.desc = "Debug: Run Last"; + } + { + mode = "n"; + key = "dt"; + action = "lua require('dap').terminate()"; + options.desc = "Debug: Terminate"; + } + { + mode = "n"; + key = "dr"; + action = "lua require('dap').repl.toggle()"; + options.desc = "Debug: Toggle REPL"; + } + { + mode = "n"; + key = "dd"; + action = "lua vim.diagnostic.open_float()"; + options.desc = "Diagnostics: Line diagnostics float"; + } + { + mode = "n"; + key = "dx"; + action = "lua vim.diagnostic.close()"; + options.desc = "Diagnostics: Close float"; + } + { + mode = "n"; + key = "dn"; + action = "lua vim.diagnostic.goto_next()"; + options.desc = "Diagnostics: Next"; + } + { + mode = "n"; + key = "dp"; + action = "lua vim.diagnostic.goto_prev()"; + options.desc = "Diagnostics: Previous"; + } + { + mode = "n"; + key = "dq"; + action = "lua vim.diagnostic.setloclist()"; + options.desc = "Diagnostics: Load location list"; + } + ]; + + # Auto open/close dap-ui with the debug session lifecycle + extraConfigLua = '' + local dap, dapui = require("dap"), require("dapui") + dap.listeners.after.event_initialized["dapui_config"] = function() + dapui.open() + end + dap.listeners.before.event_terminated["dapui_config"] = function() + dapui.close() + end + dap.listeners.before.event_exited["dapui_config"] = function() + dapui.close() + end + ''; }; } -- cgit v1.2.3 From 21edf9d9d5ebb1d745093bd1c2727c71135bc478 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Mon, 14 Sep 2026 05:26:03 +0530 Subject: feat(development/nixvim): removed default lsp server configurations Now this config relies on the user manually starting the lsp or the project containing a .nvim.lsp that enables the language server with vim.lsp.enable({ ... }). --- modules/development/nixvim/plugins/lsp.nix | 216 ----------------------------- 1 file changed, 216 deletions(-) (limited to 'modules') diff --git a/modules/development/nixvim/plugins/lsp.nix b/modules/development/nixvim/plugins/lsp.nix index 35d80dc..6c64a37 100644 --- a/modules/development/nixvim/plugins/lsp.nix +++ b/modules/development/nixvim/plugins/lsp.nix @@ -29,221 +29,5 @@ "]d" = "goto_next"; }; }; - - servers = { - # System and configuration - nixd = { - enable = true; - package = null; - }; # Nix - bashls = { - enable = true; - package = null; - }; # Bash shell - taplo = { - enable = true; - package = null; - }; # TOML - yamlls = { - enable = true; - package = null; - }; # YAML - jsonls = { - enable = true; - package = null; - }; # JSON - marksman = { - enable = true; - package = null; - }; # Markdown - - # Web development - html = { - enable = true; - package = null; - }; # HTML - cssls = { - enable = true; - package = null; - }; # CSS, SCSS and LESS - tailwindcss = { - enable = true; - package = null; - }; # Tailwind CSS - vtsls = { - # JS and TS fast wrapper for tsserver - enable = true; - package = null; - settings = { - # Limits huge generic type hints - vtsls.experimental.maxInlayHintLength = 30; - - # TypeScript type inferences - typescript.inlayHints = { - parameterNames.enabled = "all"; - parameterTypes.enabled = true; - variableTypes.enabled = true; - propertyDeclarationTypes.enabled = true; - functionLikeReturnTypes.enabled = true; - enumMemberValues.enabled = true; - }; - - # JavaScript type inferences - javascript.inlayHints = { - parameterNames.enabled = "all"; - parameterTypes.enabled = true; - variableTypes.enabled = true; - propertyDeclarationTypes.enabled = true; - functionLikeReturnTypes.enabled = true; - enumMemberValues.enabled = true; - }; - }; - }; - eslint = { - enable = true; - package = null; - }; # ESLint diagnostics and formatting - - # Web frameworks - volar = { - # Vue - enable = true; - package = null; - tslsIntegration = false; - }; - svelte = { - enable = true; - package = null; - }; # Svelte - astro = { - enable = true; - package = null; - }; # Astro - - # Scripting and high-level languages - basedpyright = { - # Python, modern faster fork of Pyright - enable = true; - package = null; - settings.basedpyright.analysis.inlayHints = { - variableTypes = true; - callArgumentNames = true; - functionReturnTypes = true; - genericTypes = false; # Opt in since these can get noisy - }; - }; - ruff = { - enable = true; - package = null; - }; # Python linter and formatter - ruby_lsp = { - enable = true; - package = null; - }; # Ruby - lua_ls = { - # Lua - enable = true; - package = null; - settings.Lua.hint = { - enable = true; - arrayIndex = "Auto"; - setType = true; - paramName = "All"; - paramType = true; - }; - }; - intelephense = { - enable = true; - package = null; - }; # PHP - elixirls = { - enable = true; - package = null; - }; # Elixir - - # Systems, compiled and enterprise - clangd = { - enable = true; - package = null; - }; # C and C++ with inlay hints on by default - rust_analyzer = { - # Rust with inlay hints on by default - enable = true; - package = null; - installCargo = false; - installRustc = false; - }; - gopls = { - # Go - enable = true; - package = null; - settings.gopls.hints = { - assignVariableTypes = true; - compositeLiteralFields = true; - compositeLiteralTypes = true; - constantValues = true; - functionTypeParameters = true; - parameterNames = true; - rangeVariableTypes = true; - }; - }; - zls = { - enable = true; - package = null; - }; # Zig with inlay hints on by default - jdtls = { - # Java - enable = true; - package = null; - settings.java.inlayHints.parameterNames.enabled = "all"; - }; - kotlin_language_server = { - enable = true; - package = null; - }; # Kotlin - csharp_ls = { - enable = true; - package = null; - }; # C# without inlay hint support - hls = { - # Haskell - enable = true; - package = null; - installGhc = false; - settings.haskell.plugin."inlay-hints".globalOn = true; - }; - ocamllsp = { - enable = true; - package = null; - }; # OCaml - - # Infrastructure and DevOps - dockerls = { - enable = true; - package = null; - }; # Dockerfile - docker_compose_language_service = { - enable = true; - package = null; - }; # Docker Compose - terraformls = { - enable = true; - package = null; - }; # Terraform and HCL - - # Data and APIs - sqlls = { - enable = true; - package = null; - }; # SQL - graphql = { - enable = true; - package = null; - }; # GraphQL - prismals = { - enable = true; - package = null; - }; # Prisma ORM - }; }; } -- cgit v1.2.3 From cd39b87e3d04ddeb5e6f35037badfa17a5918c5a Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Tue, 15 Sep 2026 03:13:25 +0530 Subject: chore(development/nixvim): removed duplicate keymaps from dap and lsp --- modules/development/nixvim/plugins/dap.nix | 41 ------------------------------ 1 file changed, 41 deletions(-) (limited to 'modules') diff --git a/modules/development/nixvim/plugins/dap.nix b/modules/development/nixvim/plugins/dap.nix index f45e029..02bffa6 100644 --- a/modules/development/nixvim/plugins/dap.nix +++ b/modules/development/nixvim/plugins/dap.nix @@ -4,17 +4,6 @@ config.programs.nixvim = lib.mkIf config.development.nixvim.enable { plugins.dap = { enable = true; - - # Example adapter — adjust/add per language you actually debug. - # This one assumes you have `netcoredbg`/`codelldb`/etc. available, - # swap for whatever debuggers you use. - adapters.servers = { - # Example: python debugpy adapter - # python = { - # command = "${pkgs.python3Packages.debugpy}/bin/python"; - # args = [ "-m" "debugpy.adapter" ]; - # }; - }; }; keymaps = [ @@ -73,36 +62,6 @@ action = "lua require('dap').repl.toggle()"; options.desc = "Debug: Toggle REPL"; } - { - mode = "n"; - key = "dd"; - action = "lua vim.diagnostic.open_float()"; - options.desc = "Diagnostics: Line diagnostics float"; - } - { - mode = "n"; - key = "dx"; - action = "lua vim.diagnostic.close()"; - options.desc = "Diagnostics: Close float"; - } - { - mode = "n"; - key = "dn"; - action = "lua vim.diagnostic.goto_next()"; - options.desc = "Diagnostics: Next"; - } - { - mode = "n"; - key = "dp"; - action = "lua vim.diagnostic.goto_prev()"; - options.desc = "Diagnostics: Previous"; - } - { - mode = "n"; - key = "dq"; - action = "lua vim.diagnostic.setloclist()"; - options.desc = "Diagnostics: Load location list"; - } ]; # Auto open/close dap-ui with the debug session lifecycle -- cgit v1.2.3 From fe30a67a958d8ec78fdec8b83f66f8b3d491157e Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Tue, 15 Sep 2026 03:31:49 +0530 Subject: feat(development/nixvim): using c for comments, added window down keymap --- modules/development/nixvim/keymaps.nix | 2 +- modules/development/nixvim/plugins/comment.nix | 14 +++++++------- modules/development/nixvim/plugins/which-key.nix | 1 - 3 files changed, 8 insertions(+), 9 deletions(-) (limited to 'modules') diff --git a/modules/development/nixvim/keymaps.nix b/modules/development/nixvim/keymaps.nix index 46c3168..66a4284 100644 --- a/modules/development/nixvim/keymaps.nix +++ b/modules/development/nixvim/keymaps.nix @@ -8,7 +8,7 @@ options.desc = "Move to left window"; } { - key = ""; + key = ""; action = "j"; options.desc = "Move to bottom window"; } diff --git a/modules/development/nixvim/plugins/comment.nix b/modules/development/nixvim/plugins/comment.nix index 10bed84..8c69218 100644 --- a/modules/development/nixvim/plugins/comment.nix +++ b/modules/development/nixvim/plugins/comment.nix @@ -5,17 +5,17 @@ enable = true; settings = { toggler = { - line = "gcc"; # toggle line comment - block = "gbc"; # toggle block comment + line = "cc"; # toggle line comment + block = "cb"; # toggle block comment }; opleader = { - line = "gc"; # line comment operator (gc + motion) - block = "gb"; # block comment operator (gb + motion) + line = "cc"; # toggle line comment + block = "cb"; # toggle block comment }; extra = { - above = "gcO"; # add comment line above - below = "gco"; # add comment line below - eol = "gcA"; # add comment at end of line + above = "cu"; # add comment line above + below = "cd"; # add comment line below + eol = "ce"; # add comment at end of line }; }; }; diff --git a/modules/development/nixvim/plugins/which-key.nix b/modules/development/nixvim/plugins/which-key.nix index 81ecd14..5802c96 100644 --- a/modules/development/nixvim/plugins/which-key.nix +++ b/modules/development/nixvim/plugins/which-key.nix @@ -9,7 +9,6 @@ registers = true; spelling = { enabled = true; - suggestions = 20; }; }; win = { -- cgit v1.2.3 From 54102de5c057ece86fa4f173ac65df2d6f202869 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Tue, 15 Sep 2026 03:39:39 +0530 Subject: feat(development/nixvim): added keybinding groups to which-key --- modules/development/nixvim/plugins/which-key.nix | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'modules') diff --git a/modules/development/nixvim/plugins/which-key.nix b/modules/development/nixvim/plugins/which-key.nix index 5802c96..e400edd 100644 --- a/modules/development/nixvim/plugins/which-key.nix +++ b/modules/development/nixvim/plugins/which-key.nix @@ -14,6 +14,30 @@ win = { border = "single"; }; + + # Group descriptions for leader prefixes + spec = [ + { + __unkeyed-1 = "g"; + group = "+Git"; + } + { + __unkeyed-1 = "f"; + group = "+Find"; + } + { + __unkeyed-1 = "d"; + group = "+Debug"; + } + { + __unkeyed-1 = "l"; + group = "+LSP"; + } + { + __unkeyed-1 = "c"; + group = "+Comment"; + } + ]; }; }; } -- cgit v1.2.3 From c4b804f709e1695f07b6a236c8c72e1783d62247 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Tue, 15 Sep 2026 03:45:22 +0530 Subject: feat(development/nixvim): set key to nop for n and v modes --- modules/development/nixvim/keymaps.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'modules') diff --git a/modules/development/nixvim/keymaps.nix b/modules/development/nixvim/keymaps.nix index 66a4284..972429f 100644 --- a/modules/development/nixvim/keymaps.nix +++ b/modules/development/nixvim/keymaps.nix @@ -2,6 +2,17 @@ { config, lib, ... }: { config.programs.nixvim.keymaps = lib.mkIf config.development.nixvim.enable [ + # set the key to nop for normal and visual modes as we are tyring + # to use it as our + { + mode = [ + "n" + "v" + ]; + key = ""; + action = ""; + options.desc = "Disable leader delay"; + } { key = ""; action = "h"; -- cgit v1.2.3 From c7fa6207119f41e9b480e38d631f4f0c2daab83b Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Tue, 15 Sep 2026 03:52:30 +0530 Subject: feat(development/nixvim): moved NvimTree keybindings --- modules/development/nixvim/keymaps.nix | 11 +--- modules/development/nixvim/plugins/nvim-tree.nix | 78 ++++++++++++++---------- modules/development/nixvim/plugins/which-key.nix | 4 ++ 3 files changed, 52 insertions(+), 41 deletions(-) (limited to 'modules') diff --git a/modules/development/nixvim/keymaps.nix b/modules/development/nixvim/keymaps.nix index 972429f..fee21e5 100644 --- a/modules/development/nixvim/keymaps.nix +++ b/modules/development/nixvim/keymaps.nix @@ -13,6 +13,7 @@ action = ""; options.desc = "Disable leader delay"; } + # pane navigation { key = ""; action = "h"; @@ -33,15 +34,7 @@ action = "l"; options.desc = "Move to right window"; } - { - key = ""; - action = "NvimTreeToggle"; - mode = [ - "n" - "i" - ]; - options.desc = "Toggle file explorer"; - } + # scrolling { key = ""; action = "zz"; diff --git a/modules/development/nixvim/plugins/nvim-tree.nix b/modules/development/nixvim/plugins/nvim-tree.nix index 2f35e3c..67f61fd 100644 --- a/modules/development/nixvim/plugins/nvim-tree.nix +++ b/modules/development/nixvim/plugins/nvim-tree.nix @@ -1,43 +1,57 @@ # File explorer sidebar { config, lib, ... }: { - config.programs.nixvim.plugins.nvim-tree = lib.mkIf config.development.nixvim.enable { - enable = true; - settings = { - filters = { - dotfiles = false; - git_clean = false; - no_buffer = false; - custom = { }; - }; - git = { - enable = true; - ignore = false; - }; - view = { - width = 30; - }; - renderer = { - indent_markers = { + config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + plugins.nvim-tree = { + enable = true; + settings = { + filters = { + dotfiles = false; + git_clean = false; + no_buffer = false; + custom = { }; + }; + git = { enable = true; - inline_arrows = false; - icons = { - corner = "└"; - edge = "│"; - item = "├"; - bottom = "─"; - none = " "; - }; + ignore = false; + }; + view = { + width = 30; }; - icons = { - show = { - folder = true; - folder_arrow = false; - file = true; - git = true; + renderer = { + indent_markers = { + enable = true; + inline_arrows = false; + icons = { + corner = "└"; + edge = "│"; + item = "├"; + bottom = "─"; + none = " "; + }; + }; + icons = { + show = { + folder = true; + folder_arrow = false; + file = true; + git = true; + }; }; }; }; }; + + keymaps = [ + { + key = "nt"; + action = "NvimTreeToggle"; + mode = [ + "n" + "i" + ]; + options.desc = "Toggle file explorer"; + } + ]; }; } diff --git a/modules/development/nixvim/plugins/which-key.nix b/modules/development/nixvim/plugins/which-key.nix index e400edd..3a0c0ef 100644 --- a/modules/development/nixvim/plugins/which-key.nix +++ b/modules/development/nixvim/plugins/which-key.nix @@ -37,6 +37,10 @@ __unkeyed-1 = "c"; group = "+Comment"; } + { + __unkeyed-1 = "n"; + group = "+Explorer"; + } ]; }; }; -- cgit v1.2.3 From 97069824b7ce38398bd03bc936d613998959b9be Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Tue, 15 Sep 2026 04:06:46 +0530 Subject: feat(development/nixvim): added window resizing keybindings --- modules/development/nixvim/keymaps.nix | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'modules') diff --git a/modules/development/nixvim/keymaps.nix b/modules/development/nixvim/keymaps.nix index fee21e5..cc258c1 100644 --- a/modules/development/nixvim/keymaps.nix +++ b/modules/development/nixvim/keymaps.nix @@ -13,7 +13,7 @@ action = ""; options.desc = "Disable leader delay"; } - # pane navigation + # window navigation { key = ""; action = "h"; @@ -34,6 +34,27 @@ action = "l"; options.desc = "Move to right window"; } + # window resizing + { + key = ""; + action = "+"; + options.desc = "Increase window height"; + } + { + key = ""; + action = "-"; + options.desc = "Decrease window height"; + } + { + key = ""; + action = ">"; + options.desc = "Increase window height"; + } + { + key = ""; + action = "<"; + options.desc = "Decrease window height"; + } # scrolling { key = ""; -- cgit v1.2.3