From 2e689d58cbbe6b7047bb132dc79097016e606dd0 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Tue, 7 Feb 2023 20:51:17 +0100 Subject: lib/modules: Improve error when a configuration is imported This is appears to be a fairly common mistake for beginners who want to build larger things from the system configurations, such as NixOps networks, etc. Further explanation seems appropriate. --- lib/tests/modules.sh | 1 + lib/tests/modules/import-configuration.nix | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 lib/tests/modules/import-configuration.nix (limited to 'lib/tests') diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index 4da0cb38f685a..d12e503c4b1d7 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -368,6 +368,7 @@ checkConfigError 'The module foo.nix#darwinModules.default was imported into nix # _type check checkConfigError 'Could not load a value as a module, because it is of type "flake", in file .*/module-imports-_type-check.nix' config.ok.config ./module-imports-_type-check.nix checkConfigOutput '^true$' "$@" config.enable ./declare-enable.nix ./define-enable-with-top-level-mkIf.nix +checkConfigError 'Could not load a value as a module, because it is of type "configuration", in file .*/import-configuration.nix' config ./import-configuration.nix # doRename works when `warnings` does not exist. checkConfigOutput '^1234$' config.c.d.e ./doRename-basic.nix diff --git a/lib/tests/modules/import-configuration.nix b/lib/tests/modules/import-configuration.nix new file mode 100644 index 0000000000000..a2a32bbee4caf --- /dev/null +++ b/lib/tests/modules/import-configuration.nix @@ -0,0 +1,12 @@ +{ lib, ... }: +let + myconf = lib.evalModules { modules = [ { } ]; }; +in +{ + imports = [ + # We can't do this. A configuration is not equal to its set of a modules. + # Equating those would lead to a mess, as specialArgs, anonymous modules + # that can't be deduplicated, and possibly more come into play. + myconf + ]; +} -- cgit 1.4.1