lib/modules: disallow setting config, options in specialArgs of evalModules (#388834)

This commit is contained in:
Johannes Kirschbauer
2025-03-18 16:00:53 +00:00
committed by GitHub
4 changed files with 42 additions and 0 deletions
+3
View File
@@ -5,6 +5,7 @@ let
addErrorContext
all
any
assertMsg
attrByPath
attrNames
catAttrs
@@ -101,6 +102,8 @@ let
, # This would be remove in the future, Prefer _module.check option instead.
check ? true
}:
assert assertMsg (!specialArgs?config) "Do not set config in the specialArgs argument to evalModules.";
assert assertMsg (!specialArgs?options) "Do not set options in the specialArgs argument to evalModules.";
let
withWarnings = x:
warnIf (evalModulesArgs?args) "The args argument to evalModules is deprecated. Please set config._module.args instead."
+3
View File
@@ -137,6 +137,9 @@ checkConfigOutput '^true$' config.result ./module-argument-default.nix
# gvariant
checkConfigOutput '^true$' config.assertion ./gvariant.nix
# specialArgs checks for evalModules
checkConfigError 'Do not set config in the specialArgs argument to evalModules\.' config.fail.config ./specialArgs-config.nix
checkConfigError 'Do not set options in the specialArgs argument to evalModules\.' config.fail.config ./specialArgs-options.nix
checkConfigOutput '"ok"' config.result ./specialArgs-lib.nix
# https://github.com/NixOS/nixpkgs/pull/131205
+18
View File
@@ -0,0 +1,18 @@
{ lib, ... }:
{
config = {
_module.freeformType = lib.types.anything;
fail = lib.evalModules {
specialArgs = {
config = { };
};
modules = [
{
options.a = lib.mkEnableOption "a";
config.a = true;
}
];
};
};
}
+18
View File
@@ -0,0 +1,18 @@
{ lib, ... }:
{
config = {
_module.freeformType = lib.types.anything;
fail = lib.evalModules {
specialArgs = {
options = { };
};
modules = [
{
options.a = lib.mkEnableOption "a";
config.a = true;
}
];
};
};
}