My Mac Setup

Daniel Wirtz

4 months ago

Status
Slug
Desciption
Featured
Cover Video
Cover Image
Social Image
Publish date
Last edited time
Created time
URL
 

Table of contents

First steps

Install Homebrew

Homebrew is a package manager that simplifies the installation and management of apps on MacOs. There is also a Homebrew Raycast plugin, which makes it easy to see what’s installed and to search for packages.
# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Add brew to default shell path
echo >> /Users/eugeneyan/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/eugeneyan/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

Change computer name

sudo scutil --set ComputerName "wirtzdan"
sudo scutil --set LocalHostName "wirtzdan"
sudo scutil --set HostName "wirtzdan"

Install apps and tools

Now, with Homebrew installed open the terminal and install all relevant apps and tools.

Apps

brew install --cask \
raycast \
bitwarden \
google-chrome \
firefox \
brave-browser \
zen-browser \
cursor \
iterm2 \
slack \
discord \
obs \
keycastr \
cleanshot \
descript \
capacities \
telegram-desktop \
whatsapp \
font-monaspace \
boop \
notunes \
spotify \
qlmarkdown \
jordanbaird-ice \

Oh my ZSH

MacOS already uses ZSH as its default shell. To enhance the terminal experience, I’m using Oh My Zsh!. It allows me to enable plugins and themes, making the terminal more functional and visually appealing and to use things such as Starship.
# Install Oh My ZSH
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Install Starship theme
brew install starship
# Make Starship the default theme
echo 'eval "$(starship init zsh)"' >> ~/.zshrc
# Reload ZSH config
source ~/.zshrc
# Install Plugins (Completion, Suggestion, Syntax highlighting)
brew install zsh-autosuggestions zsh-syntax-highlighting

Terminal applications

brew install git nvm yarn pnpm
git \
nvm \
yarn \
pnpm \

NVM

# Install latest LTS version
nvm install --lts
# Check if installation was succesfull
node -v && npm -v
# Update NPM to latest version
npm install -g npm@latest
# Set defaults for npm:
npm set init-author-name="Daniel Wirtz"
npm set init-author-email="daniel@danielwirtz.com"
npm set init-author-url="danielwirtz.com"

Update settings

Dock settings

My philosophy is to do as much as possible through the keyboard by using Raycast. Therefore, I've disabled the dock by changing the show delay to an arbitary high number.
View settings
defaults write com.apple.dock autohide -bool true
defaults write com.apple.dock autohide-delay -float 1000
defaults write com.apple.dock no-bouncing -bool TRUE
killall Dock

System settings

Many system settings can be tweaked in the UI:
View settings
  • Appearance →
    • Set mode to "Dark Mode"
  • Trackpad →
    • Enable "Tap to Click"
    • Set "Look up & data detectors off" to "Off"
    • More gestures →
      • Set "Notification Centre" to "Off"
    • Set "Tracking speed" to max
  • Mouse →
    • Set "Mouse speed" to max
    • Set "Secondary Click" to "Click Right Side"
  • Keyboard →
    • Keyboard layouts →
      • Disable "Capitalise word automatically"
      • Disable "Add full stop with double-space"
      • Disable "Use smart quotes and dashes"
      • Use " for double quotes
      • Use ' for single quotes
    • Keyboard shortcuts →
      • Spotlight →
        • Disable all (Using Raycast instead)
      • Mission control →
        • Disable all
      • Screenshots →
        • Disable all (Using Cleanshot instead)
  • Accessibility →
    • Zoom →
      • Set "Modifier key for scroll gesture" to "⌃ Control" (Great for presentations)
      • Advanced →
        • Set "Zoomed images moves" to "Continously with pointer"
        • Enable "Show zoomed image while screen sharing"
    • Pointer control →
      • Trackpad options →
        • Set "Scroll speed" to max
      • Mouse options →
        • Set "Scroll speed" to max
    • Display →
      • Disable "Reduce motion"
  • Security and Privacy →
    • Screen & System Audio Recording →
      • Add permissions for all browsers
  • Storage →
    • Music creation →
      • Click "Remove GarageBand Sound Library"
    • Applications →
      • Delete all unused apps
