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 /nixos/lib | |
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
Diffstat (limited to 'nixos/lib')
-rw-r--r-- | nixos/lib/default.nix | 24 | ||||
-rw-r--r-- | nixos/lib/eval-config-minimal.nix | 13 |
2 files changed, 27 insertions, 10 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; } |