summary refs log tree commit diff
path: root/lib/tests/modules
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2022-03-10 20:25:49 +0100
committerRobert Hensing <robert@roberthensing.nl>2022-03-10 20:25:49 +0100
commit55ee7ab4a6b5281cf1c352bc714b07c59c4546ee (patch)
tree88e1047bc4f89890be69997da44acdb5e5bb715c /lib/tests/modules
parent87fce11f62f21409321ce0f2441f03901c9c8a9f (diff)
downloadnixpkgs-55ee7ab4a6b5281cf1c352bc714b07c59c4546ee.tar
nixpkgs-55ee7ab4a6b5281cf1c352bc714b07c59c4546ee.tar.gz
nixpkgs-55ee7ab4a6b5281cf1c352bc714b07c59c4546ee.tar.bz2
nixpkgs-55ee7ab4a6b5281cf1c352bc714b07c59c4546ee.tar.lz
nixpkgs-55ee7ab4a6b5281cf1c352bc714b07c59c4546ee.tar.xz
nixpkgs-55ee7ab4a6b5281cf1c352bc714b07c59c4546ee.tar.zst
nixpkgs-55ee7ab4a6b5281cf1c352bc714b07c59c4546ee.zip
lib.types.optionType: Only merge when necessary
Diffstat (limited to 'lib/tests/modules')
-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";
+}