Skip to content
Patrick Quinn-Graham edited this page Nov 12, 2023 · 15 revisions
  1. Install initial OS updates
  2. Enable FileVault (System Preferences -> Security & Privacy -> FileVault -> Turn On FileVault...; System Settings -> Privacy & Security -> FileVault -> Turn On...)
  3. Set the machine hostname (in System Preferences -> Sharing -> Name; System Settings -> General -> About)
  4. Enrol the machine in JumpCloud (a profile can be found in ~/Documents/Setup/)
    1. Once enrolled, bind users as needed from the JumpCloud console.
  5. Grab the panic terminal theme from ~/Documents/Setup/Panic Palette.terminal
    1. If needed you can get this from Panic, unzip that.
    2. Right click & choose Open.
    3. Open Terminal Preferences, choose Profiles, click Panic Palette and then Default.
  6. Install Homebrew
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  7. Wait for iCloud Drive to sync enough of Documents that ~/Documents/Setup/Brewfiles is ready, and then in Terminal:
    cd ~/Documents/Setup/Brewfiles/$(hostname)
    brew bundle install
    
  8. Setup Secretive
    1. Create a key for this machine
    2. Add the public key to JumpCloud
    3. Add the public key to Github
  9. Run Ansible
    mkdir ~/Developer
    cd ~/Developer
    git clone https://github.com/thepatrick/inventory.git
    cd inventory
    
    # Write a file "vault_password", the value is in 1Password
    
    # Install ansible galaxy roles
    ./ansible-galaxy.sh
    
    # Run ansible. Create the "ansible-$HOSTNAME.sh" script if required.
    ./ansible-(hostname).sh --ask-become-pass
    
  10. Enable fish as the shell (/opt/homebrew/bin/brew is correct for Apple Silicon)
    echo $(/opt/homebrew/bin/brew --prefix)/bin/fish | sudo tee -a /etc/shells
    chsh -s $(/opt/homebrew/bin/brew --prefix)/bin/fish
    
  11. Start a new terminal
  12. Install a version of node: nvm install latest, and then set that as the default (e.g. set --universal nvm_default_version v21.1.0)
  13. Login to Visual Studio Code (insiders channel, using GitHub) to allow sync of configuration.
  14. Add /Applications and $HOME to Dock, set to Display as Folder.
  15. System Preferences Time
    1. Set Wallpaper
    2. Lock Screen -> Require password: Immediately
    3. Apple ID -> iCloud (primary):
      1. Disable: Contacts, Calendars
      2. Turn on: Photos (unless small drive), Mail, iCloud Drive (including Documents & Desktop), Reminders, Safari, Notes, Siri, Keychain, Find My mac, Home
    4. Internet Accounts
      1. Add secondary iCloud account. Enable Contacts, Calendars, Reminders. Disable: Mail, Notes
    5. Desktop & Dock -> Click wallpaper to reveal desktop: Only in Stage Manager
  16. Finder
    1. Preferences -> New Finder windows show: $HOME
    2. Show Statusbar (cmd + /)
  17. Dock
    1. Remove Siri, LaunchPad, Contacts, Calendar, Notes, Reminders, Maps, FaceTime, Pages, Numbers, Keynote, News, Music, Podcasts, TV, App Store, System Preferences
    2. Add Visual Studio Code, Terminal
  18. Music
    1. Sign out of iCloud account, sign as desired user.
  19. Calendar
    1. Preferences -> General -> Default Calendar: Personal (on secondary iCloud account)
  20. Activity Monitor
    1. Go to the menu bar, and choose View -> Dock Icon -> CPU History.
  21. Setup Tailscale

On Machines with less than 512GB of storage

  1. Delete GarageBand, iMove, Keynote, Numbers, Pages
  2. Disable Photos in iCloud

No longer needed steps

  1. Install required Visual Studio Code extensions
    code-insiders --install-extension github.github-vscode-theme
    code-insiders --install-extension ms-vscode-remote.vscode-remote-extensionpack
    
  2. Open Visual Studio Code, and open settings.json:
    {
        "remote.SSH.showLoginTerminal": true,
        "terminal.integrated.env.osx": {
          "SSH_AUTH_SOCK": "/Users/patrick/.gnupg/S.gpg-agent.ssh"
        },
        "editor.minimap.enabled": false,
        "editor.tabSize": 2,
        "workbench.colorTheme": "GitHub Light",
        "window.nativeTabs": true,
        "window.doubleClickIconToClose": true,
        "go.formatTool": "goimports",
        "go.useLanguageServer": true,
        "C_Cpp.updateChannel": "Insiders",
        "window.titleBarStyle": "native",
        "codespaces.accountProvider": "GitHub",
        "editor.suggestSelection": "first",
    }