|
2 | 2 | { networkExpr }: |
3 | 3 |
|
4 | 4 | let |
5 | | - network = import networkExpr; |
6 | | - pkgs = network.network.pkgs; |
7 | | - lib = pkgs.lib; |
| 5 | + network = import networkExpr; |
| 6 | + nwPkgs = network.network.pkgs or {}; |
| 7 | + lib = network.network.lib or nwPkgs.lib or (import <nixpkgs/lib>); |
| 8 | + evalConfig = network.network.evalConfig or "${nwPkgs.path or <nixpkgs>}/nixos/lib/eval-config.nix"; |
| 9 | + runCommand = network.network.runCommand or nwPkgs.runCommand or ((import <nixpkgs> {}).runCommand); |
8 | 10 | in |
9 | | - with pkgs; |
10 | 11 | with lib; |
11 | 12 |
|
12 | 13 | rec { |
|
20 | 21 | modules = [ { imports = [ network.${machineName} ]; } { inherit (network) _file; } ]; |
21 | 22 | in |
22 | 23 | { name = machineName; |
23 | | - value = import "${toString pkgs.path}/nixos/lib/eval-config.nix" { |
| 24 | + value = import evalConfig { |
24 | 25 | modules = |
25 | 26 | modules ++ |
26 | 27 | [ ({ config, lib, options, ... }: { |
|
31 | 32 | networking.hostName = lib.mkDefault machineName; |
32 | 33 | deployment.targetHost = lib.mkDefault machineName; |
33 | 34 |
|
34 | | - # Apply network-level nixpkgs arguments as a baseline for |
35 | | - # per-machine nixpkgs arguments; mkDefault'ed so they |
36 | | - # can be overridden from within each machine |
37 | | - nixpkgs.localSystem = lib.mkDefault pkgs.buildPlatform; |
38 | | - nixpkgs.crossSystem = lib.mkDefault pkgs.hostPlatform; |
39 | | - nixpkgs.overlays = lib.mkDefault pkgs.overlays; |
40 | | - nixpkgs.pkgs = lib.mkDefault (import pkgs.path ({ |
41 | | - inherit (config.nixpkgs) localSystem; |
42 | | - # Merge nixpkgs.config using its merge function |
43 | | - config = options.nixpkgs.config.type.merge "" |
44 | | - ([ { value = pkgs.config; } options.nixpkgs.config ]); |
45 | | - } // lib.optionalAttrs (config.nixpkgs.localSystem != config.nixpkgs.crossSystem) { |
46 | | - # Only override crossSystem if it is not equivalent to |
47 | | - # localSystem; works around issue #68 |
48 | | - inherit (config.nixpkgs) crossSystem; |
49 | | - })); |
| 35 | + # If network.pkgs is set, mkDefault nixpkgs.pkgs |
| 36 | + nixpkgs.pkgs = lib.mkIf (nwPkgs != {}) (lib.mkDefault nwPkgs); |
50 | 37 | }) |
51 | 38 | ]; |
52 | 39 | extraArgs = { inherit nodes ; name = machineName; }; |
|
88 | 75 | # Phase 2: build complete machine configurations. |
89 | 76 | machines = { names, buildTargets ? null }: |
90 | 77 | let nodes' = filterAttrs (n: v: elem n names) nodes; in |
91 | | - pkgs.runCommand "morph" |
| 78 | + runCommand "morph" |
92 | 79 | { preferLocalBuild = true; } |
93 | 80 | (if buildTargets == null |
94 | 81 | then '' |
|
0 commit comments