From e0ea5f4d9ba5d8553fcadde487b57e6dbd1ff746 Mon Sep 17 00:00:00 2001 From: Silvan Mosberger Date: Fri, 10 Jan 2020 04:00:33 +0100 Subject: [PATCH 1/2] lib/modules: Fix store imports This fixes imports from the store not being possible, which was caused by https://github.com/NixOS/nixpkgs/pull/76857 E.g. such a case: imports = [ "${home-manager}/nixos" ]; --- lib/modules.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/modules.nix b/lib/modules.nix index 38d6ac8cd916..559697b3d57e 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -151,8 +151,8 @@ rec { filterModules = modulesPath: { disabled, modules }: let moduleKey = m: if isString m then toString modulesPath + "/" + m else toString m; - disabledKeys = listToAttrs (map (k: nameValuePair (moduleKey k) null) disabled); - keyFilter = filter (attrs: ! disabledKeys ? ${attrs.key}); + disabledKeys = map moduleKey disabled; + keyFilter = filter (attrs: ! elem attrs.key disabledKeys); in map (attrs: attrs.module) (builtins.genericClosure { startSet = keyFilter modules; operator = attrs: keyFilter attrs.modules; From 2955e6bd260f0b65a859a4a76ce532528afc5275 Mon Sep 17 00:00:00 2001 From: Silvan Mosberger Date: Fri, 10 Jan 2020 04:11:53 +0100 Subject: [PATCH 2/2] lib/tests: Add test case for imports from derivations --- lib/tests/modules.sh | 5 ++++- lib/tests/modules/import-from-store.nix | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 lib/tests/modules/import-from-store.nix diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index 2997fb1ada1b..79d90670fb53 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -12,7 +12,7 @@ evalConfig() { local attr=$1 shift; local script="import ./default.nix { modules = [ $@ ];}" - nix-instantiate --timeout 1 -E "$script" -A "$attr" --eval-only --show-trace + nix-instantiate --timeout 1 -E "$script" -A "$attr" --eval-only --show-trace --read-write-mode } reportFailure() { @@ -183,6 +183,9 @@ checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-foo checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-bar.nix} checkConfigError 'The option .* defined in .* does not exist' config.enable ./disable-recursive/{main.nix,disable-foo.nix,disable-bar.nix} +# Check that imports can depend on derivations +checkConfigOutput "true" config.enable ./import-from-store.nix + cat < $out" ]; + }; +in { + + imports = [ + "${drv}" + ./declare-enable.nix + ./define-enable.nix + ]; + +}