Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mattweb/817c48dafaafba7112ab6ef8d83acf80 to your computer and use it in GitHub Desktop.
Save mattweb/817c48dafaafba7112ab6ef8d83acf80 to your computer and use it in GitHub Desktop.

Revisions

  1. @kevinelliott kevinelliott revised this gist Jun 19, 2018. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions 1-macOS-10.14-mojave-setup.md
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,5 @@
    To support my open-source work, consider [adding me on Patreon](https://www.patreon.com/kevinelliott).

    # macOS 10.14 Mojave Mostly-Automated Setup

    An easy to refer to document for *regularly* setting up macOS 10.14 Mojave.
  2. @kevinelliott kevinelliott revised this gist Jun 8, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion 1-macOS-10.14-mojave-setup.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    # macOS 10.13 High Sierra Mostly-Automated Setup
    # macOS 10.14 Mojave Mostly-Automated Setup

    An easy to refer to document for *regularly* setting up macOS 10.14 Mojave.

  3. @kevinelliott kevinelliott created this gist Jun 8, 2018.
    80 changes: 80 additions & 0 deletions 1-macOS-10.14-mojave-setup.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,80 @@
    # macOS 10.13 High Sierra Mostly-Automated Setup

    An easy to refer to document for *regularly* setting up macOS 10.14 Mojave.

    ## Controversy

    The topic of recipe-based frequent fresh reinstalls of macOS is a controversial issue.
    Some people are against reinstalling macOS, citing that they have never had an issue with Apple provided upgrade installs.
    While this can often be true, this depends on a number of things, such as how customized your system settings are and how
    much cruft has developed since the last fresh install.

    ## Purpose of Fresh Installs

    I use this gist to keep track of the important software and steps required to have a functioning system after a semi-annual fresh install. I generally reinstall each computer from scratch every 6 months, and I do not perform upgrades between releases.

    This keeps the system performing at top speeds, clean of trojans, spyware, and ensures that I maintain good organizational practices for my content and backups. I highly recommend this.

    By using this document and re-install pattern, I can usually be **up and running within 60 minutes** with a fully-functioning system, so that I minimize downtime of productive work.

    You are encouraged to fork this and modify it to your heart's content to match your own needs.

    If you find it useful: feel free to shoot me an email (`[email protected]`), leave a comment, or tell others about it.

    ## Previous Setup Gists

    I have a long history of creating these gists... one for every major version of the OS.

    My previous macOS / OSX setup gists:

    * macOS 10.13 High Sierra - https://gist.github.com/kevinelliott/39c453d305e40c8f157452aee87fa9d8
    * macOS 10.12 Sierra - https://gist.github.com/kevinelliott/7a152c556a83b322e0a8cd2df128235c
    * Mac OS X 10.11 El Capitan - https://gist.github.com/kevinelliott/e12aa642a8388baf2499
    * Mac OS X 10.10 Yosemite - https://gist.github.com/kevinelliott/0726211d17020a6abc1f

    ## Install Software

    The software selected is software that is "tried and true" --- software I need after any fresh install. I often install other software not listed here, but is handled in a case-by-case basis.

    ### Prerequisites

    #### System Config Files

    Files from my personal `system-config` repository on GitHub. There are some useful scripts and configs that make this process quick. This contains a `Brewfile`, for example.

    `git clone https://github.com/kevinelliott/system-config ~/.system-config`

    #### Homebrew

    `ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`

    #### Xcode Command Line Tools

    During install of Homebrew, the script will kindly detect that you have not yet installed Xcode Command Line Tools, and pop up a dialog asking if you want to install it. Yes, you do. I defer to install the full Xcode until later since the download takes longer and I want to keep moving forward. For now, just the Xcode Command Line Tools.

    #### Mac App Store Command Line Tools

    The `mas` command by `argon` is a handy tool to interact with the App Store without needing to point and click, search, and otherwise need manual intervention. This lets us install the next batch of software very quickly using **Terminal**.

    Now that Homebrew is installed, it's easy to get **mas**:

    `brew install mas`

    Then signin to the **Mac App Store** for the first time (if you are already signed in, then it will tell you):

    `mas signin [email protected]`

    ### Install binaries from a Brewfile (apps from App Store using mas, apps from Cask)

    #### Edit Brewfile for last minute changes

    You may wish to add or remove a few App Store or Cask items before initiating Homebrew to install all of the applications. If you wish to review these now you may fork the `system-config` repo and edit the Brewfile (`~/.system-config/Brewfile`) now.

    #### Install apps

    `brew bundle --file=~/.system-config/Brewfile`

    This will take some time, especially if you have a slow internet connection and because Xcode is huge. **But it's faster than you having to search the App Store app and click to install for each of these!**


    ![aww yeah](http://i.imgur.com/AmFax.gif)
    158 changes: 158 additions & 0 deletions 2-macOS-10.14-mojave-setup-brewfile
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,158 @@
    tap "caskroom/cask"
    tap "caskroom/drivers"
    tap "caskroom/fonts"
    tap "heroku/brew"
    tap "homebrew/bundle"
    tap "homebrew/core"
    tap "homebrew/fuse"
    tap "homebrew/science"
    tap "homebrew/services"
    tap "luckyframework/lucky"
    tap "mapbox/cli"
    tap "pothosware/pothos"
    tap "rcmdnk/file"
    cask "osxfuse"
    brew "ack"
    brew "readline"
    brew "asciinema"
    brew "autoconf"
    brew "autojump"
    brew "automake"
    brew "isl"
    brew "p7zip"
    brew "ssdeep"
    brew "binwalk"
    brew "colordiff"
    brew "coreutils"
    brew "libevent"
    brew "libyaml"
    brew "crystal-lang"
    brew "curl"
    brew "libgpg-error"
    brew "libksba"
    brew "pth"
    brew "dirmngr"
    brew "docker", link: false
    brew "ettercap"
    brew "ffmpeg", args: ["with-sdl2"]
    brew "figlet"
    brew "foremost"
    brew "fzf"
    brew "gettext"
    brew "gist"
    brew "git"
    brew "git-flow"
    brew "git-standup"
    brew "gnupg"
    brew "go"
    brew "gpg-agent"
    brew "gx"
    brew "gx-go"
    brew "htop"
    brew "hub"
    brew "icecast"
    brew "icoutils"
    brew "libtool"
    brew "imagemagick"
    brew "ipfs"
    brew "memcached"
    brew "libmemcached"
    brew "libusb-compat"
    brew "libxml2"
    brew "mas"
    brew "mitmproxy"
    brew "mosh"
    brew "mtr"
    brew "mysql"
    brew "nmap"
    brew "nvm"
    brew "[email protected]"
    brew "ossp-uuid"
    brew "pkg-config"
    brew "postgresql", restart_service: true
    brew "python"
    brew "qemu"
    brew "redis", restart_service: true
    brew "ripgrep"
    brew "sdl2"
    brew "speedtest-cli"
    brew "sshfs"
    brew "sslsplit"
    brew "tcpflow"
    brew "the_silver_searcher"
    brew "tmux"
    brew "utf8proc"
    brew "wget"
    brew "wireshark", link: false
    brew "yarn"
    brew "heroku/brew/heroku"
    brew "luckyframework/lucky/lucky"
    brew "rcmdnk/file/brew-file"
    cask "adium"
    cask "adobe-creative-cloud"
    cask "amazon-drive"
    cask "amazon-music"
    cask "android-studio"
    cask "angry-ip-scanner"
    cask "anvil"
    cask "arq"
    cask "atom"
    cask "boinc"
    cask "bonjour-browser"
    cask "chromium"
    cask "cocoapods-app"
    cask "ultimaker-cura"
    cask "discord"
    cask "docker"
    cask "docker-toolbox"
    cask "dropbox"
    cask "etcher"
    cask "filezilla"
    cask "firefox"
    cask "geekbench"
    cask "github"
    cask "google-chrome"
    cask "google-earth-pro"
    cask "grandperspective"
    cask "hipchat"
    cask "hyper"
    cask "itch"
    cask "iterm2"
    cask "java"
    cask "joinme"
    cask "keybase"
    cask "kitematic"
    cask "little-snitch"
    cask "livereload"
    cask "lunchy"
    cask "macdown"
    cask "metasploit"
    cask "mono-mdk"
    cask "ngrok"
    cask "now"
    cask "obs"
    cask "openemu"
    cask "opera"
    cask "parallels"
    cask "postman"
    cask "psequel"
    cask "quik"
    cask "rescuetime"
    cask "sidestep"
    cask "sketch"
    cask "skitch"
    cask "skype"
    cask "soundflower"
    cask "spotify"
    cask "steam"
    cask "sublime-text"
    cask "transmit"
    cask "visual-studio"
    cask "visual-studio-code"
    cask "vlc"
    cask "wd-firmware-updater"
    cask "wireshark"
    cask "caskroom/drivers/3dconnexion"
    cask "caskroom/drivers/sonos"
    cask "caskroom/fonts/font-hack-nerd-font"
    cask "caskroom/fonts/font-menlo-for-powerline"
    28 changes: 28 additions & 0 deletions 3-macOS-10.14-mojave-mas-brewfile
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,28 @@
    mas "Blackmagic Disk Speed Test", id: 425264550
    mas "CARROT Weather", id: 993487541
    mas "CCMenu", id: 603117688
    mas "Compressor", id: 424390742
    mas "DeskCover", id: 1257711898
    mas "DrCleaner", id: 921458519
    mas "Earth 3D", id: 476566660
    mas "Final Cut Pro", id: 424389933
    mas "Frame.io", id: 992958444
    mas "GarageBand", id: 682658836
    mas "iMovie", id: 408981434
    mas "Keynote", id: 409183694
    mas "Logic Pro X", id: 634148309
    mas "Magnet", id: 441258766
    mas "MainStage 3", id: 634159523
    mas "Motion", id: 434290957
    mas "Numbers", id: 409203825
    mas "Pages", id: 409201541
    mas "Parcel", id: 639968404
    mas "QuickBooks", id: 640830064
    mas "Slack", id: 803453959
    mas "Snappy", id: 512617038
    mas "Speedtest", id: 1153157709
    mas "Trello", id: 1278508951
    mas "Unsplash Wallpapers", id: 1284863847
    mas "WiFi Explorer", id: 494803304
    mas "WiFi Signal", id: 525912054
    mas "Xcode", id: 497799835
    42 changes: 42 additions & 0 deletions 4-common-system-settings.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,42 @@
    #!/usr/bin/sh

    ## macOS Preferences

    # Set a blazingly fast keyboard repeat rate
    defaults write NSGlobalDomain KeyRepeat -int 1

    # Set a shorter Delay until key repeat
    defaults write NSGlobalDomain InitialKeyRepeat -int 10

    # Add a context menu item for showing the Web Inspector in web views
    defaults write NSGlobalDomain WebKitDeveloperExtras -bool true

    # Show the ~/Library folder
    chflags nohidden ~/Library

    # Store screenshots in subfolder on desktop
    mkdir ~/Desktop/Screenshots
    defaults write com.apple.screencapture location ~/Desktop/Screenshots


    ## Github
    ssh-keygen -t rsa -C "kevin@`hostname -s`"

    # Copy public key to Github.com
    cat ~/.ssh/id_rsa.pub

    # Test connection
    ssh -T [email protected]

    # Git global config
    git config --global user.name "Kevin Elliott"
    git config --global user.email "[email protected]"
    git config --global github.user kevinelliott
    git config --global github.token your_token_here

    git config --global core.editor "code -w"
    git config --global color.ui true

    # Dropbox work directory
    mkdir ~/Cloud/Dropbox/work
    ln -s ~/Cloud/Dropbox/work ~/work
    15 changes: 15 additions & 0 deletions 5-shell-setup.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    #!/usr/bin/sh

    # Install zgen
    git clone https://github.com/tarjoilija/zgen.git "${HOME}/.zgen"

    # Setup ~/.zshrc
    cp ~/.system-config/dotfile-zshrc ~/.zshrc

    # Run ZSH so that everything intializes
    zsh

    # Change user shell to zsh
    chsh

    # PENDING
    69 changes: 69 additions & 0 deletions 6-dotfile-zshrc
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,69 @@
    # load zgen
    ZGEN_PREZTO_LOAD_DEFAULT=0
    source "${HOME}/.zgen/zgen.zsh"

    # if the init scipt doesn't exist
    if ! zgen saved; then
    echo "Creating a zgen save"

    zgen prezto prompt theme 'sorin'
    #zgen prezto tmux:auto-start local 'yes'
    zgen prezto editor key-bindings 'vi'
    zgen prezto utility:ls color 'yes'
    zgen prezto '*:*' case-sensitive 'yes'
    zgen prezto '*:*' color 'yes'

    zgen prezto
    zgen prezto git
    zgen prezto environment
    zgen prezto terminal
    zgen prezto editor
    zgen prezto directory
    zgen prezto spectrum
    zgen prezto utility
    zgen prezto prompt
    zgen prezto archive
    zgen prezto ruby
    zgen prezto rails

    zgen prezto command-not-found
    #zgen prezto tmux
    zgen prezto fasd
    zgen prezto history-substring-search
    zgen prezto syntax-highlighting

    zgen load m42e/prezto_extras

    zgen load caarlos0/zsh-git-sync
    zgen load TBSliver/zsh-plugin-colored-man
    zgen load mafredri/zsh-async
    zgen load junegunn/fzf shell

    zgen load zsh-users/zsh-syntax-highlighting
    zgen load tarruda/zsh-autosuggestions

    zgen save
    fi

    autoload -Uz add-zsh-hook
    add-zsh-hook precmd newline-after-command

    function newline-after-command() {
    print ''
    }

    export FZF_COMPLETION_TRIGGER=''
    bindkey '^T' fzf-completion

    ##################

    # Node
    export NVM_DIR=~/.nvm
    source $(brew --prefix nvm)/nvm.sh

    # Ruby
    export PATH="$PATH:$HOME/.rvm/bin"

    # Git / Github
    export GITHUB_USERNAME=kevinelliott
    alias git-prune="git branch --merged master | grep -v \"\* master\" | grep -v \" master\" | xargs -n 1 git branch -d"
    15 changes: 15 additions & 0 deletions 7-development-setup.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    #!/usr/bin/sh

    ## Ruby

    # Setup RVM
    gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
    echo progress-bar > ~/.curlrc
    curl -sSL https://get.rvm.io | bash

    # Install Ruby
    rvm install ruby-2.4.3

    # Install powder/pow
    gem install powder
    powder install