1
0
Fork 0
mirror of https://github.com/nix-community/nixvim.git synced 2025-11-09 12:06:05 +01:00
nixvim/modules/lazyload.nix
Matt Sturgeon 6d3798e81e modules/lazyload: replace ignoredPackages with isVisible
Instead of explicitly listing all renames and removals, we can check if
the plugin's lazyload option is visible and in the top-level option set.

This rules out cases where `plugins.foo` is itself a rename/removal
option, and cases where `plugins.foo.lazyload` is not visible.
2025-11-08 12:17:05 +00:00

59 lines
1.5 KiB
Nix

{
config,
options,
lib,
...
}:
let
implementations = [
"lz-n"
"lazy"
];
in
{
config = {
assertions =
let
enabled = builtins.filter (x: config.plugins.${x}.enable) implementations;
count = builtins.length enabled;
in
[
{
assertion = count < 2;
message = ''
You have multiple lazy-loaders enabled:
${lib.concatImapStringsSep "\n" (i: x: "${toString i}. plugins.${x}") enabled}
Please ensure only one is enabled at a time.
'';
}
];
warnings =
let
isVisible =
opt:
let
visible = opt.visible or true;
in
if lib.isBool visible then visible else visible == "shallow";
pluginsWithLazyLoad = builtins.filter (
x:
lib.isOption (options.plugins.${x}.lazyload or null)
&& isVisible options.plugins.${x}.lazyload
&& config.plugins.${x}.lazyLoad.enable
) (builtins.attrNames config.plugins);
count = builtins.length pluginsWithLazyLoad;
in
lib.nixvim.mkWarnings "lazy loading" {
when = count > 0 && !config.plugins.lz-n.enable;
message = ''
You have enabled lazy loading support for the following plugins but have not enabled a lazy loading provider.
${lib.concatImapStringsSep "\n" (i: x: "${toString i}. plugins.${x}") pluginsWithLazyLoad}
Currently supported lazy providers:
- lz-n
'';
};
};
}