From 48293bd6b6b791b9af745e9b7b94a6856e279fa0 Mon Sep 17 00:00:00 2001 From: Silvan Mosberger Date: Sat, 2 Oct 2021 16:37:22 +0200 Subject: lib/types: Make types.anything merge functions Previously it would give an error if there were multiple function definitions. --- lib/tests/modules.sh | 4 +++- lib/tests/modules/types-anything/functions.nix | 12 +++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'lib/tests') diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index 2e57c2f8e2a..b51db91f6b0 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -254,8 +254,10 @@ checkConfigOutput / config.value.path ./types-anything/equal-atoms.nix checkConfigOutput null config.value.null ./types-anything/equal-atoms.nix checkConfigOutput 0.1 config.value.float ./types-anything/equal-atoms.nix # Functions can't be merged together -checkConfigError "The option .* has conflicting definition values" config.value.multiple-lambdas ./types-anything/functions.nix +checkConfigError "The option .value.multiple-lambdas.. has conflicting option types" config.applied.multiple-lambdas ./types-anything/functions.nix checkConfigOutput '' config.value.single-lambda ./types-anything/functions.nix +checkConfigOutput 'null' config.applied.merging-lambdas.x ./types-anything/functions.nix +checkConfigOutput 'null' config.applied.merging-lambdas.y ./types-anything/functions.nix # Check that all mk* modifiers are applied checkConfigError 'attribute .* not found' config.value.mkiffalse ./types-anything/mk-mods.nix checkConfigOutput '{ }' config.value.mkiftrue ./types-anything/mk-mods.nix diff --git a/lib/tests/modules/types-anything/functions.nix b/lib/tests/modules/types-anything/functions.nix index 07951891391..21edd4aff9c 100644 --- a/lib/tests/modules/types-anything/functions.nix +++ b/lib/tests/modules/types-anything/functions.nix @@ -1,16 +1,22 @@ -{ lib, ... }: { +{ lib, config, ... }: { options.value = lib.mkOption { type = lib.types.anything; }; + options.applied = lib.mkOption { + default = lib.mapAttrs (name: fun: fun null) config.value; + }; + config = lib.mkMerge [ { value.single-lambda = x: x; - value.multiple-lambdas = x: x; + value.multiple-lambdas = x: { inherit x; }; + value.merging-lambdas = x: { inherit x; }; } { - value.multiple-lambdas = x: x; + value.multiple-lambdas = x: [ x ]; + value.merging-lambdas = y: { inherit y; }; } ]; -- cgit 1.4.1