diff options
author | Robert Hensing <robert@roberthensing.nl> | 2022-03-10 20:25:49 +0100 |
---|---|---|
committer | Robert Hensing <robert@roberthensing.nl> | 2022-03-10 20:25:49 +0100 |
commit | 55ee7ab4a6b5281cf1c352bc714b07c59c4546ee (patch) | |
tree | 88e1047bc4f89890be69997da44acdb5e5bb715c /lib/tests/modules | |
parent | 87fce11f62f21409321ce0f2441f03901c9c8a9f (diff) |
lib.types.optionType: Only merge when necessary
Diffstat (limited to 'lib/tests/modules')
-rw-r--r-- | lib/tests/modules/adhoc-freeformType-survives-type-merge.nix | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/tests/modules/adhoc-freeformType-survives-type-merge.nix b/lib/tests/modules/adhoc-freeformType-survives-type-merge.nix new file mode 100644 index 0000000000000..3cefb543c256b --- /dev/null +++ b/lib/tests/modules/adhoc-freeformType-survives-type-merge.nix @@ -0,0 +1,14 @@ +{ lib, ... }: { + options.dummy = lib.mkOption { type = lib.types.anything; default = {}; }; + freeformType = + let + a = lib.types.attrsOf (lib.types.submodule { options.bar = lib.mkOption { }; }); + in + # modifying types like this breaks type merging. + # This test makes sure that type merging is not performed when only a single declaration exists. + # Don't modify types in practice! + a // { + merge = loc: defs: { freeformItems = a.merge loc defs; }; + }; + config.foo.bar = "ok"; +} |