One flake raises the whole Mac. Think omarchy, on macOS instead of Arch.
pre-release · Nothing here changes your Mac without a way back: every rebuild is a Nix generation haus rollback returns to, and macOS's own settings — the one thing a rollback can't reach — are what haus capture and haus revert-settings are for. That's the intent, not a warranty: run it on a machine you can afford to rebuild, and tell us what breaks.
Tiling windows, a status bar, a ⌘Space palette, the terminal, Touch ID for
sudo, and every app you actually use — declared in one file, applied by one
command, native to the grain of the Mac rather than a Linux desktop bolted onto
it. Wipe the machine, run one line, and the house stands again exactly as it
was, down to the fog-grey.
haus is the layer: nix-darwin modules, the haus.* options you set, the
haus CLI you run. A desktop is one complete set of answers to those
options. hacker is the first desktop — grey, quiet, developer-shaped.
This repo ships both; hausfold is the org that makes them, which is why the
repo is hausfold/haus.
📖 hausfold.co/docs — installing, the rooms, and pounce, the palette
curl -fsSL https://hausfold.co/haus.sh | bashThat asks which desktop you want. Swapping the URL answers it instead:
curl -fsSL https://hausfold.co/nebelhaus.sh | bash |
the whole house — tiling, bar, palette, shelf, agents |
curl -fsSL https://hausfold.co/everyday.sh | bash |
a Mac for someone who doesn't write code |
curl -fsSL https://hausfold.co/minimal.sh | bash |
just the themed shell, on otherwise stock macOS |
Already have Nix? nix run github:hausfold/haus#bootstrap -- --desktop=minimal.
→ choosing a desktop
The installer puts the prerequisites in place (Xcode CLT, Determinate Nix), then
scaffolds a thin config of your own at ~/.config/nix: an ~18-line flake
consuming this repo, plus one host file for what's personal — git identity,
signing keys, secrets, your private apps. You never edit this repo to use it.
Beside it lands hosts/<host>/options.nix — every haus.* option there is, at
its default, with its type and a docs link, all commented out. You discover
options by reading your own config, and it's rendered from the revision you
pinned, so it can't offer you one you don't have.
haus rebuild # build, then switch — a bad edit never reaches the running system
haus update # pull the latest haus and its apps, then rebuild
haus rollback # back one generation, atomically
haus edit # open your host file
haus options # re-render that catalogue against the revision you're on
haus set # search every option this Mac has, then pick the value
haus set theme.accent teal # or say it outright: type-checked, then one rebuild
haus plan # what the next rebuild would change, without building it
haus diff # what you declared vs what macOS actually has right now
haus doctor # Nix, the CLT, the GUI agents, Homebrew drift→ every command · every option
Twelve capabilities, each a switch: Apps · Appearance · Displays · Development · Windows · Bar · Launcher · Shelf · Focus · AI · Text expansion · Security. Your desktop decides which are on; one line in your host overrules it. Six of them are also exported as standalone nix-darwin modules, so you can take the tiling or the bar into a flake of your own and leave the house behind.
→ what each room does · stealing one
A declarative machine is the one kind an agent can safely reconfigure — the
rebuild builds before it switches, so a bad edit never reaches the running
system. What was missing was knowledge: left to guess, a model reaches for brew install and dotfiles the next rebuild overwrites.
So the layer ships it. haus.ai.skill writes a haus skill into the directory
each client you named actually reads (~/.claude/skills/haus,
~/.codex/skills/haus, ~/.config/opencode/skills/haus), with an option
reference generated from the revision you're pinned to — it can only
describe options you have. "Install Slack" or "make everything bigger" becomes
an edit to your host file, applied and verifiable.
→ coding agents
- Modules — one room in your own flake,
mkHaus, the identity knobs - Making it yours · Keeping it current · Leaving
AGENTS.md— hacking on the house