This repo contains info on all the apps / tools / settings I use on my Mac.
- What MacBook do I have?
- Homebrew
- Github
- OS Settings
- Quick Launching
- App Switching
- Menu Bar Utilities
- Web Browsers
- Apps I Use
- Command Line Tools
- Fonts
- Terminal
- Node.js
I am using a 2021 16" MacBook Pro
The specs:
- Apple M1 Max
- 64GB RAM
- 2TB SSD
Read more about my MacBook here.
Homebrew allows us to install tools and apps from the command line.
To install it, open up the built in Terminal app and run this command:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"This will also install the xcode build tools which is needed by many other developer tools.
Setup GitHub next so you can clone this repo and access the Brewfile for easy batch installs.
- Follow this guide to setup an ssh key for github
- Follow this guide to add the ssh key to your github account
- Follow this guide to test the ssh connection
If this is a work machine, you'll need a second SSH key to keep personal and work GitHub accounts separate. Generate a key for each account following the guides above, then configure ~/.ssh/config to route them automatically:
# Personal GitHub
Host github.com
HostName github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes
# Work GitHub
Host github-bc
HostName github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519_bc
IdentitiesOnly yesClone work repos using the github-bc host alias:
git clone git@github-bc:bigcommerce/repo-name.gitNote: This pairs with the git
includeIfconfig in Dotfiles which automatically sets your work email for repos under~/Dev/commerce/.
git clone git@github.com:chris-nowicki/Setup.git ~/Setup
cd ~/SetupThis repo includes a Brewfile that contains all CLI tools, GUI apps, fonts, and Mac App Store apps. Install everything in one command:
brew bundle --file=BrewfileThis replaces the need to install apps individually. See the Brewfile for the full list.
Note: Mac App Store apps require the
masCLI (included in the Brewfile) and you must be signed into the App Store first.
These are my preferred settings for Desktop, the Dock and Finder.
Most of these can be applied via defaults write commands instead of clicking through System Settings.
I don't use the Dock at all. It takes up screen space, and I can use RayCast to launch apps and AltTab to switch between apps. I make the dock as small as possible and auto hide it.
# Small dock size
defaults write com.apple.dock tilesize -int 36
# Magnification off
defaults write com.apple.dock magnification -bool false
# Minimize windows into application icon
defaults write com.apple.dock minimize-to-application -bool true
# Auto-hide the Dock
defaults write com.apple.dock autohide -bool true
# Don't show suggested and recent apps
defaults write com.apple.dock show-recents -bool false
# Restart Dock to apply changes
killall DockI don't like the new Desktop, Stage Manager or Widget features in Tahoe, so I disable them.
# Disable Stage Manager
defaults write com.apple.WindowManager GloballyEnabled -bool false
# Show Desktop -> only in Stage Manager on click
defaults write com.apple.WindowManager EnableStandardClickToShowDesktop -bool false
# Show windows from an application -> All at Once
defaults write com.apple.WindowManager AppWindowGroupingBehavior -bool true# Show Widgets -> in Stage Manager only (not on Desktop)
defaults write com.apple.WindowManager StandardHideWidgets -bool true# Show all filename extensions
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
# Disable warning before changing an extension
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
# Search the current folder by default
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
# New Finder windows show home folder
defaults write com.apple.finder NewWindowTarget -string "PfHm"
# Show path bar
defaults write com.apple.finder ShowPathbar -bool true
# Show status bar
defaults write com.apple.finder ShowStatusBar -bool true
# Show tab bar
defaults write com.apple.finder ShowTabView -bool true
# Hide all desktop icons
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
# Restart Finder to apply changes
killall Finder# Disable natural scrolling
defaults write NSGlobalDomain com.apple.swipescrolldirection -bool false# Show date always, hide day of week, show seconds
defaults write com.apple.menuextra.clock ShowDate -int 1
defaults write com.apple.menuextra.clock ShowDayOfWeek -bool false
defaults write com.apple.menuextra.clock ShowSeconds -bool true
defaults write com.apple.menuextra.clock FlashDateSeparators -bool false
killall SystemUIServerThese settings don't have reliable defaults write equivalents:
- System Settings -> General -> AutoFill & Passwords -> AutoFill Passwords and Passkeys -> uncheck
- System Settings -> Control Center -> Spotlight -> Don't show in Menu Bar
- System Settings -> Control Center -> Siri -> Don't show in Menu Bar
The built in spotlight search is a bit slow for me and usually has web search results as the default instead of apps or folders on my machine.
I use RayCast (included in Brewfile).
- 1Password
- RayCast Homebrew Plugin so we can easily install formulae and casks directly from RayCast.
The built in App switcher only shows application icons, and only shows 1 icon per app regardless of how many windows you have open in that app.
I use an app switcher called AltTab (included in Brewfile). It shows full window previews, and has an option to show a preview for every open window in all applications (even minimized ones).
I replace the built-in CMD+TAB shortcut with AltTab.
Hidden Bar
If you have several apps running that have menu bar icons, Hidden Bar (included in Brewfile) will let you choose which ones should be hidden. This cleans things up if you have a ton of background apps running.
I use safari for my everyday browsing life.
I use Google Chrome for my work and local development previews.
All of the following are installed via the Brewfile with brew bundle:
- 1password-cli - 1Password command-line tool
- claude-code - AI coding assistant
- cleanshot - Screenshot tool
- finetune - Menu bar app for per-app volume control and EQ
- discord - Messaging / Community
- karabiner-elements - Keyboard customization
- launchos - App launcher
- notion - Notes / Project management
- obs - Streaming / Recording
- obsidian - Note taking
- pearcleaner - App uninstaller
- screen-studio - Screen recording
- slack - Messaging
- spotify - Music streaming
- visual-studio-code - Code Editor
- wispr-flow - Voice-to-text dictation
- zoom - Video conferencing
These are installed via mas in the Brewfile:
- 1Password for Safari
- Final Cut Pro
- Keynote
- Numbers
- Pixelmator Pro
- Speedtest
My settings are optimized for a minimal, distraction-free setup since I primarily use Claude Code and only open the IDE for reviewing diffs and quick edits.
Settings and CLAUDE.md config are backed up in this gist.
Extensions:
- Astro - Astro language support
- Claude Code - AI coding assistant
- Code Spell Checker - Spell checking
- ESLint - Linting
- Even Better TOML - TOML support
- GitHub Actions - Workflow support
- GitLens - Git superpowers
- markdownlint - Markdown linting
- Material Icon Theme - File icons
- MDX - MDX language support
- Playwright - Test runner
- Prettier - Code formatting
- Pretty TypeScript Errors - Readable TS errors
- Tailwind CSS IntelliSense - Tailwind support
- Todo Tree - Find TODOs
- Tokyo Night - Color theme
- YAML - YAML formatting
All installed via the Brewfile:
- eza - Modern replacement for
ls - gh - GitHub CLI
- lazygit - Terminal UI for git
- mole - Deep clean and optimize your Mac
- rulesync - Sync AI coding rules across projects
- pnpm - Fast package manager
- starship - Cross-shell prompt
- stow - Symlink manager for dotfiles
- zoxide - Smarter
cdcommand - zsh-autosuggestions - Fish-like suggestions for zsh
- zsh-syntax-highlighting - Syntax highlighting for zsh
Installed via the Brewfile:
- Anonymous Pro
- Geist - Vercel's sans-serif font
- Geist Mono - Vercel's monospace font
- Meslo LG Nerd Font
- Reenie Beanie - Handwritten font
I prefer Ghostty (included in Brewfile).
All my dotfiles are stored on github.
I clone this repo to my machine and copy the files into my home directory.
I use nvm to manage the installed versions of Node.js on my machine. This allows me to easily switch between Node.js versions depending on the project I'm working in.
See installation instructions here.
OR run this command:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bashNow that nvm is installed, you can install a specific version of node.js and use it:
nvm install 20
nvm use 20
node --versionThere are a few global node modules I use a lot:
npm install -g npm-check-updates