summaryrefslogtreecommitdiff
path: root/Omni/Deploy
AgeCommit message (Collapse)Author
4 daysfix UTF-8 encoding in deployed servicesBen Sima
- Systemd.hs: add LANG and LC_ALL defaults (en_US.utf8) to all generated unit files to ensure proper UTF-8 handling - Systemd.hs: add generateUnitWithLocale that reads LOCALE_ARCHIVE from the deployer's environment and injects it into generated units - Telegram.hs: add safePutText wrapper that catches encoding errors in logging to prevent them from killing message sends The root cause was NixOS systemd services not inheriting locale settings from the system, causing emoji characters to fail encoding. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5 daysOmni/Deploy: add WorkingDirectory support and rename to deployerBen Sima
- Add execWorkingDirectory field to Exec type in Manifest.hs - Generate WorkingDirectory= in systemd unit files - Allow add-service to update existing services - Rename biz-deployer to deployer throughout - Fix Caddy.hs and Systemd.hs tests for new Exec constructor This fixes subagent stalls caused by Coder running direnv from wrong directory. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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>
5 daysOmni/Deploy: rename biz-deployer to deployerBen Sima
Rename the service from biz-deployer to deployer for simplicity. Updates Deployer.nix, Beryllium.nix, and Biz.nix. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5 daysOmni/Deploy: make Caddy optional in Deployer.nixBen Sima
Add enableCaddy option (default true) to allow hosts like beryllium that use Tailscale Funnel to disable Caddy reverse proxy. 🤖 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 Manifest.hs FromJSON parsersBen Sima
Wrap parser chains in parentheses to fix compilation errors from incorrect use of </ operator.
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