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/default.nix | |
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/default.nix')
-rw-r--r-- | nixos/lib/default.nix | 24 |
1 files changed, 22 insertions, 2 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 ; } |