From 55ee7ab4a6b5281cf1c352bc714b07c59c4546ee Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Thu, 10 Mar 2022 20:25:49 +0100 Subject: lib.types.optionType: Only merge when necessary --- .../modules/adhoc-freeformType-survives-type-merge.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 lib/tests/modules/adhoc-freeformType-survives-type-merge.nix (limited to 'lib/tests/modules') 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"; +} -- cgit 1.4.1