|
263 | 263 | // specialArgs
|
264 | 264 | );
|
265 | 265 | in
|
266 |
| - mergeModules prefix (reverseList collected); |
| 266 | + mergeModules prefix (reverseList collected.modules); |
267 | 267 |
|
268 | 268 | options = merged.matchedOptions;
|
269 | 269 |
|
@@ -359,12 +359,30 @@ let
|
359 | 359 | options = checked options;
|
360 | 360 | config = checked (removeAttrs config [ "_module" ]);
|
361 | 361 | _module = checked (config._module);
|
| 362 | + graph = |
| 363 | + let |
| 364 | + collected = |
| 365 | + collectModules class (specialArgs.modulesPath or "") (regularModules ++ [ internalModule ]) |
| 366 | + ( |
| 367 | + { |
| 368 | + inherit |
| 369 | + lib |
| 370 | + options |
| 371 | + config |
| 372 | + specialArgs |
| 373 | + ; |
| 374 | + _class = class; |
| 375 | + } |
| 376 | + // specialArgs |
| 377 | + ); |
| 378 | + in |
| 379 | + collected.graph; |
362 | 380 | inherit extendModules type class;
|
363 | 381 | };
|
364 | 382 | in
|
365 | 383 | result;
|
366 | 384 |
|
367 |
| - # collectModules :: (class: String) -> (modulesPath: String) -> (modules: [ Module ]) -> (args: Attrs) -> [ Module ] |
| 385 | + # collectModules :: (class: String) -> (modulesPath: String) -> (modules: [ Module ]) -> (args: Attrs) -> ModulesTree |
368 | 386 | #
|
369 | 387 | # Collects all modules recursively through `import` statements, filtering out
|
370 | 388 | # all modules in disabledModules.
|
|
529 | 547 | operator = attrs: keyFilter attrs.modules;
|
530 | 548 | });
|
531 | 549 |
|
| 550 | + toGraph = |
| 551 | + modulesPath: |
| 552 | + { disabled, modules }: |
| 553 | + let |
| 554 | + isDisabledModule = isDisabled modulesPath disabled; |
| 555 | + |
| 556 | + toModuleGraph = structuredModule: { |
| 557 | + disabled = isDisabledModule structuredModule; |
| 558 | + inherit (structuredModule) key; |
| 559 | + file = structuredModule.module._file; |
| 560 | + imports = map toModuleGraph structuredModule.modules; |
| 561 | + }; |
| 562 | + in |
| 563 | + map toModuleGraph (filter (x: x.key != "lib/modules.nix") modules); |
532 | 564 | in
|
533 |
| - modulesPath: initialModules: args: |
534 |
| - filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args); |
| 565 | + modulesPath: initialModules: args: { |
| 566 | + modules = filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args); |
| 567 | + graph = toGraph modulesPath (collectStructuredModules unknownModule "" initialModules args); |
| 568 | + }; |
535 | 569 |
|
536 | 570 | /**
|
537 | 571 | Wrap a module with a default location for reporting errors.
|
|
0 commit comments