From baae94abb6a9a03914216f0f373b7b0f6b0207bd Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Sat, 19 Sep 2026 01:40:50 +0530 Subject: chore: removed all raw string configurations options in favor of files Moved all configurations which were previously raw strings chunks, for options that the home-manager options didn't provide, into files for that specific configuration and reading there contents instead (with string replacement for passing information from the rest of the configuration). --- modules/development/nixvim/default.nix | 20 ---- modules/development/nixvim/plugins/cmp.nix | 36 ------- modules/development/nixvim/plugins/cmp/default.nix | 28 ++++++ modules/development/nixvim/plugins/cmp/escape.lua | 7 ++ modules/development/nixvim/plugins/comment.nix | 22 ---- .../development/nixvim/plugins/comment/default.nix | 22 ++++ modules/development/nixvim/plugins/dap-ui.nix | 25 ----- .../development/nixvim/plugins/dap-ui/dap-ui.lua | 10 ++ .../development/nixvim/plugins/dap-ui/default.nix | 28 ++++++ .../nixvim/plugins/dap-virtual-text.nix | 7 -- .../nixvim/plugins/dap-virtual-text/default.nix | 7 ++ modules/development/nixvim/plugins/dap.nix | 81 --------------- modules/development/nixvim/plugins/dap/default.nix | 67 ++++++++++++ modules/development/nixvim/plugins/default.nix | 32 +++--- modules/development/nixvim/plugins/gitsigns.nix | 112 --------------------- .../nixvim/plugins/gitsigns/default.nix | 45 +++++++++ .../nixvim/plugins/gitsigns/on-attach.lua | 66 ++++++++++++ .../nixvim/plugins/indent-blankline.nix | 13 --- .../nixvim/plugins/indent-blankline/default.nix | 13 +++ modules/development/nixvim/plugins/lsp.nix | 33 ------ modules/development/nixvim/plugins/lsp/default.nix | 43 ++++++++ .../nixvim/plugins/lsp/open-diagnostic-float.lua | 3 + modules/development/nixvim/plugins/lualine.nix | 97 ------------------ .../development/nixvim/plugins/lualine/default.nix | 97 ++++++++++++++++++ modules/development/nixvim/plugins/luasnip.nix | 7 -- .../development/nixvim/plugins/luasnip/default.nix | 7 ++ modules/development/nixvim/plugins/noice.nix | 7 -- .../development/nixvim/plugins/noice/default.nix | 7 ++ modules/development/nixvim/plugins/nvim-tree.nix | 56 ----------- .../nixvim/plugins/nvim-tree/default.nix | 56 +++++++++++ modules/development/nixvim/plugins/telescope.nix | 74 -------------- .../nixvim/plugins/telescope/default.nix | 74 ++++++++++++++ modules/development/nixvim/plugins/treesitter.nix | 18 ---- .../nixvim/plugins/treesitter/default.nix | 18 ++++ .../development/nixvim/plugins/web-devicons.nix | 7 -- .../nixvim/plugins/web-devicons/default.nix | 7 ++ modules/development/nixvim/plugins/which-key.nix | 47 --------- .../nixvim/plugins/which-key/default.nix | 47 +++++++++ 38 files changed, 668 insertions(+), 678 deletions(-) delete mode 100644 modules/development/nixvim/plugins/cmp.nix create mode 100644 modules/development/nixvim/plugins/cmp/default.nix create mode 100644 modules/development/nixvim/plugins/cmp/escape.lua delete mode 100644 modules/development/nixvim/plugins/comment.nix create mode 100644 modules/development/nixvim/plugins/comment/default.nix delete mode 100644 modules/development/nixvim/plugins/dap-ui.nix create mode 100644 modules/development/nixvim/plugins/dap-ui/dap-ui.lua create mode 100644 modules/development/nixvim/plugins/dap-ui/default.nix delete mode 100644 modules/development/nixvim/plugins/dap-virtual-text.nix create mode 100644 modules/development/nixvim/plugins/dap-virtual-text/default.nix delete mode 100644 modules/development/nixvim/plugins/dap.nix create mode 100644 modules/development/nixvim/plugins/dap/default.nix delete mode 100644 modules/development/nixvim/plugins/gitsigns.nix create mode 100644 modules/development/nixvim/plugins/gitsigns/default.nix create mode 100644 modules/development/nixvim/plugins/gitsigns/on-attach.lua delete mode 100644 modules/development/nixvim/plugins/indent-blankline.nix create mode 100644 modules/development/nixvim/plugins/indent-blankline/default.nix delete mode 100644 modules/development/nixvim/plugins/lsp.nix create mode 100644 modules/development/nixvim/plugins/lsp/default.nix create mode 100644 modules/development/nixvim/plugins/lsp/open-diagnostic-float.lua delete mode 100644 modules/development/nixvim/plugins/lualine.nix create mode 100644 modules/development/nixvim/plugins/lualine/default.nix delete mode 100644 modules/development/nixvim/plugins/luasnip.nix create mode 100644 modules/development/nixvim/plugins/luasnip/default.nix delete mode 100644 modules/development/nixvim/plugins/noice.nix create mode 100644 modules/development/nixvim/plugins/noice/default.nix delete mode 100644 modules/development/nixvim/plugins/nvim-tree.nix create mode 100644 modules/development/nixvim/plugins/nvim-tree/default.nix delete mode 100644 modules/development/nixvim/plugins/telescope.nix create mode 100644 modules/development/nixvim/plugins/telescope/default.nix delete mode 100644 modules/development/nixvim/plugins/treesitter.nix create mode 100644 modules/development/nixvim/plugins/treesitter/default.nix delete mode 100644 modules/development/nixvim/plugins/web-devicons.nix create mode 100644 modules/development/nixvim/plugins/web-devicons/default.nix delete mode 100644 modules/development/nixvim/plugins/which-key.nix create mode 100644 modules/development/nixvim/plugins/which-key/default.nix (limited to 'modules/development/nixvim') diff --git a/modules/development/nixvim/default.nix b/modules/development/nixvim/default.nix index 74b0c1f..00712cc 100644 --- a/modules/development/nixvim/default.nix +++ b/modules/development/nixvim/default.nix @@ -78,26 +78,6 @@ in }; }; }; - - autoCmd = [ - { - event = [ "CursorHold" ]; - pattern = "*"; - callback.__raw = '' - function() - vim.diagnostic.open_float(nil, { focus = false }) - end - ''; - } - { - event = [ "FileType" ]; - pattern = [ - "yaml" - "yml" - ]; - command = "setlocal expandtab shiftwidth=2 softtabstop=2 tabstop=2"; - } - ]; }; }; } diff --git a/modules/development/nixvim/plugins/cmp.nix b/modules/development/nixvim/plugins/cmp.nix deleted file mode 100644 index b2347ba..0000000 --- a/modules/development/nixvim/plugins/cmp.nix +++ /dev/null @@ -1,36 +0,0 @@ -# Completion plugin for auto-completion -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.cmp = lib.mkIf config.development.nixvim.enable { - enable = true; - autoEnableSources = true; - settings = { - snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end"; - mapping = { - "" = "cmp.mapping.complete()"; - "" = "cmp.mapping.confirm({ select = true })"; - "" = "cmp.mapping.select_next_item()"; - "" = "cmp.mapping.select_prev_item()"; - "" = "cmp.mapping.select_next_item()"; - "" = "cmp.mapping.select_prev_item()"; - "" = "cmp.mapping.scroll_docs(-4)"; # scroll docs up - "" = "cmp.mapping.scroll_docs(4)"; # scroll docs down - - "" = '' - cmp.mapping(function(fallback) - if cmp.visible() then - cmp.abort() - else - fallback() - end - end, { "i" }) - ''; - }; - sources = [ - { name = "nvim_lsp"; } - { name = "path"; } - { name = "buffer"; } - ]; - }; - }; -} diff --git a/modules/development/nixvim/plugins/cmp/default.nix b/modules/development/nixvim/plugins/cmp/default.nix new file mode 100644 index 0000000..4698801 --- /dev/null +++ b/modules/development/nixvim/plugins/cmp/default.nix @@ -0,0 +1,28 @@ +# Completion plugin for auto-completion +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.cmp = lib.mkIf config.development.nixvim.enable { + enable = true; + autoEnableSources = true; + settings = { + snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end"; + mapping = { + "" = "cmp.mapping.complete()"; + "" = "cmp.mapping.confirm({ select = true })"; + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.scroll_docs(-4)"; # scroll docs up + "" = "cmp.mapping.scroll_docs(4)"; # scroll docs down + + "" = builtins.readFile ./escape.lua; + }; + sources = [ + { name = "nvim_lsp"; } + { name = "path"; } + { name = "buffer"; } + ]; + }; + }; +} diff --git a/modules/development/nixvim/plugins/cmp/escape.lua b/modules/development/nixvim/plugins/cmp/escape.lua new file mode 100644 index 0000000..e215bc7 --- /dev/null +++ b/modules/development/nixvim/plugins/cmp/escape.lua @@ -0,0 +1,7 @@ +cmp.mapping(function(fallback) + if cmp.visible() then + cmp.abort() + else + fallback() + end +end, { "i" }) diff --git a/modules/development/nixvim/plugins/comment.nix b/modules/development/nixvim/plugins/comment.nix deleted file mode 100644 index 8c69218..0000000 --- a/modules/development/nixvim/plugins/comment.nix +++ /dev/null @@ -1,22 +0,0 @@ -# Comment toggling plugin -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.comment = lib.mkIf config.development.nixvim.enable { - enable = true; - settings = { - toggler = { - line = "cc"; # toggle line comment - block = "cb"; # toggle block comment - }; - opleader = { - line = "cc"; # toggle line comment - block = "cb"; # toggle block comment - }; - extra = { - 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/comment/default.nix b/modules/development/nixvim/plugins/comment/default.nix new file mode 100644 index 0000000..8c69218 --- /dev/null +++ b/modules/development/nixvim/plugins/comment/default.nix @@ -0,0 +1,22 @@ +# Comment toggling plugin +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.comment = lib.mkIf config.development.nixvim.enable { + enable = true; + settings = { + toggler = { + line = "cc"; # toggle line comment + block = "cb"; # toggle block comment + }; + opleader = { + line = "cc"; # toggle line comment + block = "cb"; # toggle block comment + }; + extra = { + 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/dap-ui.nix b/modules/development/nixvim/plugins/dap-ui.nix deleted file mode 100644 index cc25d2d..0000000 --- a/modules/development/nixvim/plugins/dap-ui.nix +++ /dev/null @@ -1,25 +0,0 @@ -# A UI for nvim-dap. -{ config, lib, ... }: -{ - 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-ui/dap-ui.lua b/modules/development/nixvim/plugins/dap-ui/dap-ui.lua new file mode 100644 index 0000000..bcf4fe3 --- /dev/null +++ b/modules/development/nixvim/plugins/dap-ui/dap-ui.lua @@ -0,0 +1,10 @@ +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 diff --git a/modules/development/nixvim/plugins/dap-ui/default.nix b/modules/development/nixvim/plugins/dap-ui/default.nix new file mode 100644 index 0000000..eb83609 --- /dev/null +++ b/modules/development/nixvim/plugins/dap-ui/default.nix @@ -0,0 +1,28 @@ +# A UI for nvim-dap. +{ config, lib, ... }: +{ + 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"; + } + ]; + + # Auto open/close dap-ui with the debug session lifecycle + extraConfigLua = builtins.readFile ./dap-ui.lua; + }; +} diff --git a/modules/development/nixvim/plugins/dap-virtual-text.nix b/modules/development/nixvim/plugins/dap-virtual-text.nix deleted file mode 100644 index 4fea5ca..0000000 --- a/modules/development/nixvim/plugins/dap-virtual-text.nix +++ /dev/null @@ -1,7 +0,0 @@ -# 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-virtual-text/default.nix b/modules/development/nixvim/plugins/dap-virtual-text/default.nix new file mode 100644 index 0000000..4fea5ca --- /dev/null +++ b/modules/development/nixvim/plugins/dap-virtual-text/default.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 deleted file mode 100644 index 02bffa6..0000000 --- a/modules/development/nixvim/plugins/dap.nix +++ /dev/null @@ -1,81 +0,0 @@ -# Debug Adapter Protocol client implementation for Neovim. -{ config, lib, ... }: -{ - config.programs.nixvim = lib.mkIf config.development.nixvim.enable { - plugins.dap = { - enable = true; - }; - - 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"; - } - ]; - - # 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 - ''; - }; -} diff --git a/modules/development/nixvim/plugins/dap/default.nix b/modules/development/nixvim/plugins/dap/default.nix new file mode 100644 index 0000000..97452ac --- /dev/null +++ b/modules/development/nixvim/plugins/dap/default.nix @@ -0,0 +1,67 @@ +# Debug Adapter Protocol client implementation for Neovim. +{ config, lib, ... }: +{ + config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + plugins.dap = { + enable = true; + }; + + 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"; + } + ]; + }; +} diff --git a/modules/development/nixvim/plugins/default.nix b/modules/development/nixvim/plugins/default.nix index 67f7f06..ecc9441 100644 --- a/modules/development/nixvim/plugins/default.nix +++ b/modules/development/nixvim/plugins/default.nix @@ -2,21 +2,21 @@ { ... }: { imports = [ - ./cmp.nix - ./comment.nix - ./dap-ui.nix - ./dap-virtual-text.nix - ./dap.nix - ./gitsigns.nix - ./indent-blankline.nix - ./lsp.nix - ./lualine.nix - ./luasnip.nix - ./noice.nix - ./nvim-tree.nix - ./telescope.nix - ./treesitter.nix - ./web-devicons.nix - ./which-key.nix + ./cmp + ./comment + ./dap-ui + ./dap-virtual-text + ./dap + ./gitsigns + ./indent-blankline + ./lsp + ./lualine + ./luasnip + ./noice + ./nvim-tree + ./telescope + ./treesitter + ./web-devicons + ./which-key ]; } diff --git a/modules/development/nixvim/plugins/gitsigns.nix b/modules/development/nixvim/plugins/gitsigns.nix deleted file mode 100644 index d9bda21..0000000 --- a/modules/development/nixvim/plugins/gitsigns.nix +++ /dev/null @@ -1,112 +0,0 @@ -# Git integration: signs, blame, diffs and hunk operations -{ - config, - lib, - pkgs, - ... -}: -let - base16Colors = import ../../../colors/base16 { inherit config lib pkgs; }; -in -{ - 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 = "┆"; - }; - - signcolumn = false; - 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 base16Colors.colorsWithHashPrefix; { - 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/gitsigns/default.nix b/modules/development/nixvim/plugins/gitsigns/default.nix new file mode 100644 index 0000000..af8b920 --- /dev/null +++ b/modules/development/nixvim/plugins/gitsigns/default.nix @@ -0,0 +1,45 @@ +# Git integration: signs, blame, diffs and hunk operations +{ + config, + lib, + pkgs, + ... +}: +let + base16Colors = import ../../../../colors/base16 { inherit config lib pkgs; }; +in +{ + 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 = "┆"; + }; + + signcolumn = false; + numhl = true; + current_line_blame = false; + current_line_blame_formatter = ", - "; + + on_attach = builtins.readFile ./on-attach.lua; + }; + }; + + highlight = with base16Colors.colorsWithHashPrefix; { + 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/gitsigns/on-attach.lua b/modules/development/nixvim/plugins/gitsigns/on-attach.lua new file mode 100644 index 0000000..5f63330 --- /dev/null +++ b/modules/development/nixvim/plugins/gitsigns/on-attach.lua @@ -0,0 +1,66 @@ +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 diff --git a/modules/development/nixvim/plugins/indent-blankline.nix b/modules/development/nixvim/plugins/indent-blankline.nix deleted file mode 100644 index 6890dbf..0000000 --- a/modules/development/nixvim/plugins/indent-blankline.nix +++ /dev/null @@ -1,13 +0,0 @@ -# Visual indentation guides -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.indent-blankline = lib.mkIf config.development.nixvim.enable { - enable = true; - settings = { - indent = { - char = "┊"; - tab_char = "│"; - }; - }; - }; -} diff --git a/modules/development/nixvim/plugins/indent-blankline/default.nix b/modules/development/nixvim/plugins/indent-blankline/default.nix new file mode 100644 index 0000000..6890dbf --- /dev/null +++ b/modules/development/nixvim/plugins/indent-blankline/default.nix @@ -0,0 +1,13 @@ +# Visual indentation guides +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.indent-blankline = lib.mkIf config.development.nixvim.enable { + enable = true; + settings = { + indent = { + char = "┊"; + tab_char = "│"; + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/lsp.nix b/modules/development/nixvim/plugins/lsp.nix deleted file mode 100644 index 6c64a37..0000000 --- a/modules/development/nixvim/plugins/lsp.nix +++ /dev/null @@ -1,33 +0,0 @@ -# Language Server Protocol configuration -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.lsp = lib.mkIf config.development.nixvim.enable { - enable = true; - inlayHints = true; - autoLoad = true; - - 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"; - }; - }; - }; -} diff --git a/modules/development/nixvim/plugins/lsp/default.nix b/modules/development/nixvim/plugins/lsp/default.nix new file mode 100644 index 0000000..1d56b66 --- /dev/null +++ b/modules/development/nixvim/plugins/lsp/default.nix @@ -0,0 +1,43 @@ +# Language Server Protocol configuration +{ config, lib, ... }: +{ + config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + plugins.lsp = { + enable = true; + inlayHints = true; + autoLoad = true; + + 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"; + }; + }; + }; + + autoCmd = [ + { + event = [ "CursorHold" ]; + pattern = "*"; + callback.__raw = builtins.readFile ./open-diagnostic-float.lua; + } + ]; + }; +} diff --git a/modules/development/nixvim/plugins/lsp/open-diagnostic-float.lua b/modules/development/nixvim/plugins/lsp/open-diagnostic-float.lua new file mode 100644 index 0000000..fbfb9b9 --- /dev/null +++ b/modules/development/nixvim/plugins/lsp/open-diagnostic-float.lua @@ -0,0 +1,3 @@ +function() + vim.diagnostic.open_float(nil, { focus = false }) +end diff --git a/modules/development/nixvim/plugins/lualine.nix b/modules/development/nixvim/plugins/lualine.nix deleted file mode 100644 index 55326ee..0000000 --- a/modules/development/nixvim/plugins/lualine.nix +++ /dev/null @@ -1,97 +0,0 @@ -# Statusline configuration -{ - config, - lib, - pkgs, - ... -}: -let - base16Colors = import ../../../colors/base16 { inherit config lib pkgs; }; -in -{ - config.programs.nixvim.plugins.lualine = lib.mkIf config.development.nixvim.enable { - enable = true; - settings = { - options = { - theme = with base16Colors.colorsWithHashPrefix; { - normal = { - a = { - fg = base00; - bg = base0D; - gui = "bold"; - }; - b = { - fg = base05; - bg = base01; - }; - c = { - fg = base05; - bg = base00; - }; - }; - insert = { - a = { - fg = base00; - bg = base0B; - gui = "bold"; - }; - b = { - fg = base05; - bg = base01; - }; - c = { - fg = base05; - bg = base00; - }; - }; - visual = { - a = { - fg = base00; - bg = base0A; - gui = "bold"; - }; - b = { - fg = base05; - bg = base01; - }; - c = { - fg = base05; - bg = base00; - }; - }; - replace = { - a = { - fg = base00; - bg = base08; - gui = "bold"; - }; - b = { - fg = base05; - bg = base01; - }; - c = { - fg = base05; - bg = base00; - }; - }; - inactive = { - a = { - fg = base04; - bg = base00; - gui = "bold"; - }; - b = { - fg = base04; - bg = base00; - }; - c = { - fg = base04; - bg = base00; - }; - }; - }; - icons_enabled = true; - }; - }; - }; -} diff --git a/modules/development/nixvim/plugins/lualine/default.nix b/modules/development/nixvim/plugins/lualine/default.nix new file mode 100644 index 0000000..a7dd083 --- /dev/null +++ b/modules/development/nixvim/plugins/lualine/default.nix @@ -0,0 +1,97 @@ +# Statusline configuration +{ + config, + lib, + pkgs, + ... +}: +let + base16Colors = import ../../../../colors/base16 { inherit config lib pkgs; }; +in +{ + config.programs.nixvim.plugins.lualine = lib.mkIf config.development.nixvim.enable { + enable = true; + settings = { + options = { + theme = with base16Colors.colorsWithHashPrefix; { + normal = { + a = { + fg = base00; + bg = base0D; + gui = "bold"; + }; + b = { + fg = base05; + bg = base01; + }; + c = { + fg = base05; + bg = base00; + }; + }; + insert = { + a = { + fg = base00; + bg = base0B; + gui = "bold"; + }; + b = { + fg = base05; + bg = base01; + }; + c = { + fg = base05; + bg = base00; + }; + }; + visual = { + a = { + fg = base00; + bg = base0A; + gui = "bold"; + }; + b = { + fg = base05; + bg = base01; + }; + c = { + fg = base05; + bg = base00; + }; + }; + replace = { + a = { + fg = base00; + bg = base08; + gui = "bold"; + }; + b = { + fg = base05; + bg = base01; + }; + c = { + fg = base05; + bg = base00; + }; + }; + inactive = { + a = { + fg = base04; + bg = base00; + gui = "bold"; + }; + b = { + fg = base04; + bg = base00; + }; + c = { + fg = base04; + bg = base00; + }; + }; + }; + icons_enabled = true; + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/luasnip.nix b/modules/development/nixvim/plugins/luasnip.nix deleted file mode 100644 index cab0f62..0000000 --- a/modules/development/nixvim/plugins/luasnip.nix +++ /dev/null @@ -1,7 +0,0 @@ -# Snippet engine for Neovim -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.luasnip = lib.mkIf config.development.nixvim.enable { - enable = true; - }; -} diff --git a/modules/development/nixvim/plugins/luasnip/default.nix b/modules/development/nixvim/plugins/luasnip/default.nix new file mode 100644 index 0000000..cab0f62 --- /dev/null +++ b/modules/development/nixvim/plugins/luasnip/default.nix @@ -0,0 +1,7 @@ +# Snippet engine for Neovim +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.luasnip = lib.mkIf config.development.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/noice.nix b/modules/development/nixvim/plugins/noice.nix deleted file mode 100644 index 8f2ea0d..0000000 --- a/modules/development/nixvim/plugins/noice.nix +++ /dev/null @@ -1,7 +0,0 @@ -# Modern UI for Neovim -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.noice = lib.mkIf config.development.nixvim.enable { - enable = true; - }; -} diff --git a/modules/development/nixvim/plugins/noice/default.nix b/modules/development/nixvim/plugins/noice/default.nix new file mode 100644 index 0000000..8f2ea0d --- /dev/null +++ b/modules/development/nixvim/plugins/noice/default.nix @@ -0,0 +1,7 @@ +# Modern UI for Neovim +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.noice = lib.mkIf config.development.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/nvim-tree.nix b/modules/development/nixvim/plugins/nvim-tree.nix deleted file mode 100644 index f54ada2..0000000 --- a/modules/development/nixvim/plugins/nvim-tree.nix +++ /dev/null @@ -1,56 +0,0 @@ -# File explorer sidebar -{ config, lib, ... }: -{ - 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; - ignore = false; - }; - view = { - width = 30; - }; - 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" - ]; - options.desc = "Toggle file explorer"; - } - ]; - }; -} diff --git a/modules/development/nixvim/plugins/nvim-tree/default.nix b/modules/development/nixvim/plugins/nvim-tree/default.nix new file mode 100644 index 0000000..f54ada2 --- /dev/null +++ b/modules/development/nixvim/plugins/nvim-tree/default.nix @@ -0,0 +1,56 @@ +# File explorer sidebar +{ config, lib, ... }: +{ + 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; + ignore = false; + }; + view = { + width = 30; + }; + 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" + ]; + options.desc = "Toggle file explorer"; + } + ]; + }; +} diff --git a/modules/development/nixvim/plugins/telescope.nix b/modules/development/nixvim/plugins/telescope.nix deleted file mode 100644 index 505a3eb..0000000 --- a/modules/development/nixvim/plugins/telescope.nix +++ /dev/null @@ -1,74 +0,0 @@ -# Fuzzy finder -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.telescope = lib.mkIf config.development.nixvim.enable { - enable = true; - extensions = { - fzf-native.enable = true; # Faster fuzzy sorting - ui-select.enable = true; # Uses telescope for vim.ui.select - }; - settings = { - defaults = { - layout_strategy = "horizontal"; - layout_config = { - horizontal = { - preview_width = 0.55; - results_width = 0.45; - }; - width = 0.87; - height = 0.80; - }; - mappings = { - i = { - "".__raw = "require('telescope.actions').move_selection_previous"; - "".__raw = "require('telescope.actions').move_selection_next"; - "".__raw = "require('telescope.actions').close"; - }; - }; - }; - }; - keymaps = { - # Files - "ff" = { - action = "find_files"; - options.desc = "Find files"; - }; - "fg" = { - action = "live_grep"; - options.desc = "Live grep"; - }; - "fb" = { - action = "buffers"; - options.desc = "Find buffers"; - }; - "fr" = { - action = "oldfiles"; - options.desc = "Recent files"; - }; - - # LSP - "fd" = { - action = "diagnostics"; - options.desc = "Diagnostics"; - }; - "fs" = { - action = "lsp_document_symbols"; - options.desc = "Document symbols"; - }; - - # Misc - "fh" = { - action = "help_tags"; - options.desc = "Help tags"; - }; - "fc" = { - action = "commands"; - options.desc = "Commands"; - }; - "fk" = { - action = "keymaps"; - options.desc = "Find keymaps"; - }; - }; - }; -} diff --git a/modules/development/nixvim/plugins/telescope/default.nix b/modules/development/nixvim/plugins/telescope/default.nix new file mode 100644 index 0000000..505a3eb --- /dev/null +++ b/modules/development/nixvim/plugins/telescope/default.nix @@ -0,0 +1,74 @@ +# Fuzzy finder +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.telescope = lib.mkIf config.development.nixvim.enable { + enable = true; + extensions = { + fzf-native.enable = true; # Faster fuzzy sorting + ui-select.enable = true; # Uses telescope for vim.ui.select + }; + settings = { + defaults = { + layout_strategy = "horizontal"; + layout_config = { + horizontal = { + preview_width = 0.55; + results_width = 0.45; + }; + width = 0.87; + height = 0.80; + }; + mappings = { + i = { + "".__raw = "require('telescope.actions').move_selection_previous"; + "".__raw = "require('telescope.actions').move_selection_next"; + "".__raw = "require('telescope.actions').close"; + }; + }; + }; + }; + keymaps = { + # Files + "ff" = { + action = "find_files"; + options.desc = "Find files"; + }; + "fg" = { + action = "live_grep"; + options.desc = "Live grep"; + }; + "fb" = { + action = "buffers"; + options.desc = "Find buffers"; + }; + "fr" = { + action = "oldfiles"; + options.desc = "Recent files"; + }; + + # LSP + "fd" = { + action = "diagnostics"; + options.desc = "Diagnostics"; + }; + "fs" = { + action = "lsp_document_symbols"; + options.desc = "Document symbols"; + }; + + # Misc + "fh" = { + action = "help_tags"; + options.desc = "Help tags"; + }; + "fc" = { + action = "commands"; + options.desc = "Commands"; + }; + "fk" = { + action = "keymaps"; + options.desc = "Find keymaps"; + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/treesitter.nix b/modules/development/nixvim/plugins/treesitter.nix deleted file mode 100644 index 6150ad2..0000000 --- a/modules/development/nixvim/plugins/treesitter.nix +++ /dev/null @@ -1,18 +0,0 @@ -# Syntax highlighting and parsing -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.treesitter = lib.mkIf config.development.nixvim.enable { - enable = true; - folding = { - enable = true; - }; - settings = { - highlight = { - enable = true; - }; - indent = { - enable = true; - }; - }; - }; -} diff --git a/modules/development/nixvim/plugins/treesitter/default.nix b/modules/development/nixvim/plugins/treesitter/default.nix new file mode 100644 index 0000000..6150ad2 --- /dev/null +++ b/modules/development/nixvim/plugins/treesitter/default.nix @@ -0,0 +1,18 @@ +# Syntax highlighting and parsing +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.treesitter = lib.mkIf config.development.nixvim.enable { + enable = true; + folding = { + enable = true; + }; + settings = { + highlight = { + enable = true; + }; + indent = { + enable = true; + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/web-devicons.nix b/modules/development/nixvim/plugins/web-devicons.nix deleted file mode 100644 index 61ca5e9..0000000 --- a/modules/development/nixvim/plugins/web-devicons.nix +++ /dev/null @@ -1,7 +0,0 @@ -# File icons for various file types -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.web-devicons = lib.mkIf config.development.nixvim.enable { - enable = true; - }; -} diff --git a/modules/development/nixvim/plugins/web-devicons/default.nix b/modules/development/nixvim/plugins/web-devicons/default.nix new file mode 100644 index 0000000..61ca5e9 --- /dev/null +++ b/modules/development/nixvim/plugins/web-devicons/default.nix @@ -0,0 +1,7 @@ +# File icons for various file types +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.web-devicons = lib.mkIf config.development.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/which-key.nix b/modules/development/nixvim/plugins/which-key.nix deleted file mode 100644 index 3a0c0ef..0000000 --- a/modules/development/nixvim/plugins/which-key.nix +++ /dev/null @@ -1,47 +0,0 @@ -# Popup for keybindings -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.which-key = lib.mkIf config.development.nixvim.enable { - enable = true; - settings = { - plugins = { - marks = true; - registers = true; - spelling = { - enabled = true; - }; - }; - 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"; - } - { - __unkeyed-1 = "n"; - group = "+Explorer"; - } - ]; - }; - }; -} diff --git a/modules/development/nixvim/plugins/which-key/default.nix b/modules/development/nixvim/plugins/which-key/default.nix new file mode 100644 index 0000000..3a0c0ef --- /dev/null +++ b/modules/development/nixvim/plugins/which-key/default.nix @@ -0,0 +1,47 @@ +# Popup for keybindings +{ config, lib, ... }: +{ + config.programs.nixvim.plugins.which-key = lib.mkIf config.development.nixvim.enable { + enable = true; + settings = { + plugins = { + marks = true; + registers = true; + spelling = { + enabled = true; + }; + }; + 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"; + } + { + __unkeyed-1 = "n"; + group = "+Explorer"; + } + ]; + }; + }; +} -- cgit v1.2.3