|
21 | 21 | inherit system; |
22 | 22 | }; |
23 | 23 |
|
24 | | - version = builtins.readFile "${./.}/version.txt"; |
25 | 24 | maintainer = "Tower Computing Inc. <support@tower.dev>"; |
26 | 25 | homepage = "https://github.com/tower/tower-cli"; |
27 | 26 | description = "Tower CLI and runtime environment"; |
28 | | - longDescription = '' |
| 27 | + longDescription = " | |
29 | 28 | Tower CLI and runtime environment |
30 | 29 | Tower is the best way to host Python data apps in production. |
31 | 30 | This package provides the Tower CLI tool for managing and deploying |
32 | 31 | applications to the Tower platform. |
| 32 | + "; |
| 33 | + |
| 34 | + # Helper function to generate version in build phases |
| 35 | + getVersionScript = '' |
| 36 | + VERSION=${builtins.getEnv "VERSION"} |
| 37 | + if [ -z "$VERSION" ]; then |
| 38 | + VERSION="0.3.20" |
| 39 | + fi |
| 40 | + ''; |
| 41 | + |
| 42 | + # Helper function to generate nfpm YAML config |
| 43 | + mkNfpmConfig = { arch, packager }: '' |
| 44 | + name: tower |
| 45 | + arch: ${arch} |
| 46 | + platform: linux |
| 47 | + version: $VERSION |
| 48 | + ${if packager == "rpm" then "release: 1" else "section: utils\npriority: optional"} |
| 49 | + maintainer: ${maintainer} |
| 50 | + description: ${longDescription} |
| 51 | + vendor: Tower Computing Inc. |
| 52 | + homepage: "${homepage}" |
| 53 | + license: MIT |
| 54 | + |
| 55 | + contents: |
| 56 | + - src: package/usr/bin/tower |
| 57 | + dst: /usr/bin/tower |
| 58 | + file_info: |
| 59 | + mode: 0755 |
33 | 60 | ''; |
34 | 61 |
|
35 | 62 | commonNativeBuildInputs = with pkgs; [ pkg-config ]; |
|
137 | 164 | tower-macos-arm = tower-macos-arm; |
138 | 165 |
|
139 | 166 | tower-deb-x86 = pkgs.stdenv.mkDerivation { |
140 | | - name = "tower-${version}-amd64.deb"; |
141 | | - nativeBuildInputs = with pkgs; [ nfpm ]; |
| 167 | + name = "tower-deb-amd64"; |
| 168 | + nativeBuildInputs = with pkgs; [ nfpm python git ]; |
142 | 169 |
|
143 | 170 | unpackPhase = "true"; |
144 | 171 |
|
145 | 172 | buildPhase = '' |
| 173 | + ${getVersionScript} |
| 174 | + |
146 | 175 | mkdir -p package/usr/bin |
147 | 176 | cp ${tower-linux-x86}/bin/tower package/usr/bin/ |
148 | 177 | chmod 755 package/usr/bin/tower |
149 | 178 | |
150 | | - cat > nfpm.yaml << 'EOF' |
151 | | - name: tower |
152 | | - arch: amd64 |
153 | | - platform: linux |
154 | | - version: ${version} |
155 | | - section: utils |
156 | | - priority: optional |
157 | | - maintainer: ${maintainer} |
158 | | - description: | |
159 | | - ${longDescription} |
160 | | - vendor: Tower Computing Inc. |
161 | | - homepage: ${homepage} |
162 | | - license: MIT |
163 | | - |
164 | | - contents: |
165 | | - - src: package/usr/bin/tower |
166 | | - dst: /usr/bin/tower |
167 | | - file_info: |
168 | | - mode: 0755 |
| 179 | + cat > nfpm.yaml << EOF |
| 180 | + ${mkNfpmConfig { arch = "amd64"; packager = "deb"; }} |
169 | 181 | EOF |
170 | 182 | ''; |
171 | 183 |
|
172 | 184 | installPhase = '' |
173 | 185 | mkdir -p $out |
174 | | - nfpm package --config nfpm.yaml --packager deb --target $out/tower_${version}_amd64.deb |
| 186 | + nfpm package --config nfpm.yaml --packager deb --target $out/tower_''${VERSION}_amd64.deb |
175 | 187 | ''; |
176 | 188 | }; |
177 | 189 |
|
178 | | - tower-cli-deb-arm64 = pkgs.stdenv.mkDerivation { |
179 | | - name = "tower-${version}-arm64.deb"; |
180 | | - nativeBuildInputs = with pkgs; [ nfpm ]; |
| 190 | + tower-deb-arm64 = pkgs.stdenv.mkDerivation { |
| 191 | + name = "tower-deb-arm64"; |
| 192 | + nativeBuildInputs = with pkgs; [ nfpm python git ]; |
181 | 193 |
|
182 | 194 | unpackPhase = "true"; |
183 | 195 |
|
184 | 196 | buildPhase = '' |
| 197 | + ${getVersionScript} |
| 198 | + |
185 | 199 | mkdir -p package/usr/bin |
186 | 200 | cp ${tower-linux-arm64}/bin/tower package/usr/bin/ |
187 | 201 | chmod 755 package/usr/bin/tower |
188 | 202 | |
189 | | - cat > nfpm.yaml << 'EOF' |
190 | | - name: tower |
191 | | - arch: arm64 |
192 | | - platform: linux |
193 | | - version: ${version} |
194 | | - section: utils |
195 | | - priority: optional |
196 | | - maintainer: ${maintainer} |
197 | | - description: | |
198 | | - ${longDescription} |
199 | | - vendor: Tower Computing Inc. |
200 | | - homepage: ${homepage} |
201 | | - license: MIT |
202 | | - |
203 | | - contents: |
204 | | - - src: package/usr/bin/tower |
205 | | - dst: /usr/bin/tower |
206 | | - file_info: |
207 | | - mode: 0755 |
| 203 | + cat > nfpm.yaml << EOF |
| 204 | + ${mkNfpmConfig { arch = "arm64"; packager = "deb"; }} |
208 | 205 | EOF |
209 | 206 | ''; |
210 | 207 |
|
211 | 208 | installPhase = '' |
212 | 209 | mkdir -p $out |
213 | | - nfpm package --config nfpm.yaml --packager deb --target $out/tower_${version}_arm64.deb |
| 210 | + cat nfpm.yaml |
| 211 | + nfpm package --config nfpm.yaml --packager deb --target $out/tower_''${VERSION}_arm64.deb |
214 | 212 | ''; |
215 | 213 | }; |
216 | 214 |
|
217 | 215 | tower-rpm-x86 = pkgs.stdenv.mkDerivation { |
218 | | - name = "tower-${version}-x86_64.rpm"; |
219 | | - nativeBuildInputs = with pkgs; [ nfpm ]; |
| 216 | + name = "tower-rpm-x86_64"; |
| 217 | + nativeBuildInputs = with pkgs; [ nfpm python git ]; |
220 | 218 |
|
221 | 219 | unpackPhase = "true"; |
222 | 220 |
|
223 | 221 | buildPhase = '' |
| 222 | + ${getVersionScript} |
| 223 | + |
224 | 224 | mkdir -p package/usr/bin |
225 | 225 | cp ${tower-linux-x86}/bin/tower package/usr/bin/ |
226 | 226 | chmod 755 package/usr/bin/tower |
227 | 227 | |
228 | | - cat > nfpm.yaml << 'EOF' |
229 | | - name: tower |
230 | | - arch: x86_64 |
231 | | - platform: linux |
232 | | - version: ${version} |
233 | | - release: 1 |
234 | | - maintainer: ${maintainer} |
235 | | - description: | |
236 | | - ${longDescription} |
237 | | - vendor: Tower Computing Inc. |
238 | | - homepage: ${homepage} |
239 | | - license: MIT |
240 | | - |
241 | | - contents: |
242 | | - - src: package/usr/bin/tower |
243 | | - dst: /usr/bin/tower |
244 | | - file_info: |
245 | | - mode: 0755 |
| 228 | + cat > nfpm.yaml << EOF |
| 229 | + ${mkNfpmConfig { arch = "x86_64"; packager = "rpm"; }} |
246 | 230 | EOF |
247 | 231 | ''; |
248 | 232 |
|
249 | 233 | installPhase = '' |
250 | 234 | mkdir -p $out |
251 | | - nfpm package --config nfpm.yaml --packager rpm --target $out/tower-${version}-1.x86_64.rpm |
| 235 | + nfpm package --config nfpm.yaml --packager rpm --target $out/tower-''${VERSION}-1.x86_64.rpm |
252 | 236 | ''; |
253 | 237 | }; |
254 | 238 |
|
255 | 239 | tower-rpm-arm64 = pkgs.stdenv.mkDerivation { |
256 | | - name = "tower-${version}-aarch64.rpm"; |
257 | | - nativeBuildInputs = with pkgs; [ nfpm ]; |
| 240 | + name = "tower-rpm-aarch64"; |
| 241 | + nativeBuildInputs = with pkgs; [ nfpm python git ]; |
258 | 242 |
|
259 | 243 | unpackPhase = "true"; |
260 | 244 |
|
261 | 245 | buildPhase = '' |
| 246 | + ${getVersionScript} |
| 247 | + |
262 | 248 | mkdir -p package/usr/bin |
263 | 249 | cp ${tower-linux-arm64}/bin/tower package/usr/bin/ |
264 | 250 | chmod 755 package/usr/bin/tower |
265 | 251 | |
266 | | - cat > nfpm.yaml << 'EOF' |
267 | | - name: tower |
268 | | - arch: aarch64 |
269 | | - platform: linux |
270 | | - version: ${version} |
271 | | - release: 1 |
272 | | - maintainer: ${maintainer} |
273 | | - description: | |
274 | | - ${longDescription} |
275 | | - vendor: Tower Computing Inc. |
276 | | - homepage: ${homepage} |
277 | | - license: MIT |
278 | | - |
279 | | - contents: |
280 | | - - src: package/usr/bin/tower |
281 | | - dst: /usr/bin/tower |
282 | | - file_info: |
283 | | - mode: 0755 |
| 252 | + cat > nfpm.yaml << EOF |
| 253 | + ${mkNfpmConfig { arch = "aarch64"; packager = "rpm"; }} |
284 | 254 | EOF |
285 | 255 | ''; |
286 | 256 |
|
287 | 257 | installPhase = '' |
288 | 258 | mkdir -p $out |
289 | | - nfpm package --config nfpm.yaml --packager rpm --target $out/tower-${version}-1.aarch64.rpm |
| 259 | + nfpm package --config nfpm.yaml --packager rpm --target $out/tower-''${VERSION}-1.aarch64.rpm |
290 | 260 | ''; |
291 | 261 | }; |
292 | 262 | }; |
|
0 commit comments