Repository navigation
Open
Labels
area/nixosNixOS modules and machine configurationNixOS modules and machine configurationeffort/lLarge: multi-day or open-ended; expect staged check-insLarge: multi-day or open-ended; expect staged check-insenhancementNew feature or requestNew feature or requestkind/featureNew feature or capability requestNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addednextOrg Project gate: queued next — orchestrator adds to the boardOrg Project gate: queued next — orchestrator adds to the boardpriority/normalOrdinary priority (the default)Ordinary priority (the default)source/humanFiled directly by a humanFiled directly by a humantask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this itemuser/escalatedQueue or user escalation stateQueue or user escalation state
Description
Status quo (verified 2026-10-28)
The flake's nixos/services/ defines cloudflared, flatpak, id-mail, and pm-stack (aggregator, projector, git-sync, projector-reconcile). Four PM-stack servers are NOT in the flake at all (zero mentions in nixos/ or home/): they run as hand-made units/containers on the laptop, are not enabled as boot services, and would not come back on their own after a reboot:
- Grist (:8484) — roadmap table + registers; its own document storage.
- Kaneo (:5173) — task board; Postgres-backed (see code#1514: its database has no backup routine, docker volume is the only copy).
- Pad (:7777) — notes; token expires 2027-01-22.
- ready-for-agent (:6056) — agent intake endpoint.
What to build
- One nixos/services module per server (or one pm-apps module) in this flake, following the pm-stack module's shape: service runs from the primary checkout or a pinned package, state under ~/.local/state// (or the server's existing data home — do NOT orphan Kaneo's Postgres data or Grist's docs; migrate or bind the existing data in place).
- Enabled at switch like the rest of the fleet; hand units retired in the same change that proves the NixOS unit serves.
- Backup coverage for each server's data lands with or before the move (code#1514, code#1516).
Acceptance
- After a NixOS switch, all four answer on their ports with their existing data intact.
- A laptop reboot brings all four back with no hand step.
- The hand-made units/containers are removed; 'systemctl --user is-enabled' is no longer the thing standing between the stack and a reboot.
Raised by Drew 2026-10-28 ('what is status for implementing nixos services for all the servers?'). Related: code#1199 (projector deploy — done interim, NixOS at the switch), code#1514, code#1516, code#1744 (shared-schema direction for these servers' data).
Acceptance criteria
- Each of Grist (:8484), Kaneo (:5173), Pad (:7777), and ready-for-agent (:6056) is defined as a NixOS/flake service in this repo, following the pm-stack module shape, with state under
~/.local/state/<name>/or its existing data home bound/migrated in place — Kaneo's Postgres data and Grist's documents are not orphaned. - After a NixOS switch, all four servers answer on their existing ports with their existing data intact.
- A laptop reboot brings all four back with no hand step.
- The hand-made units/containers are retired in the same change that proves the NixOS units serve.
- Backup coverage for each server's data lands with or before the move (see pm-stack databases (Kaneo Postgres, Grist, Pad) have no backup routine — docker volumes are the only copy #1514, audit(backups): 2026-10-27 coverage audit — aggregator offsite unproven, Kaneo/atlas gaps, NixOS backup service directive #1516).
Metadata
Metadata
Assignees
Labels
area/nixosNixOS modules and machine configurationNixOS modules and machine configurationeffort/lLarge: multi-day or open-ended; expect staged check-insLarge: multi-day or open-ended; expect staged check-insenhancementNew feature or requestNew feature or requestkind/featureNew feature or capability requestNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addednextOrg Project gate: queued next — orchestrator adds to the boardOrg Project gate: queued next — orchestrator adds to the boardpriority/normalOrdinary priority (the default)Ordinary priority (the default)source/humanFiled directly by a humanFiled directly by a humantask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this itemuser/escalatedQueue or user escalation stateQueue or user escalation state
Activity
developing-today commentedon Oct 28, 2026
CODE-707
dezren39 commentedon Oct 28, 2026
Intake review
nixos/orhome/), and a search this run found no PR or duplicate issue implementing flake services for them. Filed by Drew directly, sosource/human. The body's Acceptance bullets are formalized as## Acceptance criteriaappended to the body. Labels normalized: kind/feature, status/needs-triage, priority/normal, effort/l (four services plus data migration), area/nixos; pre-existingenhancement/nextkept.— fleet monitor intake pass, 2026-10-28
16 remaining items
dezren39 commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
dezren39 commentedon Nov 3, 2026
🤖 Agent note · picked up
dezren39 commentedon Nov 3, 2026
🤖 Agent note · done (triage) — escalated for two Drew decisions
user/escalatedfor the decisions below.Fresh verification (2026-11-03 ~14:56Z, origin/main 91c3b19 + live laptop probe)
nixos/services/pm-apps/default.nixdeclares them as oci-containers on their original docker volumes;docker-pm-grist.service/docker-pm-pad.serviceare enabled + active (containers pm-grist up 4d, pm-pad up 4d healthy).services.pm-apps.enable = trueinnixos/hosts/default.nix.pm-stack_postgres_datavolume; the duplicate declarations were removed the same day (commit b19a53c). Today exactly one Postgres exists (pm-stack-postgres-1, healthy, up 46h) and Kaneo is compose-managed via the pm-stack module'spm-kaneo.service+ self-heal timer (user units, active). The module header states the open point verbatim: completing the migration "would mean disabling the pm-stack compose units first and planning the cutover; until that decision is made, compose is the single manager for both."~/git/codecannot fast-forward — its local main carries a repo-keeper snapshot commit (3e59c84dd, 2026-11-03 08:27 CST) and sits 45 commits behind origin/main. Left untouched per the primary-clone rule; this is already tracked as issue laptop-repo-keeper: snapshot commits on the primary's main diverge it from origin and break deploys #2496.Decisions for Drew (substance, per the surfacing rule)
Once Drew rules on (1), the follow-up is mechanical: a gated cutover task (Option A) or an acceptance amendment + closure review (Option B). Task 7727 completes as
triaged.