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 gone

Older 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.