|
216 | 216 | hash = "sha256-mROaUYqcOa+XePl4CzM/zM/mE21ejM2UhyQSYc8emc4="; |
217 | 217 | }; |
218 | 218 |
|
219 | | - intermittent-tracker = workingDir: { |
| 219 | + intermittent-tracker-service = workingDir: script: { |
220 | 220 | # Wait for networking |
221 | 221 | wants = ["network-online.target"]; |
222 | 222 | after = ["network-online.target"]; |
|
225 | 225 | wantedBy = ["multi-user.target"]; |
226 | 226 |
|
227 | 227 | path = ["/run/current-system/sw"]; |
228 | | - script = '' |
229 | | - . .venv/bin/activate |
230 | | - FLASK_DEBUG=1 python3 -m intermittent_tracker.flask_server |
231 | | - ''; |
| 228 | + inherit script; |
232 | 229 |
|
233 | 230 | serviceConfig = { |
234 | 231 | WorkingDirectory = workingDir; |
235 | 232 | Restart = "on-failure"; |
236 | 233 | }; |
237 | 234 | }; |
| 235 | + # v1 service requires manual deployment of the app: |
| 236 | + # $ git clone https://github.com/servo/intermittent-tracker.git <staging|prod> |
| 237 | + # $ cd <staging|prod> |
| 238 | + # $ uv venv |
| 239 | + # $ . .venv/bin/activate |
| 240 | + # $ uv pip install -r requirements.txt |
| 241 | + # $ cp config.json.example config.json |
| 242 | + intermittent-tracker-service-v1 = workingDir: |
| 243 | + intermittent-tracker-service workingDir '' |
| 244 | + . .venv/bin/activate |
| 245 | + FLASK_DEBUG=1 python3 -m intermittent_tracker.flask_server |
| 246 | + ''; |
| 247 | + intermittent-tracker-service-v2 = workingDir: app: |
| 248 | + intermittent-tracker-service workingDir '' |
| 249 | + FLASK_DEBUG=1 ${app}/bin/intermittent_tracker |
| 250 | + ''; |
| 251 | + |
| 252 | + intermittent-tracker-staging = pkgs.callPackage ./python-app.nix { |
| 253 | + src = pkgs.fetchFromGitHub { |
| 254 | + owner = "servo"; |
| 255 | + repo = "intermittent-tracker"; |
| 256 | + rev = "42d55fdcce5e1d4e3aec70e4cfeb575d8569c8d3"; |
| 257 | + hash = "sha256-L8Sk1aL3Na0JFymFj07eCcFIUZ0uYLt1ED2DDKnZ4VU="; |
| 258 | + }; |
| 259 | + packageName = "intermittent-tracker"; |
| 260 | + }; |
238 | 261 | in { |
239 | 262 | # For benchmarking: disable CPU frequency boost, offline SMT siblings, etc. |
240 | 263 | # Process affinity will be isolated externally via `isolcpus`. |
|
255 | 278 | }; |
256 | 279 | }; |
257 | 280 |
|
258 | | - # $ git clone https://github.com/servo/intermittent-tracker.git <staging|prod> |
259 | | - # $ cd <staging|prod> |
260 | | - # $ uv venv |
261 | | - # $ . .venv/bin/activate |
262 | | - # $ uv pip install -r requirements.txt |
263 | | - # $ cp config.json.example config.json |
264 | | - intermittent-tracker-staging = lib.mkIf hasIntermittentTracker (intermittent-tracker "/config/intermittent-tracker/staging"); |
265 | | - intermittent-tracker-prod = lib.mkIf hasIntermittentTracker (intermittent-tracker "/config/intermittent-tracker/prod"); |
| 281 | + intermittent-tracker-staging = lib.mkIf hasIntermittentTracker |
| 282 | + (intermittent-tracker-service-v2 |
| 283 | + "/config/intermittent-tracker/staging" |
| 284 | + intermittent-tracker-staging); |
| 285 | + intermittent-tracker-prod = lib.mkIf hasIntermittentTracker |
| 286 | + (intermittent-tracker-service-v1 |
| 287 | + "/config/intermittent-tracker/prod"); |
266 | 288 |
|
267 | 289 | monitor = { |
268 | 290 | # Wait for networking |
|
0 commit comments