From 0d3ad9e7ffca6d63ee1e7548b3ef88cb5ea7bc41 Mon Sep 17 00:00:00 2001 From: Emily Date: Sun, 16 Jul 2023 20:09:12 +0100 Subject: [PATCH 1/2] documentation: use `eval-config.nix` Avoid letting the module evaluation for the documentation drift out of sync with how system configurations are evaluated. --- modules/documentation/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/documentation/default.nix b/modules/documentation/default.nix index 2f3bb9a4..49bba723 100644 --- a/modules/documentation/default.nix +++ b/modules/documentation/default.nix @@ -11,9 +11,9 @@ let regularConfig = config; argsModule = { - config._module.args = regularConfig._module.args // { + config._module.args = lib.mkForce (regularConfig._module.args // { modules = [ ]; - }; + }); }; /* For the purpose of generating docs, evaluate options with each derivation @@ -28,8 +28,9 @@ let inherit (config.system) nixpkgsRevision; options = let - scrubbedEval = evalModules { - modules = baseModules ++ [ argsModule ]; + scrubbedEval = import ../../eval-config.nix { + inherit lib; + modules = [ argsModule ]; specialArgs = { pkgs = scrubDerivations "pkgs" pkgs; }; }; scrubDerivations = namePrefix: pkgSet: mapAttrs From 724937461f2326bbe512c5d03b145ac8381624b4 Mon Sep 17 00:00:00 2001 From: Emily Date: Sun, 16 Jul 2023 20:09:12 +0100 Subject: [PATCH 2/2] eval-config: set `class` See [the Nixpkgs manual]. This allows modules to declare themselves as being only for NixOS or nix-darwin, reducing compatibility risks. Unmarked modules will continue to behave as before. Technically a breaking change, but any configuration importing a module explicitly marked as NixOS-specific was probably broken already. [the Nixpkgs manual]: https://nixos.org/manual/nixpkgs/unstable/#module-system-lib-evalModules-param-class --- eval-config.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/eval-config.nix b/eval-config.nix index 9663849a..57a03814 100644 --- a/eval-config.nix +++ b/eval-config.nix @@ -16,6 +16,7 @@ let }; eval = lib.evalModules (builtins.removeAttrs args [ "lib" ] // { + class = "darwin"; modules = modules ++ [ argsModule ] ++ baseModules; specialArgs = { modulesPath = builtins.toString ./modules; } // specialArgs; });