From 909aa0a782c2b853d2aa798eb08e89130416d3d4 Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 24 May 2026 23:54:03 +0100 Subject: [PATCH] wrappers: pass in existing `lib.nixvim` Extracting `specialArgs.lib.nixvim` from the final `programs.nixvim` configuration is neat, but recursive. In non-lazy scenarios, it can end up infinitely recursive. We could extract `specialArgs.lib.nixvim` from another nixvim configuration, such as one of the earlier `extendModules` evaluations, however it is better to avoid evaluating multiple configurations unnecessarily. Instead, revert back to getting `lib.nixvim` from the same configuration we get `extendModules` from. --- modules/wrappers.nix | 5 ++++- wrappers/_shared.nix | 4 +++- wrappers/darwin.nix | 2 ++ wrappers/hm.nix | 2 ++ wrappers/nixos.nix | 2 ++ 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/wrappers.nix b/modules/wrappers.nix index e3a0f68c..d5676b66 100644 --- a/modules/wrappers.nix +++ b/modules/wrappers.nix @@ -4,7 +4,10 @@ ... }: let - importWrapper = lib.flip lib.modules.importApply { inherit extendModules; }; + importWrapper = lib.flip lib.modules.importApply { + inherit extendModules; + nixvimLib = lib.nixvim; + }; in { options.build = { diff --git a/wrappers/_shared.nix b/wrappers/_shared.nix index 924f1ab2..6a005a81 100644 --- a/wrappers/_shared.nix +++ b/wrappers/_shared.nix @@ -1,4 +1,6 @@ { + # A `lib.nixvim` instance + nixvimLib, # Function used to evaluate the `programs.nixvim` configuration extendModules, # Option path where extraFiles should go @@ -86,7 +88,7 @@ in # NOTE: It is important that we use the flake-locked Nixpkgs lib, # so that we can safely use recently added lib features. # TODO: Consider deprecating `_module.args.nixvimLib`? - lib.nixvim = lib.mkDefault finalConfiguration._module.specialArgs.lib.nixvim; + lib.nixvim = lib.mkDefault nixvimLib; _module.args.nixvimLib = lib.mkDefault (lib.extend libOverlay); } diff --git a/wrappers/darwin.nix b/wrappers/darwin.nix index 66bac8da..64c1667e 100644 --- a/wrappers/darwin.nix +++ b/wrappers/darwin.nix @@ -1,4 +1,5 @@ { + nixvimLib, extendModules, }: { @@ -20,6 +21,7 @@ in imports = [ (importApply ./_shared.nix { + inherit nixvimLib; inherit (extendModules { specialArgs.darwinConfig = config; diff --git a/wrappers/hm.nix b/wrappers/hm.nix index f4a4569a..1c1f5624 100644 --- a/wrappers/hm.nix +++ b/wrappers/hm.nix @@ -1,4 +1,5 @@ { + nixvimLib, extendModules, }: { @@ -17,6 +18,7 @@ in imports = [ (import ./_shared.nix { + inherit nixvimLib; inherit (extendModules { specialArgs.hmConfig = config; diff --git a/wrappers/nixos.nix b/wrappers/nixos.nix index f6903684..a8b5bdc1 100644 --- a/wrappers/nixos.nix +++ b/wrappers/nixos.nix @@ -1,4 +1,5 @@ { + nixvimLib, extendModules, }: { @@ -17,6 +18,7 @@ in imports = [ (import ./_shared.nix { + inherit nixvimLib; inherit (extendModules { specialArgs.nixosConfig = config;