lib/plugins: make plugin optional when lazy-loading

This commit is contained in:
Heitor Augusto 2024-12-26 07:13:32 -03:00 committed by nix-infra-bot
parent 87b2679d6f
commit f878289722
5 changed files with 22 additions and 1 deletions

View file

@ -46,6 +46,7 @@ lib.makeExtensible (
inherit (self.options)
defaultNullOpts
mkAutoLoadOption
mkCompositeOption
mkCompositeOption'
mkLazyLoadOption

View file

@ -381,5 +381,18 @@ rec {
}
);
};
mkAutoLoadOption =
cfg: name:
lib.mkOption {
description = ''
Whether to automatically load ${name} when neovim starts.
'';
type = types.bool;
default = !(cfg.lazyLoad.enable or false);
defaultText =
if cfg ? lazyLoad then lib.literalMD "`false` when lazy-loading is enabled." else true;
example = false;
};
}
// removed

View file

@ -74,6 +74,7 @@ let
options = lib.setAttrByPath loc (
{
enable = lib.mkEnableOption packPathName;
autoLoad = lib.nixvim.mkAutoLoadOption cfg packPathName;
lazyLoad = lib.nixvim.mkLazyLoadOption packPathName;
}
// lib.optionalAttrs hasSettings {

View file

@ -67,6 +67,7 @@ let
options = lib.setAttrByPath loc (
{
enable = lib.mkEnableOption packPathName;
autoLoad = lib.nixvim.mkAutoLoadOption cfg packPathName;
}
// settingsOption
// extraOptions

View file

@ -74,7 +74,12 @@
};
config = lib.mkIf cfg.enable {
extraPlugins = [ (cfg.packageDecorator cfg.package) ];
extraPlugins = [
{
plugin = cfg.packageDecorator cfg.package;
optional = !cfg.autoLoad;
}
];
};
};
}