From 238e4bf68efd5d0df07af8a8c52f47f1948ced58 Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Wed, 1 May 2024 01:50:34 +0300 Subject: [PATCH] modules: add gitsigns --- lib/types.nix | 1 - module-list.nix | 1 + modules/plugins/gitsigns.nix | 38 ++++++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 modules/plugins/gitsigns.nix diff --git a/lib/types.nix b/lib/types.nix index c4e941b..1646dcb 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -129,7 +129,6 @@ let genConfig = mkOption { type = types.attrs; - readOnly = true; internal = true; }; }; diff --git a/module-list.nix b/module-list.nix index f797d67..a5e11c7 100644 --- a/module-list.nix +++ b/module-list.nix @@ -15,6 +15,7 @@ ./modules/plugins/style/neoformat.nix ./modules/plugins/navigation/telescope.nix ./modules/plugins/navigation/nvim-tree.nix + ./modules/plugins/gitsigns.nix ################################################## (pkgs.path + "/nixos/modules/misc/assertions.nix") diff --git a/modules/plugins/gitsigns.nix b/modules/plugins/gitsigns.nix new file mode 100644 index 0000000..90a69b1 --- /dev/null +++ b/modules/plugins/gitsigns.nix @@ -0,0 +1,38 @@ +{ config, lib, pkgs, ... }: + +let cfg = config.plugins.gitsigns; in + +{ + options.plugins.gitsigns = with lib; { + enable = mkEnableOption "gitsigns-nvim"; + + package = mkPackageOption pkgs.vimPlugins "gitsigns-nvim" { }; + + settings = mkOption { + type = types.attrs; + default = { }; + }; + + keymap.set = mkOption { + type = with types; listOf keymap; + }; + }; + + config = lib.mkIf cfg.enable { + fn.gitsigns-nvim-on-attach = { + args = [ "bufnr" ]; + settings = { bufnr }: { + vim.keymap.set = map (attrs: attrs // { buffer = bufnr; }) cfg.keymap.set; + }; + }; + + plugin.gitsigns-nvim = { + name = "gitsigns"; + varName = "gs"; + package = cfg.package; + setupSettings = cfg.settings // { + on_attach = config.fn.gitsigns-nvim-on-attach.lambda; + }; + }; + }; +}