But some settings can only be changed through the terminal:
View settings
# Close any open System Preferences panes, to prevent them from overriding
# settings we’re about to change
osascript -e 'tell application "System Preferences" to quit'
# Show Library folder
chflags nohidden ~/Library
# Show hidden files
defaults write com.apple.finder AppleShowAllFiles YES
# Add path to title in Finder
defaults write com.apple.finder _FXShowPosixPathInTitle -bool true
# Disable the sound effects on boot
sudo nvram SystemAudioVolume=" "
# Automatically quit printer app once the print jobs complete
defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true
# Disable the “Are you sure you want to open this application?” dialog
defaults write com.apple.LaunchServices LSQuarantine -bool false
# Disable shadow in screenshots
defaults write com.apple.screencapture disable-shadow -bool true
# Finder: disable window animations and Get Info animations
defaults write com.apple.finder DisableAllAnimations -bool true
# Keep folders on top when sorting by name
defaults write com.apple.finder _FXSortFoldersFirst -bool true
# Automatically open a new Finder window when a volume is mounted
defaults write com.apple.frameworks.diskimages auto-open-ro-root -bool true
defaults write com.apple.frameworks.diskimages auto-open-rw-root -bool true
defaults write com.apple.finder OpenWindowForNewRemovableDisk -bool true
# Use list view in all Finder windows by default
defaults write com.apple.finder FXPreferredViewStyle -string "Nlsv"
# Enable snap-to-grid for icons on the desktop and in other icon views
/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist
/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist
/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist
# 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
# Enable the automatic update check
defaults write com.apple.SoftwareUpdate AutomaticCheckEnabled -bool true
# Check for software updates daily, not just once per week
defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1
# Download newly available updates in background
defaults write com.apple.SoftwareUpdate AutomaticDownload -int 1
# Turn on app auto-update
defaults write com.apple.commerce AutoUpdate -bool true
# Prevent Photos from opening automatically when devices are plugged in
defaults -currentHost write com.apple.ImageCapture disableHotPlug -bool true
# opening and closing Quick Look windows
defaults write -g QLPanelAnimationDuration -float 0
# opening and closing windows and popovers
defaults write -g NSAutomaticWindowAnimationsEnabled -bool false
# Increase speed of how dialog boxes appear
defaults write NSGlobalDomain NSWindowResizeTime .001
defaults write -g NSScrollViewRubberbanding -int 0
defaults write -g NSAutomaticWindowAnimationsEnabled -bool false
defaults write -g NSScrollAnimationEnabled -bool false
defaults write -g NSWindowResizeTime -float 0.001
defaults write -g QLPanelAnimationDuration -float 0
defaults write -g NSScrollViewRubberbanding -bool false
defaults write -g NSDocumentRevisionsWindowTransformAnimation -bool false
defaults write -g NSToolbarFullScreenAnimationDuration -float 0
defaults write -g NSBrowserColumnAnimationSpeedMultiplier -float 0
defaults write com.apple.dock autohide-time-modifier -float 0
defaults write com.apple.dock autohide-delay -float 0
defaults write com.apple.dock expose-animation-duration -float 0
defaults write com.apple.dock springboard-show-duration -float 0
defaults write com.apple.dock springboard-hide-duration -float 0
defaults write com.apple.dock springboard-page-duration -float 0
defaults write com.apple.finder DisableAllAnimations -bool true
defaults write com.apple.Mail DisableSendAnimations -bool true
defaults write com.apple.Mail DisableReplyAnimations -bool true
defaults write NSGlobalDomain NSWindowResizeTime .001
defaults write com.apple.dock expose-animation-duration -int 0; killall Dock
defaults write com.apple.dock expose-animation-duration -float 0.1; killall Dock

Finder settings

View settings
  • General →
    • Set "New Finder windows show" to "Downloads"
    • Disable all in "Show these items on the desktop"
  • Sidebar →
    • Pin relevant and remove the rest
  • Tags →
    • Disabel all
  • Advanced →
    • Enable "Show all Filename Extensions"
    • Disable "Show warning before changing an extension"
    • Enable "Remove items from the Trash after 30 days"
    • Set "When performing a search" to "Search the Current Folder"
  • View →
    • Enable "Show path bar" (Great for quicker navigation)
    • Enable "Show status bar" (Great for folder context)
    • Enable "Show Preview" (E.g. for image files)

Iterm 2 settings

View settings
  • Keys -> Hotkey -> Set to "⌥+space"
  • General → Windows -> Disable "Native full screen windows"
  • Appearance ->
    • General ->
      • Enable "Exclude from Dock and App Switcher"
    • Windows →
      • Enable "Hide scrollbars"
    • Tabs →
      • Disable "Show tab bar in fullscreen"
  • Profiles ->
    • Window →
      • Transparency: 5
      • Style: Full Screen
      • Sreen: Main Screen
    • Text ->
      • Set font to Monaspace

Bitwarden

View settings
  • Security → Enable Touch ID
  • Preferences → Clear clipboard → Set to "5 minutes"

Git

View settings
# Set global name and email
git config --global user.name "wirtzdan"
git config --global user.email "daniel@danielwirtz.com"
# Set the default branch to main instead of master
git config --global init.defaultBranch main
# Create gitignore_global and always ignore .DS_Store file
git config --global core.excludesfile ~/.gitignore_global
echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global

Configs and dotfiles

I’m managing my dotfiles and configs for ZSH, VS Code / Cursor, Git and Karabiner through my centralized configs repo.

Inspiration

There are many great articles out there about how to set up a new Mac. Recommend to click through them and see if there is anything else that might be relevant for you.
 
Mar 22, 2025

Subscribe to my blog

Helpful tools, thoughtful articles and other findings from the web. From my desk to yours.