Automating a New Macintosh Setup

In the past I have used the migration assistant tool to copy my files from Mac to Mac whenever I would get a new one. After almost 20 years of doing this I wanted to setup my new screaming M2 from scratch.

Automating App Installs

There are a couple command line tools that help this and I have created a bash script in github to run on the computer. Be sure to customize for your own situation.

Once this script is run on the Mac half the work will be done. The next steps below are for setting up the data.

The script and explanations below should only install M1/M2 compatible apps. Nothing on Intel.

1Password Data Setup

Setup 1Password coud Sync

Enable Local vaults

Setup iCloud vault sync

Keychain

Copy keychain file from original Mac

BBEdit

Enable Sandbox Access

Spark

Login to gmail account

Don’t allow notifications

Hazel

Register License from 1password file

Give Full disk access

Add back Hazel folders, sync rules with each folder and enable rules on other computers.

Activate Hazel Notifications

Enable App Sweep and Delete files from trash after 1 week

Turn off Notifications for Files events and trash events

Bartender

Register Bartender

Setup bartender to hid everything but Fantastical and DayOne.

Dash App

In Dash preferences choose the Sync folder on iCloud Drive/Dash and everything is setup.

Timing

Launch and setup

Copy data from old computer

Freedom

Log into Freedom and make sure it is setup name device.

Fantastical

Need to create new app password for iCloud calendar.

Add accounts iCloud, Google, Meetup.com

Set default calendar and default reminder list

Omnifocus

Install Omnifocus Beta from TestFlight

Copy over Omnifocus Archive to new computer

Check that ctr-option-space is global shortcut

WeChat

Copy chat backup to new computer.

Install What’s App Beta

Download M1 WhatsApp beta.

Slack

Sign into Slack Channels.

ChronoSync

Setup backup

Safari

Enable Extensions in Safari

Time Machine

Setup backup to Synology

Setup backup to external drives

Anki

Sign In to sync

Discord

Login

Xcode

Launch and accept dialog boxes.

Visual Studio Code

Enable Syncing using GitHub account

OBS

Setup for Highest recording

Create source for Elgato

Create Source for Insta360 Link

Create Source for Screen Recording

Apple Music

Check Download Dolby Atmos

Deauthorize previous computer or you might reach the limit

Check older authorizations to free up

Finder

Set finder settings to open to home directory and show external disks

Home Folder

Copy over select Home folder contents

System Settings

Trackpad speed

Increase trackpad to max speed.

Configure Shortcuts

Disable unused sharing utilities and shortcuts

Keyboard

Enable Dictation

Spelling

Enable Show Input Menu in Menu Bar

Extensions

Disable/enable extensions

Storage

The storage control panel lets you delete the GarageBand music creation libraries.

Notifications

Configure notifications including:

Turn off notifications from calendar because I use fantastical

Turn off notifications for mail

Turn off sound notifications WhatsApp

Unlock with Apple Watch

Turn on Unlock with Apple Watch

Brave Browser

Setup Syncing

Verify Brave Rewards

Clay

Sign into Clay with Apple ID

Git

Set .gitconfig file to contain your commit information.

`git config --global user.email "myemail@example.com"`
`git config --global user.name "My Name"`

– Create new GIT ssh key and associate it with account

Generate SSH Key

ssh-keygen -t ed25519 -C "email@example.com"

Setup ssh to reference Keychain.

touch ~/.ssh/config
open ~/.ssh/config

Add the following to the above file:

Host github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519

Add SSH Key to Keychain

eval "$(ssh-agent -s)"
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
gh auth login
gh auth refresh -h github.com -s admin:public_key
gh ssh-key add ~/.ssh/id_ed25519.pub

Reference Articles

New MacBook Pro Setup

A Guide to Setting up a New Mac Developer Machine

Find Paths of Files

Adding a new SSH key to your GitHub account

Generating a new SSH key and adding it to the ssh-agent