diff options
author | Robert Hensing <robert@roberthensing.nl> | 2022-02-28 22:57:03 +0100 |
---|---|---|
committer | Robert Hensing <robert@roberthensing.nl> | 2022-03-03 00:29:14 +0100 |
commit | 8baea8b82cc80c6a2843045d5b554f7f65acbc4f (patch) | |
tree | 36e98bae1a6abadbb49096aaa5ae4235996ecf65 /lib | |
parent | 11537c9c0239dc4ae52477faa78a4a0a7bdf206c (diff) | |
download | nixlib-8baea8b82cc80c6a2843045d5b554f7f65acbc4f.tar nixlib-8baea8b82cc80c6a2843045d5b554f7f65acbc4f.tar.gz nixlib-8baea8b82cc80c6a2843045d5b554f7f65acbc4f.tar.bz2 nixlib-8baea8b82cc80c6a2843045d5b554f7f65acbc4f.tar.lz nixlib-8baea8b82cc80c6a2843045d5b554f7f65acbc4f.tar.xz nixlib-8baea8b82cc80c6a2843045d5b554f7f65acbc4f.tar.zst nixlib-8baea8b82cc80c6a2843045d5b554f7f65acbc4f.zip |
lib.modules: Make option injection work when shorthandOnlyDefinesConfig
Diffstat (limited to 'lib')
-rw-r--r-- | lib/modules.nix | 1 | ||||
-rwxr-xr-x | lib/tests/modules.sh | 1 | ||||
-rw-r--r-- | lib/tests/modules/declare-bare-submodule-nested-option.nix | 3 | ||||
-rw-r--r-- | lib/tests/modules/declare-bare-submodule.nix | 8 | ||||
-rw-r--r-- | lib/tests/modules/define-shorthandOnlyDefinesConfig-true.nix | 1 | ||||
-rw-r--r-- | lib/types.nix | 6 |
6 files changed, 17 insertions, 3 deletions
diff --git a/lib/modules.nix b/lib/modules.nix index 7d9c55f9a158..cc045391fcb1 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -496,6 +496,7 @@ rec { options = mkOption { type = types.submoduleWith { modules = [ { options = decl.options; } ]; + shorthandOnlyDefinesConfig = null; }; }; }; diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index e903714a7209..3950d83f584b 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -66,6 +66,7 @@ checkConfigOutput '^1$' config.bare-submodule.nested ./declare-bare-submodule.ni checkConfigOutput '^2$' config.bare-submodule.deep ./declare-bare-submodule.nix ./declare-bare-submodule-deep-option.nix checkConfigOutput '^42$' config.bare-submodule.nested ./declare-bare-submodule.nix ./declare-bare-submodule-nested-option.nix ./declare-bare-submodule-deep-option.nix ./define-bare-submodule-values.nix checkConfigOutput '^420$' config.bare-submodule.deep ./declare-bare-submodule.nix ./declare-bare-submodule-nested-option.nix ./declare-bare-submodule-deep-option.nix ./define-bare-submodule-values.nix +checkConfigOutput '^2$' config.bare-submodule.deep ./declare-bare-submodule.nix ./declare-bare-submodule-deep-option.nix ./define-shorthandOnlyDefinesConfig-true.nix # Check integer types. # unsigned diff --git a/lib/tests/modules/declare-bare-submodule-nested-option.nix b/lib/tests/modules/declare-bare-submodule-nested-option.nix index 009dd4d6cb37..da125c84b25d 100644 --- a/lib/tests/modules/declare-bare-submodule-nested-option.nix +++ b/lib/tests/modules/declare-bare-submodule-nested-option.nix @@ -1,10 +1,11 @@ -{ lib, ... }: +{ config, lib, ... }: let inherit (lib) mkOption types; in { options.bare-submodule = mkOption { type = types.submoduleWith { + shorthandOnlyDefinesConfig = config.shorthandOnlyDefinesConfig; modules = [ { options.nested = mkOption { diff --git a/lib/tests/modules/declare-bare-submodule.nix b/lib/tests/modules/declare-bare-submodule.nix index 298c71e3ca0b..5402f4ff5a50 100644 --- a/lib/tests/modules/declare-bare-submodule.nix +++ b/lib/tests/modules/declare-bare-submodule.nix @@ -1,4 +1,4 @@ -{ lib, ... }: +{ config, lib, ... }: let inherit (lib) mkOption types; in @@ -6,7 +6,13 @@ in options.bare-submodule = mkOption { type = types.submoduleWith { modules = [ ]; + shorthandOnlyDefinesConfig = config.shorthandOnlyDefinesConfig; }; default = {}; }; + + # config-dependent options: won't recommend, but useful for making this test parameterized + options.shorthandOnlyDefinesConfig = mkOption { + default = false; + }; } diff --git a/lib/tests/modules/define-shorthandOnlyDefinesConfig-true.nix b/lib/tests/modules/define-shorthandOnlyDefinesConfig-true.nix new file mode 100644 index 000000000000..bd3a73dce340 --- /dev/null +++ b/lib/tests/modules/define-shorthandOnlyDefinesConfig-true.nix @@ -0,0 +1 @@ +{ shorthandOnlyDefinesConfig = true; } diff --git a/lib/types.nix b/lib/types.nix index 3fcac9c31b31..bd4062d555aa 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -637,7 +637,11 @@ rec { then lhs.specialArgs // rhs.specialArgs else throw "A submoduleWith option is declared multiple times with the same specialArgs \"${toString (attrNames intersecting)}\""; shorthandOnlyDefinesConfig = - if lhs.shorthandOnlyDefinesConfig == rhs.shorthandOnlyDefinesConfig + if lhs.shorthandOnlyDefinesConfig == null + then rhs.shorthandOnlyDefinesConfig + else if rhs.shorthandOnlyDefinesConfig == null + then lhs.shorthandOnlyDefinesConfig + else if lhs.shorthandOnlyDefinesConfig == rhs.shorthandOnlyDefinesConfig then lhs.shorthandOnlyDefinesConfig else throw "A submoduleWith option is declared multiple times with conflicting shorthandOnlyDefinesConfig values"; }; |