Skip to content

Commit

Permalink
Revert "lib/types: Allow paths as submodule values"
Browse files Browse the repository at this point in the history
This reverts commit eec83d4.

This broke hydra evaluation because with this commit submodule values
are allowed to be paths, however the certmgr module uses `either
(submodule ...) path` in its type, meaning it already used paths for
something else which would now be interpreted as a submodule.
  • Loading branch information
infinisil committed Jan 3, 2020
1 parent 804678f commit c7ade68
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 8 deletions.
8 changes: 3 additions & 5 deletions lib/types.nix
Original file line number Diff line number Diff line change
Expand Up @@ -376,16 +376,14 @@ rec {
else unify (if shorthandOnlyDefinesConfig then { config = value; } else value);

allModules = defs: modules ++ imap1 (n: { value, file }:
if isAttrs value || isFunction value then
# Annotate the value with the location of its definition for better error messages
coerce (lib.modules.unifyModuleSyntax file "${toString file}-${toString n}") value
else value
# Annotate the value with the location of its definition for better error messages
coerce (lib.modules.unifyModuleSyntax file "${toString file}-${toString n}") value
) defs;

in
mkOptionType rec {
name = "submodule";
check = x: isAttrs x || isFunction x || path.check x;
check = x: isAttrs x || isFunction x;
merge = loc: defs:
(evalModules {
modules = allModules defs;
Expand Down
6 changes: 3 additions & 3 deletions nixos/doc/manual/development/option-types.xml
Original file line number Diff line number Diff line change
Expand Up @@ -257,9 +257,9 @@
<listitem>
<para>
A set of sub options <replaceable>o</replaceable>.
<replaceable>o</replaceable> can be an attribute set, a function
returning an attribute set, or a path to a file containing such a value. Submodules are used in
composed types to create modular options. This is equivalent to
<replaceable>o</replaceable> can be an attribute set or a function
returning an attribute set. Submodules are used in composed types to
create modular options. This is equivalent to
<literal>types.submoduleWith { modules = toList o; shorthandOnlyDefinesConfig = true; }</literal>.
Submodules are detailed in
<xref
Expand Down

0 comments on commit c7ade68

Please sign in to comment.