{...}: { programs.nixvim = { plugins.gitsigns = { enable = true; settings = { signs = { add.text = "▎"; change.text = "▎"; delete.text = "󰐊"; topdelete.text = "󰐊"; changedelete.text = "󰐊"; }; }; }; keymaps = [ { mode = "n"; key = "gs"; action = "Gitsigns stage_hunk"; options = { silent = true; desc = "Stage Hunk"; }; } { mode = "n"; key = "gr"; action = "Gitsigns reset_hunk"; options = { silent = true; desc = "Reset Hunk"; }; } { mode = "v"; key = "gs"; action = "lua function() Gitsigns stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end"; options = { silent = true; desc = "Stage Hunk"; }; } { mode = "v"; key = "gr"; action = "function() gs.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end"; options = { silent = true; desc = "Reset Hunk"; }; } { mode = "n"; key = "gS"; action = "Gitsigns stage_buffer"; options = { silent = true; desc = "Stage Buffer"; }; } { mode = "n"; key = "gu"; action = "Gitsigns undo_stage_hunk"; options = { silent = true; desc = "Undo Stage Hunk"; }; } { mode = "n"; key = "gR"; action = " Gitsigns reset_buffer"; options = { silent = true; desc = "Reset Buffer"; }; } { mode = "n"; key = "gp"; action = " Gitsigns preview_hunk"; options = { silent = true; desc = "Preview Hunk"; }; } { mode = "n"; key = "gb"; action = " Gitsigns toggle_current_line_blame"; options = { silent = true; desc = "Blame"; }; } # { # mode = "n"; # key = "gd"; # action = " Gitsigns diffthis"; # options = { # silent = true; # desc = "Diff"; # }; # } ]; }; }