mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 23:13:19 +00:00
nixos/lib: Add featureFlags, use it for minimal modules
This commit is contained in:
parent
25caf736d5
commit
d3f956aba3
@ -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
|
||||
;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user