Leaving systemd for runit
July 10, 20261 min read
Decision made, migration pending: I'm leaving CachyOS for Artix, and systemd for runit.
What pulls me: an init that does one thing — supervise processes — in a few hundred auditable lines of C; services that are a directory with a three-line run script instead of a unit file with twenty directives; a boot that's simpler to reason about when something breaks; and zero coupling with the rest of the system — logging, network and sessions stop living inside the init.
The cons, because they exist and they're mine: my entire desktop hangs off systemd user units — eww, the SSH tunnels, the theming, some thirty services with Restart=always that runit supervises differently. I lose timers (hello again, cron), I lose journald (hello, flat log files), and everything that assumes sd_notify will need convincing. It's not free; it's a move.
Why now? Because in March systemd merged a birthDate field into its user records — the data-layer plumbing for the OS-level age verification that several laws are pushing. Artix is structurally immune: no systemd, nowhere to store the field. The full story — the laws, the mechanism, and how I already neutralized that field on this machine without migrating yet — lives in Notes: OS-level age verification.