diff options
author | Robert Hensing <robert@roberthensing.nl> | 2022-01-07 01:09:46 +0100 |
---|---|---|
committer | Robert Hensing <robert@roberthensing.nl> | 2022-01-10 12:36:57 +0100 |
commit | d3f956aba324a18bfafde59138929b320a9b4a2b (patch) | |
tree | 2a49888b9a67caaccd3b43eab4e09834881072c3 | |
parent | 25caf736d5c16fa0c026c26ff4e7b7779fcbb7ae (diff) | |
download | nixpkgs-d3f956aba324a18bfafde59138929b320a9b4a2b.tar nixpkgs-d3f956aba324a18bfafde59138929b320a9b4a2b.tar.gz nixpkgs-d3f956aba324a18bfafde59138929b320a9b4a2b.tar.bz2 nixpkgs-d3f956aba324a18bfafde59138929b320a9b4a2b.tar.lz nixpkgs-d3f956aba324a18bfafde59138929b320a9b4a2b.tar.xz nixpkgs-d3f956aba324a18bfafde59138929b320a9b4a2b.tar.zst nixpkgs-d3f956aba324a18bfafde59138929b320a9b4a2b.zip |
nixos/lib: Add featureFlags, use it for minimal modules
-rw-r--r-- | nixos/lib/default.nix | 24 | ||||
-rw-r--r-- | nixos/lib/eval-config-minimal.nix | 13 | ||||
-rw-r--r-- | nixos/tests/all-tests.nix | 6 |
3 files changed, 32 insertions, 11 deletions
diff --git a/nixos/lib/default.nix b/nixos/lib/default.nix index 41ae2d863e0..2b3056e0145 100644 --- a/nixos/lib/default.nix +++ b/nixos/lib/default.nix @@ -1,5 +1,25 @@ -{ lib ? import ../../lib, ... }: let + # The warning is in a top-level let binding so it is only printed once. + minimalModulesWarning = warn "lib.nixos.evalModules is experimental and subject to change. See nixos/lib/default.nix" null; + inherit (nonExtendedLib) warn; + nonExtendedLib = import ../../lib; +in +{ # Optional. Allows an extended `lib` to be used instead of the regular Nixpkgs lib. + lib ? nonExtendedLib, + + # Feature flags allow you to opt in to unfinished code. These may change some + # behavior or disable warnings. + featureFlags ? {}, + + # This file itself is rather new, so we accept unknown parameters to be forward + # compatible. This is generally not recommended, because typos go undetected. + ... +}: +let + seqIf = cond: if cond then builtins.seq else a: b: b; + # If cond, force `a` before returning any attr + seqAttrsIf = cond: a: lib.mapAttrs (_: v: seqIf cond a v); + eval-config-minimal = import ./eval-config-minimal.nix { inherit lib; }; in /* @@ -7,7 +27,7 @@ in using a binding like `nixosLib = import (nixpkgs + "/nixos/lib") { }`. */ { - inherit (eval-config-minimal) + inherit (seqAttrsIf (!featureFlags?minimalModules) minimalModulesWarning eval-config-minimal) evalModules ; } diff --git a/nixos/lib/eval-config-minimal.nix b/nixos/lib/eval-config-minimal.nix index a0fcf238977..ed26e623b2f 100644 --- a/nixos/lib/eval-config-minimal.nix +++ b/nixos/lib/eval-config-minimal.nix @@ -1,10 +1,7 @@ -let - # The warning is in a top-level let binding so it is only printed once. - experimentalWarning = warn "lib.nixos.evalModules is experimental and subject to change. See nixos/lib/default.nix" null; - inherit (nonExtendedLib) warn; - nonExtendedLib = import ../../lib; -in -{ lib ? nonExtendedLib, bypassEvalModulesWarning ? false, ... }: + +# DO NOT IMPORT. Use nixpkgsFlake.lib.nixos, or import (nixpkgs + "/nixos/lib") +{ lib }: # read -^ + let /* @@ -43,5 +40,5 @@ let in { - evalModules = builtins.seq (if bypassEvalModulesWarning then null else experimentalWarning) evalModules; + inherit evalModules; } diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index d7971f6c2eb..0dee1a0e8b0 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -20,7 +20,11 @@ let if elem system systems then handleTest path args else {}; - nixosLib = import ../lib {}; + nixosLib = import ../lib { + # Experimental features need testing too, but there's no point in warning + # about it, so we enable the feature flag. + featureFlags.minimalModules = {}; + }; evalMinimalConfig = module: nixosLib.evalModules { modules = [ module ]; }; in { |