Skip to content

The optional-service toggles

system/services/toggles.nix declares the LIST of keys that exist. Nothing is turned on there: the value is each machine's decision, in hosts/<host>/services.nix.

Why the declarations are centralized (04/08/2026)

osConfig only sees the NixOS namespace, so an option read by a home module (dropbox, discord-rpc, cs2-backup) HAS to be declared by a system module. Spreading the declarations across each service module would leave those three orphans needing a central file anyway, which is worse than one list that doubles as a readable contract of what this repo knows how to turn on and off.

Reading a flag

  • system module: config.my.services.<name>
  • home module: osConfig.my.services.<name>

What stays out on purpose

The essentials are not toggleable, so they cannot be switched off by accident: tailscale, mouse/logid, the hypr* desktop, keyring, earlyoom, fail2ban, fwupd. The VPN is on demand, so it stays out too.

A new key is born false

mkEnableOption defaults to false, so a new service that does not come up is the expected symptom; the remedy is adding the line to the host's panel.