diff --git a/lib/default.nix b/lib/default.nix index aea49891..64b92a66 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -46,6 +46,7 @@ lib.makeExtensible ( inherit (self.options) defaultNullOpts + mkAutoLoadOption mkCompositeOption mkCompositeOption' mkLazyLoadOption diff --git a/lib/options.nix b/lib/options.nix index 07b5b6ee..631e52eb 100644 --- a/lib/options.nix +++ b/lib/options.nix @@ -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 diff --git a/lib/plugins/mk-neovim-plugin.nix b/lib/plugins/mk-neovim-plugin.nix index d7cbb119..d995b420 100644 --- a/lib/plugins/mk-neovim-plugin.nix +++ b/lib/plugins/mk-neovim-plugin.nix @@ -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 { diff --git a/lib/plugins/mk-vim-plugin.nix b/lib/plugins/mk-vim-plugin.nix index daa571f1..e5a66b19 100644 --- a/lib/plugins/mk-vim-plugin.nix +++ b/lib/plugins/mk-vim-plugin.nix @@ -67,6 +67,7 @@ let options = lib.setAttrByPath loc ( { enable = lib.mkEnableOption packPathName; + autoLoad = lib.nixvim.mkAutoLoadOption cfg packPathName; } // settingsOption // extraOptions diff --git a/lib/plugins/utils.nix b/lib/plugins/utils.nix index a93e24de..505739d4 100644 --- a/lib/plugins/utils.nix +++ b/lib/plugins/utils.nix @@ -74,7 +74,12 @@ }; config = lib.mkIf cfg.enable { - extraPlugins = [ (cfg.packageDecorator cfg.package) ]; + extraPlugins = [ + { + plugin = cfg.packageDecorator cfg.package; + optional = !cfg.autoLoad; + } + ]; }; }; }