diff options
author | Robert Hensing <robert@roberthensing.nl> | 2023-04-17 19:48:53 +0200 |
---|---|---|
committer | Robert Hensing <robert@roberthensing.nl> | 2023-05-06 18:32:58 +0200 |
commit | 8054785157119ea12e526481924d6676427904bb (patch) | |
tree | d62be0513289427454c94acc1ef86444249c21f8 /lib/types.nix | |
parent | 8f02e95aff2b9cb94470ec379e2a3f55858cb03d (diff) |
lib/modules: Move class out of specialArgs
Diffstat (limited to 'lib/types.nix')
-rw-r--r-- | lib/types.nix | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/types.nix b/lib/types.nix index 666e6502d161b..e0da18a2febb9 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -696,6 +696,7 @@ rec { , specialArgs ? {} , shorthandOnlyDefinesConfig ? false , description ? null + , class ? null }@attrs: let inherit (lib.modules) evalModules; @@ -707,7 +708,7 @@ rec { ) defs; base = evalModules { - inherit specialArgs; + inherit class specialArgs; modules = [{ # This is a work-around for the fact that some sub-modules, # such as the one included in an attribute set, expects an "args" @@ -762,9 +763,14 @@ rec { functor = defaultFunctor name // { type = types.submoduleWith; payload = { - inherit modules specialArgs shorthandOnlyDefinesConfig description; + inherit modules class specialArgs shorthandOnlyDefinesConfig description; }; binOp = lhs: rhs: { + class = + if lhs.class == null then rhs.class + else if rhs.class == null then lhs.class + else if lhs.class == rhs.class then lhs.class + else throw "A submoduleWith option is declared multiple times with conflicting class values \"${toString lhs.class}\" and \"${toString rhs.class}\"."; modules = lhs.modules ++ rhs.modules; specialArgs = let intersecting = builtins.intersectAttrs lhs.specialArgs rhs.specialArgs; |