mirror of
https://github.com/geerlingguy/mac-dev-playbook
synced 2024-11-24 21:03:26 +00:00
Add full Mac setup guide, adjust defaults for simplicity's sake.
This commit is contained in:
parent
cb8398cef4
commit
c4ea26a950
3 changed files with 123 additions and 30 deletions
40
README.md
40
README.md
|
@ -103,15 +103,11 @@ Applications (installed with Homebrew Cask):
|
||||||
- [Handbrake](https://handbrake.fr/)
|
- [Handbrake](https://handbrake.fr/)
|
||||||
- [Homebrew](http://brew.sh/)
|
- [Homebrew](http://brew.sh/)
|
||||||
- [LICEcap](http://www.cockos.com/licecap/)
|
- [LICEcap](http://www.cockos.com/licecap/)
|
||||||
- [LimeChat](http://limechat.net/mac/)
|
|
||||||
- [MacVim](http://macvim-dev.github.io/macvim/)
|
|
||||||
- [nvALT](http://brettterpstra.com/projects/nvalt/)
|
- [nvALT](http://brettterpstra.com/projects/nvalt/)
|
||||||
- [Sequel Ace](https://sequel-ace.com) (MySQL client)
|
- [Sequel Ace](https://sequel-ace.com) (MySQL client)
|
||||||
- [Skitch](https://evernote.com/skitch/)
|
|
||||||
- [Slack](https://slack.com/)
|
- [Slack](https://slack.com/)
|
||||||
- [Sublime Text](https://www.sublimetext.com/)
|
- [Sublime Text](https://www.sublimetext.com/)
|
||||||
- [Transmit](https://panic.com/transmit/) (S/FTP client)
|
- [Transmit](https://panic.com/transmit/) (S/FTP client)
|
||||||
- [Vagrant](https://www.vagrantup.com/)
|
|
||||||
|
|
||||||
Packages (installed with Homebrew):
|
Packages (installed with Homebrew):
|
||||||
|
|
||||||
|
@ -121,9 +117,9 @@ Packages (installed with Homebrew):
|
||||||
- gettext
|
- gettext
|
||||||
- gifsicle
|
- gifsicle
|
||||||
- git
|
- git
|
||||||
|
- github/gh/gh
|
||||||
- go
|
- go
|
||||||
- gpg
|
- gpg
|
||||||
- hub
|
|
||||||
- httpie
|
- httpie
|
||||||
- iperf
|
- iperf
|
||||||
- libevent
|
- libevent
|
||||||
|
@ -139,41 +135,27 @@ Packages (installed with Homebrew):
|
||||||
- openssl
|
- openssl
|
||||||
- pv
|
- pv
|
||||||
- wget
|
- wget
|
||||||
|
- wrk
|
||||||
|
- zsh-history-substring-search
|
||||||
|
|
||||||
My [dotfiles](https://github.com/geerlingguy/dotfiles) are also installed into the current user's home directory, including the `.osx` dotfile for configuring many aspects of macOS for better performance and ease of use. You can disable dotfiles management by setting `configure_dotfiles: no` in your configuration.
|
My [dotfiles](https://github.com/geerlingguy/dotfiles) are also installed into the current user's home directory, including the `.osx` dotfile for configuring many aspects of macOS for better performance and ease of use. You can disable dotfiles management by setting `configure_dotfiles: no` in your configuration.
|
||||||
|
|
||||||
Finally, there are a few other preferences and settings added on for various apps and services.
|
Finally, there are a few other preferences and settings added on for various apps and services.
|
||||||
|
|
||||||
## Future additions
|
## Full / From-scratch setup guide
|
||||||
|
|
||||||
### Things that still need to be done manually
|
Since I've used this playbook to set up something like 20 different Macs, I decided to write up a full 100% from-scratch install for my own reference (everyone's particular install will be slightly different).
|
||||||
|
|
||||||
It's my hope that I can get the rest of these things wrapped up into Ansible playbooks soon, but for now, these steps need to be completed manually (assuming you already have Xcode and Ansible installed, and have run this playbook).
|
You can see my full from-scratch setup document here: [full-mac-setup.md](full-mac-setup.md).
|
||||||
|
|
||||||
1. Set JJG-Term as the default Terminal theme (it's installed, but not set as default automatically).
|
|
||||||
3. Install all the apps that aren't yet in this setup (see below).
|
|
||||||
4. Remap Caps Lock to Escape (requires macOS Sierra 10.12.1+).
|
|
||||||
5. Set trackpad tracking rate.
|
|
||||||
6. Set mouse tracking rate.
|
|
||||||
7. Configure extra Mail and/or Calendar accounts (e.g. Google, Exchange, etc.).
|
|
||||||
|
|
||||||
### Configuration to be added:
|
|
||||||
|
|
||||||
- I have vim configuration in the repo, but I still need to add the actual installation:
|
|
||||||
```
|
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|
||||||
## Testing the Playbook
|
## Testing the Playbook
|
||||||
|
|
||||||
Many people have asked me if I often wipe my entire workstation and start from scratch just to test changes to the playbook. Nope! Instead, I posted instructions for how I build a [Mac OS X VirtualBox VM](https://github.com/geerlingguy/mac-osx-virtualbox-vm), on which I can continually run and re-run this playbook to test changes and make sure things work correctly.
|
Many people have asked me if I often wipe my entire workstation and start from scratch just to test changes to the playbook. Nope! This project is [continuously tested on GitHub Actions' macOS infrastructure](https://github.com/geerlingguy/mac-dev-playbook/actions?query=workflow%3ACI).
|
||||||
|
|
||||||
Additionally, this project is [continuously tested on GitHub Actions' macOS infrastructure](https://github.com/geerlingguy/mac-dev-playbook/actions?query=workflow%3ACI).
|
You can also run macOS itself inside a VM, for at least some of the required testing (App Store apps and some proprietary software might not install properly). I currently recommend:
|
||||||
|
|
||||||
|
- [UTM](https://mac.getutm.app)
|
||||||
|
- [Tart](https://github.com/cirruslabs/tart)
|
||||||
|
|
||||||
## Ansible for DevOps
|
## Ansible for DevOps
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,6 @@ homebrew_cask_apps:
|
||||||
- slack
|
- slack
|
||||||
- sublime-text
|
- sublime-text
|
||||||
- transmit
|
- transmit
|
||||||
- vagrant
|
|
||||||
|
|
||||||
# See `geerlingguy.mas` role documentation for usage instructions.
|
# See `geerlingguy.mas` role documentation for usage instructions.
|
||||||
mas_installed_apps: []
|
mas_installed_apps: []
|
||||||
|
|
112
full-mac-setup.md
Normal file
112
full-mac-setup.md
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
# Full Mac Setup Process (for Jeff Geerling)
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Initial configuration of a brand new Mac
|
||||||
|
|
||||||
|
Before starting, I completed Apple's mandatory macOS setup wizard (creating a local user account, and optionally signing into my iCloud account). Once on the macOS desktop, I do the following (in order):
|
||||||
|
|
||||||
|
- Install Ansible (following the guide in [README.md](README.md))
|
||||||
|
- **Sign in in App Store** (since `mas` can't sign in automatically)
|
||||||
|
- Clone mac-dev-playbook to the Mac: `git clone git@github.com:geerlingguy/mac-dev-playbook.git`
|
||||||
|
- Drop `config.yml` from `~/Dropbox/Apps/Config` to the playbook (copy over the network or using a USB flash drive).
|
||||||
|
- 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:
|
||||||
|
- Install [Creative Cloud](https://creativecloud.adobe.com/apps/download/creative-cloud)
|
||||||
|
- Install Photoshop/Illustrator manually
|
||||||
|
- (If required:)
|
||||||
|
- Install [Elgato Stream Deck](https://www.elgato.com/en/downloads)
|
||||||
|
- Open Livestream profile inside `~/Dropbox/Apps/Config/Stream Deck`
|
||||||
|
- Install [Elgato Key Light Air (Control Center)](https://www.elgato.com/en/downloads)
|
||||||
|
- Install [Autodesk Fusion 360](https://www.autodesk.com)
|
||||||
|
- Install Microsoft Office Home & Student 2019 (https://account.microsoft.com/services/)
|
||||||
|
- Install [Fritzing](https://fritzing.org/download/)
|
||||||
|
- Install Meshmixer (but it looks like it's gone now!)
|
||||||
|
- Configure FastMail account:
|
||||||
|
- Log into Fastmail
|
||||||
|
- Go to settings, go to the setup page for macOS Mail
|
||||||
|
- Download the profile and double click to install
|
||||||
|
- Head to the 'Profiles' System Preference pane and click install
|
||||||
|
- Open Calendar and enable personal Google CalDAV account (you have to manually sign in).
|
||||||
|
- Manually copy `~/Development` folder from another Mac (to save time).
|
||||||
|
- Manual settings to automate someday:
|
||||||
|
- System Preferences:
|
||||||
|
- Accessibility > Display > Reduce transparency
|
||||||
|
- Keyboard > Modifier Keys... > Caps Lock to Esc
|
||||||
|
- Safari:
|
||||||
|
- View > Show Status Bar
|
||||||
|
- Preferences > Advanced > "Show full website address"
|
||||||
|
- Preferences > Advanced > "Show Develop menu in menu bar"
|
||||||
|
- Dock:
|
||||||
|
- Add jgeerling, Downloads, Applications, and Video Projects folders
|
||||||
|
- Terminal:
|
||||||
|
- Preferences > Profiles > Set JJG-Term as the default theme
|
||||||
|
- _After Dropbox Sync completes_: Run the playbook with `--tags post` to complete setup.
|
||||||
|
- 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](https://tclementdev.com/timemachineeditor/) (if needed)
|
||||||
|
- Install Wireguard from App Store and add configuration (if needed)
|
||||||
|
|
||||||
|
## To Wrap in Post-provision automation
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
# Final Cut Pro setup. (Open Motion first)
|
||||||
|
cp -r /Users/jgeerling/Dropbox/Apps/Config/Motion/Motion\ Templates.localized/ /Users/jgeerling/Movies/Motion\ Templates.localized/
|
||||||
|
cp -r /Users/jgeerling/Dropbox/Apps/Config/Motion/Text\ Styles/ /Users/jgeerling/Library/Application\ Support/Motion/Library/Text\ Styles.localized/
|
||||||
|
|
||||||
|
# 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
|
||||||
|
```
|
||||||
|
|
||||||
|
## When formatting old Mac
|
||||||
|
|
||||||
|
- Sign out of Adobe Creative Cloud
|
||||||
|
- Sign out of Panic Sync in Transmit
|
||||||
|
- Deauthorize Apple Music in iTunes/Music App
|
||||||
|
- Make sure anything new merged into `~/Dropbox/Apps/Config`:
|
||||||
|
- Fonts from ~/Library/Fonts
|
||||||
|
- Motion Plugins from ~/Movies/Motion
|
||||||
|
- Final Cut Pro Text Styles in ~/Library/Application Support/Motion/Library/Text Styles
|
||||||
|
- Sequel Ace shortcuts from ~/Library/Containers/com.sequel-ace.sequel-ace/Data/Library/Application\ Support/Sequel\ Ace/Data/Favorites.plist
|
||||||
|
- Follow Apple's guide (TODO)
|
Loading…
Reference in a new issue