There are some things in life that just can't be automated... or aren't 100% worth the time 😒
This document covers that, at least in terms of setting up a brand new Mac out of the box.
Before starting, I completed Apple's mandatory macOS setup wizard (creating a local user account). Once on the macOS desktop, I do the following (in order):
- Install Command Line Tools and Ansible (following the guide in README.md)
- Sign in in App Store (since
mas
can't sign in automatically) - Clone mac-dev-playbook to the Mac:
git clone https://github.com/micxer/mac-dev-playbook.git
- Open the browser and login to Nextcloud
- Download
Configs/config.yml
to the playbook directory - Run the playbook with
--skip-tags post
.- If there are errors, you may need to finish up other tasks like installing 'old-fashioned' apps first (since I try to place Photoshop in the Dock and it can't be installed automatically). Then, run the playbook again ;)
- Start Synchronization tasks:
- Open Photos and make sure iCloud sync options are correct
- Open Music, make sure computer is authorized, and set Library sync options
- Open Dropbox, sign in, and set up sync
- Install old-fashioned apps (if required)
- Manual settings to automate someday:
- System Preferences:
- Accessibility > Display > Reduce transparency
- Safari:
- View > Show Status Bar
- Preferences > Advanced > "Show full website address"
- Preferences > Advanced > "Show Develop menu in menu bar"
- System Preferences:
- Symlink the synchronized
config.yml
into the playbook dir:ln -s /Users/jgeerling/Dropbox/Apps/Config/mac-dev-playbook/config.yml /Users/jgeerling/Development/mac-dev-playbook/config.yml
- These things might be automatable, but I do them manually right now:
- Configure Time Machine backup drive and Time Machine Editor (if needed)
- Install Wireguard from App Store and add configuration (if needed)
The following tasks have to wait for the initial Dropbox sync to complete before they'll succeed. So ideally I'll stick this all in a post-provision script but somehow flag it not to run on first provision.
# ZSH Aliases.
ln -s /Users/jgeerling/Dropbox/Apps/Config/.aliases /Users/jgeerling/.aliases
# Electrum BTC Wallet.
ln -s /Users/jgeerling/Dropbox/Apps/Electrum/default_wallet /Users/jgeerling/.electrum/wallets/default_wallet
# SSH setup.
ssh-keygen # and create a default key to set up .ssh folder
sudo ln -s /Users/jgeerling/Dropbox/Apps/Config/ssh/config ~/.ssh/config
# TODO - Manually copy any shared SSH keys that are needed.
# Ansible setup.
sudo mkdir -p /etc/ansible
sudo ln -s /Users/jgeerling/Dropbox/Apps/Config/ansible/ansible.cfg /etc/ansible/ansible.cfg
sudo ln -s /Users/jgeerling/Dropbox/Apps/Config/ansible/hosts /etc/ansible/hosts
sudo ln -s /Users/jgeerling/Dropbox/VMs/roles /etc/ansible/roles
mkdir -p /Users/jgeerling/.ansible
ln -s /Users/jgeerling/Dropbox/Apps/Config/ansible/galaxy_token /Users/jgeerling/.ansible/galaxy_token
ln -s /Users/jgeerling/Dropbox/Apps/Config/ansible/mm-vault-password.txt /Users/jgeerling/.ansible/mm-vault-password.txt
ln -s /Users/jgeerling/Dropbox/VMs/ /Users/jgeerling/.ansible/collections
# Sequel Ace favorites. (Open Sequel Ace first)
cp /Users/jgeerling/Dropbox/Apps/Config/Sequel\ Ace/Favorites.plist /Users/jgeerling/Library/Containers/com.sequel-ace.sequel-ace/Data/Library/Application\ Support/Sequel\ Ace/Data/Favorites.plist
# Font setup.
cp ~/Dropbox/Apps/Config/Fonts/* ~/Library/Fonts/
# Vim setup.
mkdir -p ~/.vim/autoload
mkdir -p ~/.vim/bundle
cd ~/.vim/autoload
curl https://raw.githubusercontent.com/tpope/vim-pathogen/master/autoload/pathogen.vim > pathogen.vim
cd ~/.vim/bundle
git clone git://github.com/scrooloose/nerdtree.git
- Make sure to backup anything new:
- Fonts from ~/Library/Fonts
- Sequel Ace shortcuts from ~/Library/Containers/com.sequel-ace.sequel-ace/Data/Library/Application\ Support/Sequel\ Ace/Data/Favorites.plist
- VSCodium extensions list
- Signatures in Preview
- Follow Apple's guide here