The purpose of me is to be able to seed a machine running macos version 26 or above with a base set of packages, access, id and skills so as to approximate me.
Specifically this means installing, maintaining, updating and managing:
- A consistent set of base
packageswithbrew - A bunch of
dotfilespackages withstow - Some
skillsthat can approximate and cosplay my knowledge base and preferences - Some needed access and identity files with
op.
The quickstart is to do the below. Note that this is the command you would want to run for initial machine setup. To sync an existing machine you may need to modify the command like adding --force for instance. Note that you will need to export $OP_TOKEN or replace it with your token.
# clone repo
git clone git@github.com:pirog/me.git && cd me && chmod +x piroboot.sh
# run script
bash piroboot.sh \
--op-token "$OP_TOKEN" \
--ssh-key vmruk4ny353aly6tbom7z3v2hy/id_pirog \
--ssh-key vmruk4ny353aly6tbom7z3v2hy/id_botbox1 \
--dotpkg dotfiles/ai \
--dotpkg dotfiles/gh \
--dotpkg dotfiles/git \
--dotpkg dotfiles/hyperdrive \
--dotpkg dotfiles/lando \
--dotpkg dotfiles/ssh \
--dotpkg dotfiles/theme \
--dotpkg dotfiles/vim \
--dotpkg dotfiles/zsh
If you are looking to customize your install then advanced usage is for you.
- dotfiles/ai - AI assistant configuration, including Codex agent instructions.
- dotfiles/gh - GitHub CLI configuration.
- dotfiles/git - Git configuration and local include rules.
- dotfiles/hyperdrive - Hyperdrive configuration.
- dotfiles/lando - Lando configuration.
- dotfiles/ssh - SSH configuration and public keys.
- dotfiles/theme - Importable Tanaab theme JSON files.
- dotfiles/vim - Vim configuration.
- dotfiles/zsh - Zsh shell and prompt configuration.
The installation script has various options but you will need to download the script and invoke it directly.
# get usage info
bash piroboot.sh --helpSome notes on advanced usage:
If you do not wish to download the script you can set options with environment variables and curl the script.
TANAAB_BREWFILE accepts a comma-separated list. --brewfile can be passed more than once. brewfiles may be local file paths or urls, and relative file paths are resolved from the current working directory.
TANAAB_DOTPKG accepts a comma-separated list of stow package paths. --dotpkg can be passed more than once. dot package paths are resolved from the current working directory, installed relative to TANAAB_TARGET or --target, and conflicting target files are backed up under $TARGET/.tanaab-backups/ before stowing. stow --dotfiles is not currently implemented.
TANAAB_BREWFILE=Brewfile.base,Brewfile.two
TANAAB_DOTPKG=dotfiles/git,dotfiles/theme,dotfiles/zsh
TANAAB_DEBUG=0
TANAAB_TARGET="/somewhere-else"
These are equivalent commands and meant to demostrate environment variable usage vs direct invocation.
# use envvars
TANAAB_BREWFILE=Brewfile.base,Brewfile.two \
TANAAB_DOTPKG=dotfiles/git,dotfiles/theme,dotfiles/zsh \
TANAAB_DEBUG=1 \
/bin/bash -c "$(curl -fsSL https://boot.pirog.me)"
# invoke directly
bash piroboot.sh --brewfile Brewfile.base --brewfile Brewfile.two --dotpkg dotfiles/git --dotpkg dotfiles/theme --dotpkg dotfiles/zsh --debugThis repo uses Bun for local tooling.
Preferred local runtime versions are tracked in .bun-version and .tool-versions. Bun is the primary JavaScript runtime for repo tooling; Node is only kept as a compatibility reference entry for tool managers that expect it.
bun install
bun run lint
bun run buildbun run build stages the release artifacts in dist/ and prepends SCRIPT_VERSION when that environment variable is set.
The repo also includes ./brewgen.sh, which generates a Brewfile from the current Homebrew state for selected package types such as tap, cask, and brew, and can exclude specific packages with --exclude.
If you'd like to report a bug or submit a feature request then please use the issue queue in this repo.
We try to log all changes big and small in both THE CHANGELOG and the release notes.
Made with contrib.rocks.