Layout
Layout
Layout
The repo has no “what goes where” config. The folder is the configuration.
~/.home/
├── autolink/ linked into $HOME
│ ├── common/ every OS
│ ├── linux/ Linux only
│ └── macos/ macOS only
├── private/ linked too, committed only as *.age
│ ├── common/ linux/ macos/
│ ├── recipients.txt public key (committed)
│ └── identity.age private key, passphrase-encrypted (committed)
├── manifests/
│ ├── profiles/ base.yml, workstation.yml
│ ├── actions/ your own profile steps (*.sh)
│ ├── common/ linux/ macos/ Brewfile, apt.txt, apt-repos/, flatpak.txt
├── furniture/ fonts/ drivers/ themes/ vaults/ vendor/
├── bin/ personal scripts (zsh-bench, ...)
├── homebot/ the tool
├── docs/ this site
├── agent/reports/ agent write-ups
├── homebot.yml tool settings
├── decisions.yml triage answers ("never ask about X")
└── bootstrap.sh first run on a new machine
Layers
autolink/ and private/ each have three layers: common/, linux/,
macos/. On a given machine homebot merges common/ with the current OS
layer, and private/ with autolink/.
- Folders merge across layers and trees:
common/config/zshand
linux/config/zshboth feed~/.config/zsh. - A file lives in exactly one place. The same file in two layers is a
layout error, not an override.
Why no overrides?
Overrides make you diff two files in your head to know what’s live. One file,
one place: grep finds it, and the per-OS bit goes in a per-OS file
(env.d/10-linux.zsh, wezterm/platform.lua).
The other folders
| Folder | Rule |
|---|---|
manifests/ |
Read by homebot unpack. Brewfile, apt.txt, apt-repos/, flatpak.txt are generated by homebot export; change what’s installed, don’t hand-edit. See Profiles. |
furniture/ |
Never linked or copied unless a profile step asks (- fonts: [Family]). Files over limits.maxFileMB (50) are refused at commit. |
bin/ |
On $PATH before everything else (set in .zshenv). |
agent/ |
Reports from coding agents, dated YYYY-MM-DD-topic.md. |
Config files
Both are .yml. A .yaml file is refused with a rename hint.
| File | Who writes it |
|---|---|
homebot.yml |
You. See homebot.yml. |
decisions.yml |
homebot triage (hand edits are fine). Globs work. |
manifests/profiles/*.yml |
You. |