A macOS bootstrap and configuration management tool that automates the setup of a new MacBook from scratch. One script to install all development tools, applications, and personal dotfiles.
Run this single command on a fresh Mac:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/ethnhll/whothis/main/setup.sh)"Or clone and run manually:
git clone https://github.com/ethnhll/whothis.git ~/whothis
cd ~/whothis
./setup.shThe setup script will:
- Install Xcode Command Line Tools (if not present)
- Clone the repository to
~/whothis - Install Homebrew
- Install uv (Python package manager)
- Run an ansible playbook (via
uvx) - Symlink dotfiles using GNU stow
- git, vim, stow
- Docker (via Colima)
- LocalStack
- act (GitHub Actions local testing)
- AI Tooling: Claude, Claude Code
- Browsers: Chromium, Firefox Developer Edition
- IDEs: JetBrains Toolbox
- Productivity: Obsidian, Proton Drive
- Security: KeePassXC, ProtonPass, ProtonVPN, Yubico Authenticator
- Terminal: iTerm2
- Utilities: Rectangle (window tiling)
- Xcode
- Strongbox (password manager)
- iWork Suite (Keynote, Numbers, Pages)
whothis/
├── ansible/
│ ├── main.yml # Main Ansible playbook
│ ├── default.config.yml # Package and app configuration
│ ├── requirements.yml # Ansible collection dependencies
│ └── inventory # Local inventory
├── dotfiles/ # Stow-managed configuration files
│ ├── cache/ # dumping ground for various programs' temp files
│ ├── claude/ # Claude Code settings
│ ├── git/ # Git configuration
│ ├── ssh/ # SSH configuration
│ ├── vim/ # Vim configuration
│ └── zsh/ # zsh configuration
├── Makefile # Build orchestration
├── setup.sh # Bootstrap script
└── README.md
Dotfiles are managed using GNU stow.
Each subdirectory in dotfiles/ mirrors the home directory structure and gets symlinked automatically.
To manually stow a specific config:
cd dotfiles
stow zsh # Symlinks zsh config to ~
stow vim # Symlinks vim config to ~make version # Display current version (from git tag)
make homebrew # Install Homebrew
make uv # Install uv package manager
make playbook # Run the Ansible playbookEdit ansible/default.config.yml to customize:
homebrew_packages- CLI tools to installhomebrew_casks- GUI applications to install
- macOS (tested on macOS Sequoia 15+)
- Internet connection
- Apple ID (for Mac App Store apps)