Recently, I bought a new M1 MacBook Pro after using Intel MacBooks for the last 10 years. Within the first few days of using it, I was immediately hooked. It is, by far, the best computer I’ve owned in my professional and personal life. I wanted to set this up completely from scratch, without using the migration assistant or importing from a backup. This felt like a good time to codify some of the settings and applications I use and recommend to other folks. So, here’s a look at my comprehensive macOS development setup.
During setup, I sign in with my iCloud account to sync contacts, messages, and calendar events. I enable touch ID and disable Siri.
Immediately, I copy a few key files from my previous computer.
Note: It’s nice to skip all of the
git config --global setup here, but otherwise you may need to specify things like
alias (among others).
~/.ssh/(I shouldn’t do this, but it’s easier than updating my SSH keys everywhere. I cycle these after I’ve finished setting up, but this is one less step during this process.)
~/bin/(a collection of scripts I’ve written, also included in my
Next, I download a few key applications from the internet:
- Visual Studio Code
- Orion Browser
- Firefox Developer Edition
- BetterTouchTool (Note: window keybindings inspired by Rectangle)
- Powerline Fonts
- XCode Developer Tools:
Some of the above may be available in Homebrew Cask, but I don’t mind downloading them by hand.
brew install \ wget \ exa \ nodenv \ direnv \ fasd \ fzf \ shellcheck \ tldr \ jq \ fd \ neovim \ ripgrep \ tmux \ up \ yarn \ telnet \ git-extras
Note: Some of these have prompts at the end for additional installation instructions. One in particular is fzf:
/opt/homebrew/opt/fzf/installto install keybindings, autocomplete, and history search
- Set to fastest “Key Repeat”
- Set to shortest “Delay Until Repeat”
- Use Modified Keys -> Remap “Caps Lock” to “Control”
- Add new Colemak input source, can switch between with Control + Option + Space
Use smart quotes and dashes
- Disable curly quotes, use
" and '
- Use F1, F2, etc. keys as standard function keys
Capitalize word automatically
Add period with double-space
- Tap to click
- Zoom > Enable
Use scroll gesture with modifier keys to zoom
- Pointer Control > Trackpad Options > Enable Dragging > Three Finger Drag
- Turn hiding on
- Set size to ~20%
# Finder: allow quitting via ⌘ + Q; doing so will also hide desktop icons defaults write com.apple.finder QuitMenuItem -bool true # Finder: show hidden files by default defaults write com.apple.finder AppleShowAllFiles -bool true # 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 # Disable the warning when changing a file extension defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false # Avoid creating .DS_Store files on network or USB volumes defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true # Show the ~/Library folder chflags nohidden ~/Library && xattr -d com.apple.FinderInfo ~/Library # Show the /Volumes folder sudo chflags nohidden /Volumes # Disable press-and-hold for keys in favor of key repeat defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false killall Finder;
Additional Application Setup
I recommend checking in configuration settings to your project repository. This reduces global setup needed. Some recommended extensions:
- GitHub Copilot
- Live Share
- Todo Tree
- Markdown All in One
- Text Editor > Files > Auto Save -> onWindowChange
- Text Editor > Tab Size -> 2
- Text Editor > Bracket Pair Colorization: Independent Color Pool Per Bracket Type -> enable
- Text Editor > Default Formatter -> Prettier
- Text Editor > Guides: Bracket Pairs -> true
- Goto Location: Multiple Definitions -> goto
- Text Editor > Formatting > Format On Save -> Enable
- TypeScript > Preferences: Import Module Specifier -> non-relative
- General > Reuse previous sessions’s directory
- Colors > Solarized Dark
- Text > Font -> Source Code Pro for Powerline
- Terminal > Scrollback lines -> Unlimited scrollback
- Keys > Left Option key -> Esc+
- Keys > Right Option key -> Esc+
Window > Save Window Arragement
- Note: I arrange my windows and tabs for my main project and CD into the appropriate directories before saving.
- Dimming > Dimming amount -> 20
Wrapping Up macOS Development Setup
Ultimately, I really enjoy starting fresh with new computers rather than importing from backups. I tend to go through this process every year or two when I upgrade macOS versions since I typically perform fresh installs. However, I often forget to import certain settings, and I hope this can be a reference for others in the future.