|
20 | 20 | };
|
21 | 21 |
|
22 | 22 | outputs = { self, nixpkgs, utils, naersk, ... }:
|
23 |
| - utils.lib.eachDefaultSystem (system: |
24 |
| - let |
25 |
| - pkgs = import nixpkgs { inherit system; }; |
26 |
| - naersk-lib = pkgs.callPackage naersk { }; |
27 |
| - isDarwin = pkgs.lib.strings.hasSuffix "-darwin" system; |
28 |
| - darwinOptions = pkgs.lib.optionalAttrs isDarwin { |
29 |
| - nativeBuildInputs = [ |
30 |
| - pkgs.darwin.apple_sdk.frameworks.SystemConfiguration |
31 |
| - ]; |
32 |
| - }; |
33 |
| - in |
34 |
| - { |
35 |
| - defaultPackage = self.packages."${system}".deploy-rs; |
36 |
| - packages.deploy-rs = naersk-lib.buildPackage (darwinOptions // { |
| 23 | + { |
| 24 | + overlay = final: prev: |
| 25 | + let |
| 26 | + naersk-lib = final.callPackage naersk { }; |
| 27 | + system = final.system; |
| 28 | + isDarwin = final.lib.strings.hasSuffix "-darwin" system; |
| 29 | + darwinOptions = final.lib.optionalAttrs isDarwin { |
| 30 | + nativeBuildInputs = [ |
| 31 | + final.darwin.apple_sdk.frameworks.SystemConfiguration |
| 32 | + ]; |
| 33 | + }; |
| 34 | + in |
| 35 | + { |
| 36 | + deploy-rs = { |
| 37 | + |
| 38 | + deploy-rs = naersk-lib.buildPackage (darwinOptions // { |
37 | 39 | root = ./.;
|
38 | 40 | });
|
39 | 41 |
|
40 |
| - defaultApp = self.apps."${system}".deploy-rs; |
41 |
| - apps.deploy-rs = { |
42 |
| - type = "app"; |
43 |
| - program = "${self.defaultPackage."${system}"}/bin/deploy"; |
44 |
| - }; |
45 |
| - |
46 |
| - devShell = pkgs.mkShell { |
47 |
| - inputsFrom = [ self.packages.${system}.deploy-rs ]; |
48 |
| - buildInputs = [ pkgs.nixUnstable ]; |
49 |
| - }; |
50 |
| - |
51 |
| - checks = { |
52 |
| - deploy-rs = self.defaultPackage.${system}.overrideAttrs (super: { doCheck = true; }); |
53 |
| - }; |
54 |
| - |
55 | 42 | lib = rec {
|
56 | 43 |
|
57 | 44 | setActivate = builtins.trace
|
|
62 | 49 | custom =
|
63 | 50 | {
|
64 | 51 | __functor = customSelf: base: activate:
|
65 |
| - pkgs.buildEnv { |
| 52 | + final.buildEnv { |
66 | 53 | name = ("activatable-" + base.name);
|
67 | 54 | paths =
|
68 | 55 | [
|
69 | 56 | base
|
70 |
| - (pkgs.writeTextFile { |
| 57 | + (final.writeTextFile { |
71 | 58 | name = base.name + "-activate-path";
|
72 | 59 | text = ''
|
73 |
| - #!${pkgs.runtimeShell} |
| 60 | + #!${final.runtimeShell} |
74 | 61 | set -euo pipefail
|
75 | 62 |
|
76 | 63 | if [[ "''${DRY_ACTIVATE:-}" == "1" ]]
|
77 | 64 | then
|
78 |
| - ${customSelf.dryActivate or "echo ${pkgs.writeScript "activate" activate}"} |
| 65 | + ${customSelf.dryActivate or "echo ${final.writeScript "activate" activate}"} |
79 | 66 | else
|
80 | 67 | ${activate}
|
81 | 68 | fi
|
82 | 69 | '';
|
83 | 70 | executable = true;
|
84 | 71 | destination = "/deploy-rs-activate";
|
85 | 72 | })
|
86 |
| - (pkgs.writeTextFile { |
| 73 | + (final.writeTextFile { |
87 | 74 | name = base.name + "-activate-rs";
|
88 | 75 | text = ''
|
89 |
| - #!${pkgs.runtimeShell} |
| 76 | + #!${final.runtimeShell} |
90 | 77 | exec ${self.defaultPackage.${system}}/bin/activate "$@"
|
91 | 78 | '';
|
92 | 79 | executable = true;
|
|
104 | 91 |
|
105 | 92 | # https://github.com/serokell/deploy-rs/issues/31
|
106 | 93 | ${with base.config.boot.loader;
|
107 |
| - pkgs.lib.optionalString systemd-boot.enable |
| 94 | + final.lib.optionalString systemd-boot.enable |
108 | 95 | "sed -i '/^default /d' ${efi.efiSysMountPoint}/loader/loader.conf"}
|
109 | 96 | '';
|
110 | 97 |
|
|
114 | 101 | };
|
115 | 102 |
|
116 | 103 | deployChecks = deploy: builtins.mapAttrs (_: check: check deploy) {
|
117 |
| - schema = deploy: pkgs.runCommandNoCC "jsonschema-deploy-system" { } '' |
118 |
| - ${pkgs.python3.pkgs.jsonschema}/bin/jsonschema -i ${pkgs.writeText "deploy.json" (builtins.toJSON deploy)} ${./interface.json} && touch $out |
| 104 | + schema = deploy: final.runCommandNoCC "jsonschema-deploy-system" { } '' |
| 105 | + ${final.python3.pkgs.jsonschema}/bin/jsonschema -i ${final.writeText "deploy.json" (builtins.toJSON deploy)} ${./interface.json} && touch $out |
119 | 106 | '';
|
120 | 107 |
|
121 | 108 | activate = deploy:
|
122 | 109 | let
|
123 |
| - profiles = builtins.concatLists (pkgs.lib.mapAttrsToList (nodeName: node: pkgs.lib.mapAttrsToList (profileName: profile: [ (toString profile.path) nodeName profileName ]) node.profiles) deploy.nodes); |
| 110 | + profiles = builtins.concatLists (final.lib.mapAttrsToList (nodeName: node: final.lib.mapAttrsToList (profileName: profile: [ (toString profile.path) nodeName profileName ]) node.profiles) deploy.nodes); |
124 | 111 | in
|
125 |
| - pkgs.runCommandNoCC "deploy-rs-check-activate" { } '' |
| 112 | + final.runCommandNoCC "deploy-rs-check-activate" { } '' |
126 | 113 | for x in ${builtins.concatStringsSep " " (map (p: builtins.concatStringsSep ":" p) profiles)}; do
|
127 | 114 | profile_path=$(echo $x | cut -f1 -d:)
|
128 | 115 | node_name=$(echo $x | cut -f2 -d:)
|
|
137 | 124 | '';
|
138 | 125 | };
|
139 | 126 | };
|
| 127 | + }; |
| 128 | + }; |
| 129 | + } // |
| 130 | + utils.lib.eachDefaultSystem (system: |
| 131 | + let |
| 132 | + pkgs = import nixpkgs { inherit system; overlays = [ self.overlay ]; }; |
| 133 | + in |
| 134 | + { |
| 135 | + defaultPackage = self.packages."${system}".deploy-rs; |
| 136 | + packages.deploy-rs = pkgs.deploy-rs.deploy-rs; |
| 137 | + |
| 138 | + defaultApp = self.apps."${system}".deploy-rs; |
| 139 | + apps.deploy-rs = { |
| 140 | + type = "app"; |
| 141 | + program = "${self.defaultPackage."${system}"}/bin/deploy"; |
| 142 | + }; |
| 143 | + |
| 144 | + devShell = pkgs.mkShell { |
| 145 | + inputsFrom = [ self.packages.${system}.deploy-rs ]; |
| 146 | + buildInputs = [ pkgs.nixUnstable ]; |
| 147 | + }; |
| 148 | + |
| 149 | + checks = { |
| 150 | + deploy-rs = self.defaultPackage.${system}.overrideAttrs (super: { doCheck = true; }); |
| 151 | + }; |
| 152 | + |
| 153 | + lib = pkgs.deploy-rs.lib; |
140 | 154 | });
|
141 | 155 | }
|
0 commit comments