diff --git a/flake/lib.nix b/flake/lib.nix index 04798f14..95b1290d 100644 --- a/flake/lib.nix +++ b/flake/lib.nix @@ -13,9 +13,8 @@ # Public `lib` flake output flake.lib = { - nixvim = lib.makeOverridable (import ../lib/top-level.nix) { + nixvim = lib.makeOverridable ({ lib }: (lib.extend self.lib.overlay).nixvim) { inherit lib; - flake = self; }; overlay = lib.makeOverridable (import ../lib/overlay.nix) { flake = self; diff --git a/lib/overlay.nix b/lib/overlay.nix index 92e453e8..ac76f151 100644 --- a/lib/overlay.nix +++ b/lib/overlay.nix @@ -27,10 +27,7 @@ */ lib: prevLib: { # Add Nixvim's section to the lib - nixvim = flake.lib.nixvim.override { - inherit lib; - _isExtended = true; - }; + nixvim = import ./top-level.nix { inherit flake lib; }; # Extend the maintainers set with Nixvim-specific maintainers maintainers = prevLib.maintainers // import ./maintainers.nix; diff --git a/lib/top-level.nix b/lib/top-level.nix index 6f73231c..422c4347 100644 --- a/lib/top-level.nix +++ b/lib/top-level.nix @@ -1,17 +1,33 @@ +/** + Construct Nixvim's section of the lib: `lib.nixvim`. + + This function requires the final extended lib (as produced by `./overlay.nix`) + and should not usually be imported directly. + + The flake output `.lib.nixvim` provides an instance of Nixvim's lib section. + + # Inputs + + `flake` + : The nixvim flake. + + `lib` + : The final extended lib. +*/ { lib, flake, - _isExtended ? false, }: lib.makeExtensible ( self: let # Used when importing parts of our lib call = lib.callPackageWith { - inherit call self; - # TODO: this would be much simpler if `lib` & `self` were kept explicitly separate - # Doing so should also improve overridability and simplify bootstrapping. - lib = if _isExtended then lib else lib.extend flake.lib.overlay; + inherit + call + self + lib + ; }; in {