summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRobert Hensing <roberth@users.noreply.github.com>2022-08-31 15:27:03 +0200
committerGitHub <noreply@github.com>2022-08-31 15:27:03 +0200
commit3ebb588ab306190ce0823d3f9cbeb993d959cf45 (patch)
treed011375c48139d10c9626b033554d1c2deb0f288 /lib
parentc531b409f666b101bbb3f4937db7fb15e4e874b2 (diff)
parente2cc36197053c087b16009750fd3e60029600e25 (diff)
Merge pull request #188289 from erikarvstedt/fix-disabled-modules-abs-paths
lib.modules: support strings with absolute paths in `disabledModules`
Diffstat (limited to 'lib')
-rw-r--r--lib/modules.nix4
-rwxr-xr-xlib/tests/modules.sh1
-rw-r--r--lib/tests/modules/disable-define-enable-string-path.nix5
3 files changed, 9 insertions, 1 deletions
diff --git a/lib/modules.nix b/lib/modules.nix
index 7f1646e9b8bc..6a1b0bfdc4fa 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -433,7 +433,9 @@ rec {
# modules recursively. It returns the final list of unique-by-key modules
filterModules = modulesPath: { disabled, modules }:
let
- moduleKey = m: if isString m then toString modulesPath + "/" + m else toString m;
+ moduleKey = m: if isString m && (builtins.substring 0 1 m != "/")
+ then toString modulesPath + "/" + m
+ else toString m;
disabledKeys = map moduleKey disabled;
keyFilter = filter (attrs: ! elem attrs.key disabledKeys);
in map (attrs: attrs.module) (builtins.genericClosure {
diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh
index c92cc62023b5..2ef7c4806595 100755
--- a/lib/tests/modules.sh
+++ b/lib/tests/modules.sh
@@ -130,6 +130,7 @@ checkConfigOutput '^true$' "$@" ./define-enable.nix ./define-attrsOfSub-foo-enab
set -- config.enable ./define-enable.nix ./declare-enable.nix
checkConfigOutput '^true$' "$@"
checkConfigOutput '^false$' "$@" ./disable-define-enable.nix
+checkConfigOutput '^false$' "$@" ./disable-define-enable-string-path.nix
checkConfigError "The option .*enable.* does not exist. Definition values:\n\s*- In .*: true" "$@" ./disable-declare-enable.nix
checkConfigError "attribute .*enable.* in selection path .*config.enable.* not found" "$@" ./disable-define-enable.nix ./disable-declare-enable.nix
checkConfigError "attribute .*enable.* in selection path .*config.enable.* not found" "$@" ./disable-enable-modules.nix
diff --git a/lib/tests/modules/disable-define-enable-string-path.nix b/lib/tests/modules/disable-define-enable-string-path.nix
new file mode 100644
index 000000000000..6429a6d6354a
--- /dev/null
+++ b/lib/tests/modules/disable-define-enable-string-path.nix
@@ -0,0 +1,5 @@
+{ lib, ... }:
+
+{
+ disabledModules = [ (toString ./define-enable.nix) ];
+}