Skip to content

pirog/me

Repository files navigation

Me

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 packages with brew
  • A bunch of dotfiles packages with stow
  • Some skills that can approximate and cosplay my knowledge base and preferences
  • Some needed access and identity files with op.

Usage

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.

Dotfile Packages

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

Advanced

The installation script has various options but you will need to download the script and invoke it directly.

# get usage info
bash piroboot.sh --help

Some notes on advanced usage:

Environment Variables

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"

Examples

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 --debug

Development

This 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 build

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

Issues, Questions and Support

If you'd like to report a bug or submit a feature request then please use the issue queue in this repo.

Changelog

We try to log all changes big and small in both THE CHANGELOG and the release notes.

Maintainers

Contributors

Made with contrib.rocks.

About

It's, and i'm a robot future

Resources

License

Stars

Watchers

Forks

Contributors