TacidOS
DevelopersGitHub

Decision 0002

Init is systemd

Architecture decision record 0002: Init is systemd

Status
Accepted
Date
2026-09-03

Context

The init system determines service supervision, sandboxing primitives, boot, logging, credential storage and boot assessment.

The three plans

  • Grok: dinit or s6; systemd only if vendor GPU units force it (Q-4).
  • Fable, Codex: systemd, implied by NixOS.

Decision

systemd. It follows from NixOS, and it supplies what the nervous system needs without building it: unit sandboxing directives for every daemon, journald as the structured log source for facts, socket activation for the stem and sessions, systemd-boot with boot counting for the immune system, systemd stage-1 with native TPM2 unlock, systemd-creds for sealed secrets, and transient units for per-user execution.

Consequences

  • Boot-time and idle-memory budgets are measured and published rather than assumed small.
  • The stem’s operations map onto switch-to-configuration-ng, bootctl, systemd-bless-boot.
  • dinit/s6 expertise is not needed; systemd’s is.

Alternatives rejected

  • dinit / s6 / runit: smaller, but would require a non-NixOS base or a fork of NixOS’s module system, and would lose boot counting, credentials and sandboxing directives.