|
46 | 46 | }) config.repositories |
47 | 47 | ); |
48 | 48 |
|
| 49 | + # Map of repository baseUrl -> its config.toml `fetchDependencies` flag. |
| 50 | + # When false, that repo's modules pull NO declared dependencies at all |
| 51 | + # (required or optional); the listed modules themselves still load. |
| 52 | + repoFetchDeps = builtins.listToAttrs ( |
| 53 | + map (r: { |
| 54 | + name = (_parseFlakeUrl r.url).baseUrl; |
| 55 | + value = r.fetchDependencies or true; |
| 56 | + }) config.repositories |
| 57 | + ); |
| 58 | + |
49 | 59 | # Fetch a modules repository, resolving the URL and loading its icedos modules |
50 | 60 | # Handles overrides, flake resolution, and module file loading |
51 | 61 | fetchModulesRepository = |
@@ -415,18 +425,22 @@ let |
415 | 425 | _getModuleDependencies = |
416 | 426 | { |
417 | 427 | mod, |
| 428 | + fetchDependencies, |
418 | 429 | fetchOptionalDependencies, |
419 | 430 | }: |
420 | | - let |
421 | | - inherit (mod) meta; |
| 431 | + if !fetchDependencies then |
| 432 | + [ ] |
| 433 | + else |
| 434 | + let |
| 435 | + inherit (mod) meta; |
422 | 436 |
|
423 | | - # Tag each dep group so it can later be labelled required vs optional |
424 | | - tag = isOptional: map (d: d // { _optional = isOptional; }); |
425 | | - baseDeps = tag false (meta.dependencies or [ ]); |
426 | | - optionalDeps = |
427 | | - if fetchOptionalDependencies then tag true (meta.optionalDependencies or [ ]) else [ ]; |
428 | | - in |
429 | | - baseDeps ++ optionalDeps; |
| 437 | + # Tag each dep group so it can later be labelled required vs optional |
| 438 | + tag = isOptional: map (d: d // { _optional = isOptional; }); |
| 439 | + baseDeps = tag false (meta.dependencies or [ ]); |
| 440 | + optionalDeps = |
| 441 | + if fetchOptionalDependencies then tag true (meta.optionalDependencies or [ ]) else [ ]; |
| 442 | + in |
| 443 | + baseDeps ++ optionalDeps; |
430 | 444 |
|
431 | 445 | # Convert dependency metadata to resolved dependency entries (filtering already-loaded modules) |
432 | 446 | _resolveDependencyEntries = |
|
522 | 536 | _resolveDependencyEntries { |
523 | 537 | deps = _getModuleDependencies { |
524 | 538 | inherit mod; |
| 539 | + fetchDependencies = repoFetchDeps.${mod._repoInfo.url} or true; |
525 | 540 | fetchOptionalDependencies = repoFetchOptional.${mod._repoInfo.url} or false; |
526 | 541 | }; |
| 542 | + |
527 | 543 | sourceUrl = newDep.url; |
528 | 544 | requestedBy = { |
529 | 545 | kind = "module"; |
|
0 commit comments