Software EngineeringOpen accessPublished 3 Oct 2026
1. **One function, many users**: Extract user config into `mkUserConfig` — never duplicate config blocks per user 2. **Primary user for system services**: Redis, PostgreSQL, launchd agents reference one user's home; additional users share system packages but not service data dirs 3. **Activation scripts must iterate**: Per-user setup in `system.activationScripts` must loop over all `usernames`, not just the primary 4. **Home-manager won't clobber**: Existing unmanaged dotfiles block activation silently — remove them before rebuild 5. **One darwinConfiguration per (host, user)**: When any user has `launchd.agents`, split flake outputs into `host-user` entries. `users.users…