{lib, ...}: with lib; with builtins; { options.vim.git = { enable = mkEnableOption "Git support"; gitsigns = { enable = mkEnableOption "gitsigns"; mappings = { nextHunk = mkMappingOption "Next hunk [Gitsigns]" "]c"; previousHunk = mkMappingOption "Previous hunk [Gitsigns]" "[c"; stageHunk = mkMappingOption "Stage hunk [Gitsigns]" "hs"; undoStageHunk = mkMappingOption "Undo stage hunk [Gitsigns]" "hu"; resetHunk = mkMappingOption "Reset hunk [Gitsigns]" "hr"; stageBuffer = mkMappingOption "Stage buffer [Gitsigns]" "hS"; resetBuffer = mkMappingOption "Reset buffer [Gitsigns]" "hR"; previewHunk = mkMappingOption "Preview hunk [Gitsigns]" "hP"; blameLine = mkMappingOption "Blame line [Gitsigns]" "hb"; toggleBlame = mkMappingOption "Toggle blame [Gitsigns]" "tb"; diffThis = mkMappingOption "Diff this [Gitsigns]" "hd"; diffProject = mkMappingOption "Diff project [Gitsigns]" "hD"; toggleDeleted = mkMappingOption "Toggle deleted [Gitsigns]" "td"; }; codeActions = mkEnableOption "gitsigns codeactions through null-ls"; }; }; }