This respository is for setting up a new Macbook with various settings I've grown to like.
- AWS CLI
- bitwarden-cli
- Bitwarden (desktop app)
- Discord
- Dropbox
- Google Chrome
- fd
- fish
- lsd
- Oh-My-Posh
- warp
- Homebrew
- VS Code
- Alignment
- Docker
- Git Graph
- GitLense
- GitHub Pull Request and Issues
- GitHub Copilot
- HashiCorp Terraform
- GitHub Desktop
- GitHub CLI
- pyenv
- pipenv
- python
- terraform
- terraform-docs
- Magnet
- Nerd Fonts
- ykman
- gpg
- pinentry-mac
- obsidian
- docker cli
- docker desktop
- glances
- ripgrep
- Soundsource
The easiest way to set up your macOS environment is with the automated bootstrap script:
# Clone this repository and run the bootstrap script
git clone https://github.com/zachreborn/macos_setup.git
cd macos_setup
./scripts/bootstrap-macos.shFeatures of the bootstrap script:
- âś… Idempotent - Safe to run multiple times
- âś… Comprehensive - Installs everything listed below automatically
- âś… Smart - Detects and handles Apple Silicon vs Intel Macs
- âś… Safe - Includes dry-run mode and robust error handling
- âś… Configures - Sets up shell, themes, and environment variables
Options:
# Preview what will be installed without making changes
./scripts/bootstrap-macos.sh --dry-run
# Normal installation
./scripts/bootstrap-macos.shPrerequisites:
- macOS 11+ (Big Sur or later)
- Admin access (sudo will be requested when needed)
- Internet connection
What gets installed:
- Homebrew package manager with auto-updates
- CLI Tools: fish, oh-my-posh, gh, aws, bitwarden-cli, terraform, pyenv, pipenv, ykman, gpg, docker, fd, ripgrep, lsd, glances
- GUI Apps: Google Chrome, Warp, VS Code, GitHub Desktop, Discord, Dropbox, Steam, Obsidian, Docker Desktop, SoundSource, Amazon WorkSpaces
- Fonts: Hack Nerd Font for terminal icons
- Shell: fish configured as default with Oh-My-Posh theme
- Configurations: GPG, pyenv, custom Warp theme, fish environment
If you prefer to install things manually or want to understand what the bootstrap script does, here are the individual steps:
The installations of applications utilizes Homebrew as the package manager for MacOS. It is best practice to use a package manager for easier installation and keeping your applications up to date.
- Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"- Configure automatic updates for Homebrew
brew autoupdate start --upgrade --cleanup --enable-notification/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"- Install Google Chrome
brew install --cask google-chrome- Login to Google Chrome
https://www.nerdfonts.com/font-downloads
brew tap homebrew/cask-fonts
brew install --cask font-hack-nerd-font- Install Warp
brew install --cask warp
mkdir -p ~/.warp/themes
cd ~/.warp/themes
curl -O "https://raw.githubusercontent.com/zachreborn/warp_theme_hyper_material/main/hyper_material.yaml"
cd ~- After installing, open Warp and go to Settings > Themes > Import Theme and select the hyper_material.yaml file.
- Install fish and set it as the default shell
brew install fish
sudo bash -c 'echo /opt/homebrew/bin/fish >> /etc/shells'
chsh -s /opt/homebrew/bin/fish- Set up fish to have brew in the path and update completions
fish_add_path /opt/homebrew/bin
fish_update_completions- Set up fish to run oh-my-posh and have all functions
cp -R ~/code/macos_setup/.config/fish/* ~/.config/fish/- Install Oh-My-Posh
brew tap jandedobbeleer/oh-my-posh
brew install oh-my-posh
mkdir ~/.poshthemes
cd ~/.poshthemes
curl -O "https://raw.githubusercontent.com/zachreborn/macos_setup/main/.poshthemes/octo-theme.omp.json"
oh-my-posh init fish --config ~/.poshthemes/octo-theme.omp.json | source
cd ~- Reload your terminal
- Verify that the theme is working by running
oh-my-posh --version
- Install GitHub Desktop
brew install --cask github- Run GitHub Desktop
- Login to GitHub
brew install ghbrew install --cask amazon-workspaces- Install VS Code
brew install --cask visual-studio-code- Login to Github in VS Code to synchronize settings and plugins
- Install Magnet by browsing to https://apps.apple.com/us/app/magnet/id441258766?mt=12
- Open Magnet
- Follow the setup instructions to enable Magnet to control your windows
brew install awscliBitwarden CLI is a command-line interface for accessing and managing your Bitwarden vault.
brew install bitwarden-cli# Login to your Bitwarden account
bw login
# Unlock your vault (returns a session key)
bw unlock
# Set the session environment variable (replace with actual session key)
export BW_SESSION="your-session-key"
# List all items in your vault
bw list items
# Search for specific items
bw list items --search "github"
# Get a specific item by name
bw get item "GitHub"
# Generate a password
bw generate --length 16 --uppercase --lowercase --number --special
# Sync your vault
bw sync
# Lock your vault
bw lockBitwarden Desktop is the graphical user interface for managing your Bitwarden vault.
brew install --cask bitwardenbrew install terraformbrew install terraform-docsterraform-docs markdown table --output-file ./README.md .https://hackernoon.com/reaching-python-development-nirvana-bb5692adf30c
brew install pyenvhttps://hackernoon.com/reaching-python-development-nirvana-bb5692adf30c
brew install pipenvbrew install ykmanbrew install gpgbrew install pinentry-macbrew install glancesbrew install --cask discord- Install Dropbox
brew install --cask dropbox- Sign in to Dropbox
- Configure synchronization settings
brew install --cask steambrew install --cask obsidianbrew install --cask docker-desktop
brew install dockerbrew install --cask soundsourcefd is a much better version of find for MacOS. It's more intuitive command structure is excellent and quite a bit faster at actually finding files.
brew install fdripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern. It's significantly faster than grep and has better default behavior for developers.
brew install ripgrep# Basic search
rg "search term"
# Search in specific file types
rg "function" --type js
# Case insensitive search
rg -i "TODO"
# Search with line numbers
rg -n "import"lsd is a modern replacement for ls with better defaults, colors, and icon support. It provides a more user-friendly directory listing experience.
brew install lsd# Basic listing (equivalent to ls -la)
lsd
# List with file sizes in human readable format
lsd -lh
# Tree view of directory structure
lsd --tree
# Show only directories
lsd -d */
# Sort by file size
lsd -lS
# Sort by modification time
lsd -ltbrew install hyper
hyper install hyper-material-themebrew install htop