Skip to content

Packages

Package installation should be reproducible enough to restore the machine, but not so rigid that every temporary experiment becomes permanent setup.

  • Homebrew formulae and casks for system-level tools and apps.
  • ghq for reproducible local repository layout under ~/repos.
  • pnpm workspace dependencies for repo-local development.
  • Editor extension lists for editor-specific tooling.
  • Language version managers only when the ecosystem benefits from them.

Best Practices

  • Add a package to automation only after it becomes part of daily work.
  • Keep one-off experiments out of bootstrap manifests.
  • Prefer package-manager manifests over custom install commands.
  • Separate core tools from optional apps.
  • Run package setup before dotfiles that assume those tools exist.

Brewfiles

Use the root Brewfile for terminal foundations and daily CLI tools:

bash
brew bundle dump --file Brewfile --force
brew bundle --file Brewfile

Use Brewfile.apps for optional desktop applications:

bash
brew bundle --file Brewfile.apps

Mac App Store entries in Brewfile.apps use mas, which requires the App Store to be signed in locally.

Review generated changes before committing. Brewfiles should describe the workstation, not every app ever tried.

Personal workstation notes, scripts, and dotfiles.