From 31206e44e128926cb04a6e1c023f07c41541ee7f Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Tue, 17 Mar 2020 20:21:10 +0100 Subject: lib/modules: Test the ability for config to depend on options for compatibility --- lib/tests/modules.sh | 5 +++++ lib/tests/modules/define-option-dependently.nix | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 lib/tests/modules/define-option-dependently.nix (limited to 'lib') diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index 8cd632a439c..d87f9db0a90 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -185,6 +185,11 @@ checkConfigError 'The option .* defined in .* does not exist' config.enable ./di # Check that imports can depend on derivations checkConfigOutput "true" config.enable ./import-from-store.nix +# Check that configs can be conditional on option existence +checkConfigOutput true config.enable ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix +checkConfigOutput 360 config.value ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix +checkConfigOutput 7 config.value ./define-option-dependently.nix ./declare-int-positive-value.nix + # Check attrsOf and lazyAttrsOf. Only lazyAttrsOf should be lazy, and only # attrsOf should work with conditional definitions # In addition, lazyAttrsOf should honor an options emptyValue diff --git a/lib/tests/modules/define-option-dependently.nix b/lib/tests/modules/define-option-dependently.nix new file mode 100644 index 00000000000..6abce29366a --- /dev/null +++ b/lib/tests/modules/define-option-dependently.nix @@ -0,0 +1,16 @@ +{ lib, options, ... }: + +# Some modules may be distributed separately and need to adapt to other modules +# that are distributed and versioned separately. +{ + + # Always defined, but the value depends on the presence of an option. + config = { + value = if options ? enable then 360 else 7; + } + # Only define if possible. + // lib.optionalAttrs (options ? enable) { + enable = true; + }; + +} -- cgit 1.4.1