homebot.yml
homebot.yml
homebot.yml
At the repo root. Every key is optional; unknown keys are errors, so typos
don’t fail silently. Must be .yml; a homebot.yaml gets a rename hint.
profiles:
default: workstation # used when `homebot unpack` gets no name
hosts:
laptop: workstation # per-hostname override
nas: server
autosave:
commit: daily # off | hourly | daily
push: true
exports: # refreshed by the helper about once a day
- name: brew
out: manifests/{os}/Brewfile
run: brew bundle dump --force --file={out} # {out} in run: the command writes the file
- name: apt
on: linux
out: manifests/linux/apt.txt
run: apt-mark showmanual | sort # no {out}: stdout is saved
profiles: [workstation] # optional: only hosts whose default profile is listed
- name: apt-repos
on: linux
out: manifests/linux/apt-repos # a folder: the command made one at {out}
run: homebot action apt-repos --export {out}
- name: apt # same name, another profile: its own list
on: linux
out: manifests/server/apt.txt
run: apt-mark showmanual | sort
profiles: [server]
triage:
watch: ["~/.config/*", "~/.*"] # entries end in /* or /.*
limits:
maxFileMB: 50 # commits with bigger files are refused
Keys
| Key | Default | Notes |
|---|---|---|
profiles.default |
none | profile unpack uses with no argument |
profiles.hosts.<hostname> |
none | wins over default |
autosave.commit |
off |
hourly = at most every 50 min, daily = every 20 h. This repo: daily |
autosave.push |
false |
push after each sync. This repo: true |
exports |
none | this repo: brew, apt-repos, apt, flatpak for workstation hosts; apt-repos and apt into manifests/server/ for server hosts |
exports[].name |
homebot export <name>. Two exports may share a name when no machine can run both: their profiles (or on) don’t overlap. homebot export apt then runs this machine’s one |
|
exports[].out |
{os}, {host}, {arch} filled in. A file, or a folder when the command writes one at {out}; a folder is compared and replaced whole |
|
exports[].run |
skipped (not failed) when the tool isn’t installed. Runs from the repo root; homebot works in it even when it isn’t on PATH |
|
exports[].on |
all | linux or macos |
exports[].profiles |
all | limit to hosts on these profiles |
triage.watch |
~/.config/*, ~/.* |
where new things are looked for |
limits.maxFileMB |
50 |
link: is goneOlder versions had a link: section listing folders to keep real. Now the
folder’s name says it: wrap it in (). A link: key is an error that tells
you so. See Linking rules.
decisions.yml
Written by homebot triage when you answer “ignore”. Hand edits are fine.
Globs work.
ignore:
- "~/.cache"
- "~/.config/google-chrome*"
- "~/.zcompdump*"
Snoozes are per machine and live in $XDG_STATE_HOME/homebot/snooze.json, not here.