Last updated: 20/05/25

This note describes the steps I take when setting up a new Mac. This process could be mostly automated, but I can’t get myself to do it. It takes me around 90 minutes to go through all the steps. Let’s get started!

I. Prerequisite Files to Import

Before diving into installations, I make sure to have these configuration files ready:

  • .gitconfig
  • .zshrc

II. Software Installation

Apps marked with “🌕” emoji are optional (it depends if it’s a work or a private Mac).

A. Homebrew & Command-Line Tools

  1. Install HomeBrew (from Web)
  2. Install CLI tools via Brew:
// Set shell to zsh
chsh -s /bin/zsh

brew install zsh-autosuggestions
brew install zsh-syntax-highlighting
brew install pure
brew install jesseduffield/lazygit/lazygit
brew install xcodesorg/made/xcodes

// Optional
brew install rbenv
brew install swiftlint
brew install node

B. App Store Applications

C. GUI Applications (from Web)

III. Application Configuration

Now, let’s configure the installed applications.

  • Alfred:
    • Disable both shortcuts for Spotlight (Keyboard -> Keyboard Shortcuts … -> Spotlight -> disable both)
    • Import preferences from /Users/$USER/Library/Application Support/Alfred/Alfred.alfredpreferences
    • Set global shortcut (⌘+Space)
    • Enable Clipboard History
    • Enable: Features -> Snippets “Automatically expand snippets by keyword”
    • Enable: Features -> Web Bookmarks -> Safari Bookmarks
  • Rectangle:
    • Import config
  • Hammerspoon:
  • Karabiner-Elements:
    • Import config
  • Ghostty:
    • Import config
  • Obsidian:
    • In order to make git plugin work:
      • git config --global credential.helper osxkeychain
      • git pull
  • Visual Studio Code:
    • Log in to sync plugins and preferences
    • Fix holding motion keys not working with vim plugin:
      • defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false
  • Logi Options+:
    • Restore from backup
  • ProxyMan:
    • Import mapped requests

IV. System Preferences Settings

Let’s tweak the system settings.

  • Set desktop background

General

  • Set accent color

Language & Region

  • Set English (United States) as primary language

I simply can’t stand Trash being called Bin.

Displays

  • Adjust display resolution

Desktop & Dock

  • Desktop & Dock -> Desktop & Stage Manager -> Click wallpaper to reveal desktop -> Only in Stage Manager

Keyboard

  • Keyboard -> Keyboard Navigation -> Enable

This setting enables option selection with the Tab key.

  • Keyboard -> Keyboard Shortcuts -> Modifier Keys -> Map Caps Lock to Escape

Trackpad

  • Trackpad -> Point & Click -> Tap to click
  • Trackpad -> Point & Click -> Tracking Speed (increase)

Sharing

  • Change machine’s name

Login Password

  • Enable “Use Apple Watch to unlock your applications and your Mac”

Security & Privacy

  • Disable “Password Autofill”
  • Add fingers to Touch ID

General (System Settings Panel)

  • Set Login Items

V. Core macOS Application & Utility Configuration

Archive Utility

  • Preferences -> After expanding: move to trash

Messages

  • Enable message forwarding on iPhone
  • Enable iCloud sync

Dock

  • Move to right
  • Adjust zoom and size
  • Rearrange apps
  • Enable “Show Percentage” (Battery settings, if referring to menu bar)

Mail

  • Take all accounts online
  • Rename and rearrange

Finder

  • Rearrange sidebar
  • Set “Search the current folder”
  • “Show path bar” (it’s in the menu bar)
  • Enable “Snap to grid” (right click on empty Desktop, Show View Options -> Sort By -> Snap to Grid)
  • Disable “Show warning before removing from iCloud Drive”
  • Set Preferences -> General -> New Finder windows show … -> Desktop

Time Machine

  • Create backup

Conclusion

That’s it. That’s the entire setup process. I know there are tools to automate ~90% of it. I plan to do it someday. In the meantime, my next project is to automate syncing things like Alfred preferences and system settings across all of my Macs. Fingers crossed, I’ll sit down and do it this summer!