about summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2020-03-17 20:21:10 +0100
committerRobert Hensing <robert@roberthensing.nl>2020-03-17 20:21:10 +0100
commit31206e44e128926cb04a6e1c023f07c41541ee7f (patch)
tree34af6b62a7baa6c8abfd19cfd25c442c384b782f /lib
parentb6a5079800f520c3e30bd285c84d67643c973f42 (diff)
downloadnixlib-31206e44e128926cb04a6e1c023f07c41541ee7f.tar
nixlib-31206e44e128926cb04a6e1c023f07c41541ee7f.tar.gz
nixlib-31206e44e128926cb04a6e1c023f07c41541ee7f.tar.bz2
nixlib-31206e44e128926cb04a6e1c023f07c41541ee7f.tar.lz
nixlib-31206e44e128926cb04a6e1c023f07c41541ee7f.tar.xz
nixlib-31206e44e128926cb04a6e1c023f07c41541ee7f.tar.zst
nixlib-31206e44e128926cb04a6e1c023f07c41541ee7f.zip
lib/modules: Test the ability for config to depend on options for compatibility
Diffstat (limited to 'lib')
-rwxr-xr-xlib/tests/modules.sh5
-rw-r--r--lib/tests/modules/define-option-dependently.nix16
2 files changed, 21 insertions, 0 deletions
diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh
index 8cd632a439cd..d87f9db0a900 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 000000000000..6abce29366ae
--- /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;
+  };
+
+}