All Homebrew formulae managed by the mac-setup repo, organized by category. These are installed automatically when the Ansible playbook runs.
Source: roles/homebrew/vars/main.yml under homebrew_formulae.
Tool
Purpose
Config
Notes
zsh
Default shell
configs/shell/.zshrc
macOS ships with zsh, but Homebrew keeps it up to date
zsh-autosuggestions
Fish-like suggestions as you type
—
Loaded in .zshrc; suggests from history
zsh-completions
Additional completion definitions
—
Extends built-in completions for common tools
zsh-syntax-highlighting
Colors valid/invalid commands as you type
—
Red = not found, green = valid; catches typos before hitting Enter
starship
Cross-shell prompt
configs/shell/starship.toml
TOML config; shows git branch, runtime versions, exit codes, duration
fzf
Fuzzy finder
—
Powers Ctrl-R history search and Ctrl-T file picker in the shell
git
Distributed VCS
configs/git/ (rendered via Jinja)
Homebrew keeps git ahead of the macOS-bundled version
git-filter-repo
Rewrite git history
—
Used by user_scripts/git-rewrite-emails to fix author emails in bulk
Tool
Replaces
Why this tool
Config
bat
cat
Syntax highlighting, line numbers, git integration
configs/bat/
eza
ls
Icons, tree view, git status column, color by file type
Aliased as ls, ll, la, lt in .zshrc
ripgrep
grep
Fastest grep alternative; respects .gitignore by default
Aliased as rg
tlrc
man
Community-maintained cheat sheets with practical examples
Lightweight Rust client for tldr pages
zoxide
cd
Learns frequently visited directories, fuzzy matching with z
Initialized in .zshrc
Tool
Purpose
Config
Notes
btop
System/process monitor
configs/btop/btop.conf
Full TUI with CPU, memory, network, disk graphs
difftastic
Structural diffs
—
AST-aware diffs that understand language syntax, not just text
gh
GitHub CLI
configs/gh/config.yml
YAML config; PR creation, issue management, repo operations
git-delta
Syntax-highlighted git diffs
Configured in configs/git/
Used as the default git pager for diff, log, and show
hurl
HTTP API testing
—
Plain-text .hurl files; great for CI pipelines and scripted tests
jq
JSON processor
—
Pipe JSON through filters, extract fields, transform data
lazygit
Git TUI
configs/lazygit/config.yml
Aliased as lg in .zshrc; staging, committing, rebasing in a TUI
shellcheck
Shell script linter
—
Catches common bash/zsh bugs and pitfalls
yq
YAML processor
—
Like jq but for YAML; reads/writes YAML, JSON, XML, CSV, TSV
Tool
Purpose
Notes
ansible
Configuration management
Runs the mac-setup playbook itself; also useful for work automation
mise
Runtime version manager
Manages Node, Python, Java, Bun, etc. See Runtimes
Tool
Purpose
Notes
colima
Container runtime
Free Docker Desktop alternative; runs a Linux VM with Docker daemon
docker
Container CLI
Talks to the colima-managed Docker daemon
docker-buildx
Extended builds
BuildKit-based builder; multi-platform images, cache mounts
docker-compose
Multi-container apps
Compose v2 plugin; define services in docker-compose.yml
Colima caveat. The Ansible run only installs colima and symlinks its profile from configs/colima/default.yaml to ~/.colima/default.yaml; it does not start the VM. The Linux VM (and therefore the Docker daemon) does not always come up automatically after install or reboot. If docker ps fails or validate.sh warns that the docker context is not colima, start it manually:
colima start # or: colima start --cpu 4 --memory 8
docker context use colima
Run colima status to confirm it is running. Use colima stop to free resources when you are done. To have it start at login, see the Colima docs on auto-starting .
Tool
Purpose
Notes
awscli
AWS CLI
Configure with aws configure; supports profiles and SSO
helm
Kubernetes package manager
Install, upgrade, and manage Kubernetes charts
kubernetes-cli
Kubernetes CLI (kubectl)
Cluster management, pod inspection, deployments
Tool
Purpose
Notes
atuin
Shell history manager
Full-text search across sessions, per-directory filtering, sync across machines
These CLIs ship with this repo rather than Homebrew. They get symlinked
into ~/.local/bin/ automatically (Ansible user-scripts role, or
make install-creds for the credentials bundle).
Command
Source
Purpose
git-rewrite-emails
user_scripts/git-rewrite-emails/
Bulk-rewrite git author/committer emails across a repo’s history
git-status-all
user_scripts/git-status-all/
Multi-repo git status summary
creds_login_slack / creds_login_google
configs/creds/_lib/bin/
OAuth login for Slack / Google; saves tokens under $CREDS_HOME/<svc>/
creds_validate
configs/creds/_lib/bin/
Probe every credentials connector (Slack, Google, Atlassian, Datadog, Looker, Mixpanel, Snowflake, Statsig) and report OK / MISCONFIGURED / FAIL with a sampled list-API entry as evidence
See configs/creds/README.md for the full env-var matrix and exit-code semantics.
These tools were evaluated or previously installed and removed. The reason is listed for each.
Tool
Reason for exclusion
tree
Replaced by eza --tree (aliased as lt)
fd
fzf works well without it for this setup
direnv
mise handles project-level env vars natively
aichat
Using Claude CLI instead
gemini-cli
Using Claude CLI instead
go
Managed by mise when needed, not installed globally
uv
Managed by mise, not Homebrew
hyperfine
Niche — install per-project if needed
sd
Niche — install per-project if needed
tokei
Niche — install per-project if needed
k6
Niche — install per-project if needed
watchexec
Niche — install per-project if needed
zizmor
Niche — install per-project if needed
actionlint
Niche — install per-project if needed
gitleaks
Niche — install per-project if needed
pre-commit
Niche — install per-project if needed
buf
Niche — install per-project if needed
protobuf
Niche — install per-project if needed
cloudflare-wrangler
Niche — install per-project if needed
graphviz
Niche — install per-project if needed
To add a new formula, edit roles/homebrew/vars/main.yml and add it to the homebrew_formulae list, then run make setup.