plugins/instant: switch to mkPlugin

This commit is contained in:
Gaetan Lepage 2024-01-08 15:41:27 +01:00 committed by Gaétan Lepage
parent 1a7a726a98
commit c29a33d38a
2 changed files with 75 additions and 102 deletions

View file

@ -1,109 +1,83 @@
{ {
lib, lib,
helpers,
config,
pkgs, pkgs,
... ...
}: } @ args:
with lib; { with lib;
options.plugins.instant = { with import ../helpers.nix {inherit lib;};
enable = mkEnableOption "instant.nvim"; mkPlugin args {
name = "instant";
description = "instant.nvim";
package = pkgs.vimPlugins.instant-nvim;
globalPrefix = "instant_";
package = helpers.mkPackageOption "instant" pkgs.vimPlugins.instant-nvim; options = let
mkStr = global: default: desc:
mkDefaultOpt {
inherit global;
type = types.str;
description = ''
${desc}
username = mkOption { Default: ${default}
type = with types; nullOr str; '';
};
in {
username = mkDefaultOpt {
type = types.str;
description = '' description = ''
Username. Username.
Explicitly set to `null` if you do not want this option to be set. Explicitly set to `null` if you do not want this option to be set.
''; '';
}; };
onlyCwd = helpers.defaultNullOpts.mkBool true '' onlyCwd = mkDefaultOpt {
type = types.bool;
description = ''
Choose whether to share files only in the current working directory in session mode. Choose whether to share files only in the current working directory in session mode.
'';
cursorHlGroupUser1 = helpers.defaultNullOpts.mkStr "Cursor" '' Default: `true`
'';
};
cursorHlGroupUser1 = mkStr "cursor_hl_group_user_1" "Cursor" ''
Cursor highlight group for user 1. Cursor highlight group for user 1.
''; '';
cursorHlGroupUser2 = helpers.defaultNullOpts.mkStr "Cursor" '' cursorHlGroupUser2 = mkStr "cursor_hl_group_user_2" "Cursor" ''
Cursor highlight group for user 2. Cursor highlight group for user 2.
''; '';
cursorHlGroupUser3 = helpers.defaultNullOpts.mkStr "Cursor" '' cursorHlGroupUser3 = mkStr "cursor_hl_group_user_3" "Cursor" ''
Cursor highlight group for user 3. Cursor highlight group for user 3.
''; '';
cursorHlGroupUser4 = helpers.defaultNullOpts.mkStr "Cursor" '' cursorHlGroupUser4 = mkStr "cursor_hl_group_user_4" "Cursor" ''
Cursor highlight group for user 4. Cursor highlight group for user 4.
''; '';
cursorHlGroupDefault = helpers.defaultNullOpts.mkStr "Cursor" '' cursorHlGroupDefault = mkStr "cursor_hl_group_default" "Cursor" ''
Cursor highlight group for any other userr. Cursor highlight group for any other userr.
''; '';
nameHlGroupUser1 = helpers.defaultNullOpts.mkStr "CursorLineNr" '' nameHlGroupUser1 = mkStr "name_hl_group_user_1" "CursorLineNr" ''
Virtual text highlight group for user 1. Virtual text highlight group for user 1.
''; '';
nameHlGroupUser2 = helpers.defaultNullOpts.mkStr "CursorLineNr" '' nameHlGroupUser2 = mkStr "name_hl_group_user_2" "CursorLineNr" ''
Virtual text highlight group for user 2. Virtual text highlight group for user 2.
''; '';
nameHlGroupUser3 = helpers.defaultNullOpts.mkStr "CursorLineNr" '' nameHlGroupUser3 = mkStr "name_hl_group_user_3" "CursorLineNr" ''
Virtual text highlight group for user 3. Virtual text highlight group for user 3.
''; '';
nameHlGroupUser4 = helpers.defaultNullOpts.mkStr "CursorLineNr" '' nameHlGroupUser4 = mkStr "name_hl_group_user_4" "CursorLineNr" ''
Virtual text highlight group for user 4. Virtual text highlight group for user 4.
''; '';
nameHlGroupDefault = helpers.defaultNullOpts.mkStr "CursorLineNr" '' nameHlGroupDefault = mkStr "name_hl_group_default" "CursorLineNr" ''
Virtual text highlight group for any other user. Virtual text highlight group for any other user.
''; '';
extraOptions = mkOption {
type = types.attrs;
default = {};
description = ''
Extra configuration options for instant without the 'instant_' prefix.
Example: To set 'instant_foobar' to 1, write
```nix
extraConfig = {
foobar = true;
}; };
```
'';
};
};
config = let
cfg = config.plugins.instant;
in
mkIf cfg.enable {
extraPlugins = [cfg.package];
globals =
mapAttrs'
(name: nameValuePair ("instant_" + name))
(
with cfg;
{
inherit username;
only_cwd = onlyCwd;
cursor_hl_group_user_1 = cursorHlGroupUser1;
cursor_hl_group_user_2 = cursorHlGroupUser2;
cursor_hl_group_user_3 = cursorHlGroupUser3;
cursor_hl_group_user_4 = cursorHlGroupUser4;
cursor_hl_group_default = cursorHlGroupDefault;
name_hl_group_user_1 = nameHlGroupUser1;
name_hl_group_user_2 = nameHlGroupUser2;
name_hl_group_user_3 = nameHlGroupUser3;
name_hl_group_user_4 = nameHlGroupUser4;
name_hl_group_default = nameHlGroupDefault;
} }
// extraOptions
);
};
}

View file

@ -22,7 +22,6 @@
nameHlGroupUser3 = "CursorLineNr"; nameHlGroupUser3 = "CursorLineNr";
nameHlGroupUser4 = "CursorLineNr"; nameHlGroupUser4 = "CursorLineNr";
nameHlGroupDefault = "CursorLineNr"; nameHlGroupDefault = "CursorLineNr";
extraOptions = {};
}; };
}; };
} }