2022-01-02 13:11:21 +00:00
|
|
|
let
|
2022-01-07 00:09:46 +00:00
|
|
|
# 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);
|
|
|
|
|
2022-01-04 20:54:35 +00:00
|
|
|
eval-config-minimal = import ./eval-config-minimal.nix { inherit lib; };
|
2022-06-15 14:59:21 +00:00
|
|
|
|
|
|
|
testing-lib = import ./testing/default.nix { inherit lib; };
|
2022-01-02 13:11:21 +00:00
|
|
|
in
|
2022-01-04 20:54:35 +00:00
|
|
|
/*
|
|
|
|
This attribute set appears as lib.nixos in the flake, or can be imported
|
|
|
|
using a binding like `nixosLib = import (nixpkgs + "/nixos/lib") { }`.
|
|
|
|
*/
|
2022-01-02 13:11:21 +00:00
|
|
|
{
|
2022-01-07 00:09:46 +00:00
|
|
|
inherit (seqAttrsIf (!featureFlags?minimalModules) minimalModulesWarning eval-config-minimal)
|
2022-01-04 20:54:35 +00:00
|
|
|
evalModules
|
|
|
|
;
|
2022-06-15 14:59:21 +00:00
|
|
|
|
|
|
|
inherit (testing-lib)
|
|
|
|
evalTest
|
|
|
|
runTest
|
|
|
|
;
|
|
|
|
|
2022-01-02 13:11:21 +00:00
|
|
|
}
|