Example configuration repository consumed by dotstrap. It
captures macOS dotfiles as Handlebars templates, defines Homebrew dependencies,
and documents the secrets you need to supply at runtime.
manifest.yaml
values.yaml
brew/packages.yaml
secrets/secrets.yaml
templates/
manifest.yaml— maps template files undertemplates/to their destination paths inside the home directory.values.yaml— per-machine values that are safe to commit.secrets/secrets.yaml— references to environment variables or files that you manage outside of git.brew/packages.yaml— taps, formulae, and casks to install via Homebrew.
Secrets never live in git. Instead they are declared as indirections:
# secrets/secrets.yaml
github_token:
from: env
key: DOTSTRAP_GITHUB_TOKEN
aws_access_key:
from: env
key: DOTSTRAP_AWS_ACCESS_KEY
optional: trueAt runtime, dotstrap injects those entries under the secrets namespace so
you can use {{secrets.github_token}} inside any template. The repository ships
with secrets/.gitignore to ensure that accidental files in the directory stay
out of git history.
# Install dotstrap (from the sibling repository once published)
cargo install dotstrap --git https://github.com/<you>/dotstrap
# Dry run (skips Homebrew by default in CI)
DOTSTRAP_GITHUB_TOKEN=*** dotstrap . --dry-run
# Apply to current host (installs Homebrew packages)
DOTSTRAP_GITHUB_TOKEN=*** dotstrap .If you need to test against a temporary home directory:
DOTSTRAP_GITHUB_TOKEN=*** dotstrap . --home /tmp/dotstrap-home --dry-runThe workflow in .github/workflows/ci.yml assumes that the automation tool
lives at https://github.com/<owner>/dotstrap. It checks out both repositories,
installs dotstrap, and runs a dry run to ensure the templates render.
Update the owner/organization portion of the URL once both repositories live on GitHub.