|
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