From 6de9039315c8798f9d56f0045cb454767775138b Mon Sep 17 00:00:00 2001 From: Michael Hoang Date: Sun, 30 Mar 2025 23:11:03 +0900 Subject: [PATCH] lib/modules: add `class` to `specialArgs` Co-Authored-By: Johannes Kirschbauer --- lib/modules.nix | 1 + lib/tests/modules.sh | 12 +++++ .../modules/assert-module-class-is-nixos.nix | 3 ++ lib/tests/modules/class-check.nix | 5 +- lib/tests/modules/expose-module-class.nix | 8 +++ lib/tests/modules/polymorphic-module.nix | 23 ++++++++ lib/tests/modules/specialArgs-class.nix | 54 +++++++++++++++++++ 7 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 lib/tests/modules/assert-module-class-is-nixos.nix create mode 100644 lib/tests/modules/expose-module-class.nix create mode 100644 lib/tests/modules/polymorphic-module.nix create mode 100644 lib/tests/modules/specialArgs-class.nix diff --git a/lib/modules.nix b/lib/modules.nix index 7716e855ebb2..290b9ce0b698 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -257,6 +257,7 @@ let config specialArgs ; + _class = class; } // specialArgs ); diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index 9df6e61797b7..d0f25c283dcb 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -681,6 +681,18 @@ checkConfigOutput '^true$' config.viaConfig ./mkDefinition.nix checkConfigOutput '^true$' config.mkMerge ./mkDefinition.nix checkConfigOutput '^true$' config.mkForce ./mkDefinition.nix +# specialArgs._class +checkConfigOutput '"nixos"' config.nixos.config.foo ./specialArgs-class.nix +checkConfigOutput '"bar"' config.conditionalImportAsNixos.config.foo ./specialArgs-class.nix +checkConfigError 'attribute .*bar.* not found' config.conditionalImportAsNixos.config.bar ./specialArgs-class.nix +checkConfigError 'attribute .*foo.* not found' config.conditionalImportAsDarwin.config.foo ./specialArgs-class.nix +checkConfigOutput '"foo"' config.conditionalImportAsDarwin.config.bar ./specialArgs-class.nix +checkConfigOutput '"nixos"' config.sub.nixos.foo ./specialArgs-class.nix +checkConfigOutput '"bar"' config.sub.conditionalImportAsNixos.foo ./specialArgs-class.nix +checkConfigError 'attribute .*bar.* not found' config.sub.conditionalImportAsNixos.bar ./specialArgs-class.nix +checkConfigError 'attribute .*foo.* not found' config.sub.conditionalImportAsDarwin.foo ./specialArgs-class.nix +checkConfigOutput '"foo"' config.sub.conditionalImportAsDarwin.bar ./specialArgs-class.nix + cat <