diff options
-rw-r--r-- | lib/modules.nix | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/modules.nix b/lib/modules.nix index 79d54e4a538..4c4d9f994da 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -761,13 +761,13 @@ rec { options = opt.options or (throw "Option `${showOption loc}' has type optionSet but has no option attribute, in ${showFiles opt.declarations}."); f = tp: - let optionSetIn = type: (tp.name == type) && (tp.functor.wrapped.name == "optionSet"); - in if tp.name == "option set" || tp.name == "submodule" then throw "The option ${showOption loc} uses submodules without a wrapping type, in ${showFiles opt.declarations}." - else if optionSetIn "attrsOf" then types.attrsOf (types.submodule options) - else if optionSetIn "listOf" then types.listOf (types.submodule options) - else if optionSetIn "nullOr" then types.nullOr (types.submodule options) + else if (tp.functor.wrapped.name or null) == "optionSet" then + if tp.name == "attrsOf" then types.attrsOf (types.submodule options) + else if tp.name == "listOf" then types.listOf (types.submodule options) + else if tp.name == "nullOr" then types.nullOr (types.submodule options) + else tp else tp; in if opt.type.getSubModules or null == null |