From 06da97fc3a753e0bbebc03ebd63bb1bde2cdda03 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Fri, 13 May 2022 08:59:27 +0200 Subject: lib.types.functionTo: Support type merging --- lib/tests/modules/functionTo/submodule-options.nix | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 lib/tests/modules/functionTo/submodule-options.nix (limited to 'lib/tests/modules') diff --git a/lib/tests/modules/functionTo/submodule-options.nix b/lib/tests/modules/functionTo/submodule-options.nix new file mode 100644 index 000000000000..7bf708231504 --- /dev/null +++ b/lib/tests/modules/functionTo/submodule-options.nix @@ -0,0 +1,59 @@ +{ lib, config, options, ... }: +let + inherit (lib) types; +in +{ + imports = [ + + # fun..a + ({ ... }: { + options = { + fun = lib.mkOption { + type = types.functionTo (types.submodule { + options.a = lib.mkOption { }; + }); + }; + }; + }) + + # fun..b + ({ ... }: { + options = { + fun = lib.mkOption { + type = types.functionTo (types.submodule { + options.b = lib.mkOption { }; + }); + }; + }; + }) + ]; + + options = { + result = lib.mkOption + { + type = types.str; + default = lib.concatStringsSep " " + (lib.concatLists + (lib.mapAttrsToList + (k: v: + if k == "_module" + then [ ] + else [ (lib.showOption v.loc) ] + ) + ( + (options.fun.type.getSubOptions [ "fun" ]) + ) + ) + ); + }; + }; + + config.fun = lib.mkMerge + [ + (input: { inherit (input) a; }) + (input: { inherit (input) b; }) + (input: { + b = lib.mkForce input.c; + }) + ]; +} -- cgit 1.4.1