Skip to content

Instantly share code, notes, and snippets.

@ColeMurray
Created January 8, 2026 19:37
Show Gist options
  • Select an option

  • Save ColeMurray/fe53a54c17abd23801b252ea3e9679b2 to your computer and use it in GitHub Desktop.

Select an option

Save ColeMurray/fe53a54c17abd23801b252ea3e9679b2 to your computer and use it in GitHub Desktop.
mac-bootstrap
#!/bin/bash
# Update and upgrade Homebrew
echo "Updating Homebrew..."
brew update
brew upgrade
# Install nvm (Node Version Manager)
echo "Installing nvm..."
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
echo "Installing rvm..."
curl -o- curl -sSL https://get.rvm.io | bash
PACKAGES=(
android-platform-tools
bison
cocoapods
cmake
curl
git
jq
kubectl
libpq
pyenv
pyenv-virtualenv
shared-mime-info
tmux
tree
wget
vim
youtube-dl
z
zsh
zsh-completions
zsh-autosuggestions
zsh-syntax-highlighting
)
brew install "${PACKAGES[@]}"
CASKS=(
android-studio
google-chrome
docker
flycut
mysqlworkbench
pgadmin4
qbittorrent
react-native-debugger
rubymine
visual-studio-code
virtualbox
vlc
)
brew install --cask "${CASKS[@]}"
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
echo "Setting up zsh as the default shell..."
chsh -s /bin/zsh
echo "All tools installed successfully! Please restart your terminal to apply changes."
# settings we’re about to change
osascript -e 'tell application "System Preferences" to quit'
# Ask for the administrator password upfront
sudo -v
# Keep-alive: update existing `sudo` time stamp until `.macos` has finished
while true; do
sudo -n true
sleep 60
kill -0 "$$" || exit
done 2> /dev/null &
###############################################################################
# Dock, Dashboard, and hot corners #
###############################################################################
# Position dock on the left side of the screen
defaults write com.apple.dock orientation -string "left"
###############################################################################
# Finder #
###############################################################################
# Set Dropbox directory as the default location for new Finder windows
# More options here: https://github.com/mathiasbynens/dotfiles/blob/96edd4b57047f34ffbcbb708e1e4de3a2e469925/.macos#L233
#defaults write com.apple.finder NewWindowTarget -string "PfLo"
#defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/Dropbox/"
# Hide icons for hard drives, servers, and removable media on the desktop
defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool false
defaults write com.apple.finder ShowHardDrivesOnDesktop -bool false
defaults write com.apple.finder ShowMountedServersOnDesktop -bool false
defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool false
# Finder: show all filename extensions
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
# Finder: show status bar
defaults write com.apple.finder ShowStatusBar -bool true
# Finder: show path bar
defaults write com.apple.finder ShowPathbar -bool true
# When performing a search, search the current folder by default
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
# Disable the warning when changing a file extension
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
# Enable spring loading for directories
defaults write NSGlobalDomain com.apple.springing.enabled -bool true
# Remove the spring loading delay for directories
defaults write NSGlobalDomain com.apple.springing.delay -float 0
# Expand the following File Info panes:
# “General”, “Open with”, and “Sharing & Permissions”
defaults write com.apple.finder FXInfoPanesExpanded -dict \
General -bool true \
OpenWith -bool true \
Privileges -bool true
###############################################################################
# Trackpad, mouse, keyboard, Bluetooth accessories, and input #
###############################################################################
# Trackpad: enable tap to click for this user and for the login screen
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1
defaults write NSGlobalDomain com.apple.mouse.tapBehavior -int 1
defaults write com.apple.dock showAppExposeGestureEnabled -bool true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment