Keeping in sync (haus)
Once you’re set up, day-to-day life with nebelhaus runs through one command:
haus. It wraps the Nix commands you’d otherwise type by hand — build,
switch, update, roll back — with safe defaults.
The everyday loop
Section titled “The everyday loop”Edit your config, then apply it:
haus edit # open your host file in $EDITOR# …make changes…haus rebuild # build first, then switch — a failed build never activateshaus rebuild always builds before switching, so a config with an error can’t
take down your running system — you just see the build fail and fix it.
Staying current
Section titled “Staying current”The rice lives upstream. To pull new versions:
haus update # bump the nebelhaus pin, then rebuildThis updates the flake.lock in ~/.config/nix to the latest nebelhaus and
rebuilds in one step. Because inputs are pinned, nothing changes until you run
this — your machine stays exactly as it was until you choose to move it.
When something goes wrong
Section titled “When something goes wrong”haus rollback # atomically return to the previous generationhaus generations # list generations you can roll back tohaus doctor # health check: Nix, Xcode CLT, GUI agents, cask driftEvery switch creates a new generation; rollback steps back to the last one
instantly. For macOS settings (not packages), the APFS snapshot the installer
took is your coarser rewind.
The full command set
Section titled “The full command set”| Command | What it does |
|---|---|
haus rebuild | Build, then switch — your everyday apply |
haus update | Update the nebelhaus pin, then rebuild |
haus rollback [N] | Return to the previous generation (or generation N) |
haus generations | List available generations |
haus status | Current generation and how stale the rice is |
haus edit | Open your host file in $EDITOR |
haus doctor | Diagnose Nix / CLT / agent health and cask drift |
haus btm | On macOS Tahoe+, diagnose Background Task Management blocks on nix login items |
Catching up on another machine
Section titled “Catching up on another machine”If you rebuild from a second Mac (or after shipping changes from elsewhere), just pull your config repo and rebuild:
cd ~/.config/nix && git pullhaus rebuildSince everything is in git and pinned, the second machine converges to the exact same system.
For the deeper picture of why pins work this way, see How the flakes fit together.