summary refs log tree commit diff
path: root/lib/tests/modules/adhoc-freeformType-survives-type-merge.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tests/modules/adhoc-freeformType-survives-type-merge.nix')
-rw-r--r--lib/tests/modules/adhoc-freeformType-survives-type-merge.nix14
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 00000000000..3cefb543c25
--- /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";
+}