@@ -101,9 +101,31 @@ rec {
101101 check ? true
102102 }:
103103 let
104+ withWarnings = x:
105+ lib.warnIf (evalModulesArgs?args) "The args argument to evalModules is deprecated. Please set config._module.args instead."
106+ lib.warnIf (evalModulesArgs?check) "The check argument to evalModules is deprecated. Please set config._module.check instead."
107+ x;
108+
109+ legacyModules =
110+ optional (evalModulesArgs?args) {
111+ config = {
112+ _module.args = args;
113+ };
114+ }
115+ ++ optional (evalModulesArgs?check) {
116+ config = {
117+ _module.check = mkDefault check;
118+ };
119+ };
120+ regularModules = modules ++ legacyModules;
121+
104122 # This internal module declare internal options under the `_module'
105123 # attribute. These options are fragile, as they are used by the
106124 # module system to change the interpretation of modules.
125+ #
126+ # When extended with extendModules or moduleType, a fresh instance of
127+ # this module is used, to avoid conflicts and allow chaining of
128+ # extendModules.
107129 internalModule = rec {
108130 _file = ./modules.nix;
109131
@@ -125,7 +147,7 @@ rec {
125147 _module.check = mkOption {
126148 type = types.bool;
127149 internal = true;
128− default = check;
150+ default = true;
129151 description = "Whether to check whether all option definitions have matching declarations.";
130152 };
131153
@@ -151,14 +173,14 @@ rec {
151173 _module.args = {
152174 inherit extendModules;
153175 moduleType = type;
154− } // args;
176+ };
155177 };
156178 };
157179
158180 merged =
159181 let collected = collectModules
160182 (specialArgs.modulesPath or "")
161− (modules ++ [ internalModule ])
183+ (regularModules ++ [ internalModule ])
162184 ({ inherit lib options config specialArgs; } // specialArgs);
163185 in mergeModules prefix (reverseList collected);
164186
@@ -222,7 +244,7 @@ rec {
222244 prefix ? [],
223245 }:
224246 evalModules (evalModulesArgs // {
225− modules = evalModulesArgs.modules ++ modules;
247+ modules = regularModules ++ modules;
226248 specialArgs = evalModulesArgs.specialArgs or {} // specialArgs;
227249 prefix = extendArgs.prefix or evalModulesArgs.prefix;
228250 });
@@ -231,7 +253,7 @@ rec {
231253 inherit modules specialArgs;
232254 };
233255
234− result = {
256+ result = withWarnings {
235257 options = checked options;
236258 config = checked (removeAttrs config [ "_module" ]);
237259 _module = checked (config._module);