summaryrefslogtreecommitdiff
path: root/Omni/Deploy/Systemd.hs
AgeCommit message (Collapse)Author
5 daysOmni/Deploy/Systemd: fix extractStorePath parsing bugBen Sima
The function was incorrectly extracting store paths from ExecStart lines. For "ExecStart=/nix/store/xxx/bin/ava" it would return "/nix/store/nix" instead of "/nix/store/xxx". This caused the deployer to think services needed redeployment on every cycle, restarting them every 5 minutes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
12 daysfix: actually restart services on deploymentBen Sima
Previously used 'enable --now' which only starts stopped services. Now explicitly calls 'restart' to ensure running services pick up new versions.
13 daysFix deployer checking stale state instead of actual running servicesBen Sima
The deployer compared its in-memory stateServices map to decide if a service needed restarting. When the deployer restarted, this state was lost, causing it to think services were 'already at' the desired path when they were actually running old code. Changes: - Add getRunningStorePath to Systemd module to read actual store path - Update deployService to query systemd instead of stale in-memory state - Add DerivingStrategies extension to Deployer.hs
14 daysFix hlint errors in Deploy modulesBen Sima
- Systemd: use list comprehension instead of if-then-else - Manifest: use </> operator, replace case with maybe - Deployer: use newtype, use flip removeService - Caddy: use newtype for single-field types
2025-12-16feat(deploy): Complete mini-PaaS deployment system (t-266)Ben Sima
- Add Omni/Deploy/ with Manifest, Deployer, Systemd, Caddy modules - Manifest CLI: show, update, add-service, list, rollback commands - Deployer: polls S3 manifest, pulls closures, manages systemd units - Caddy integration for dynamic reverse proxy routes - bild: auto-cache to S3, outputs STORE_PATH for push.sh - push.sh: supports both NixOS and service deploys - Biz.nix: simplified to base OS + deployer only - Services (podcastitlater-web/worker) now deployer-managed - Documentation: README.md with operations guide