#!/usr/bin/env bash # # Bootstrap script for setting up a new OSX machine # # This should be idempotent so it can be run multiple times. # # Some apps don't have a cask and so still need to be installed by hand. These # include: # # - Twitter (app store) # - Postgres.app (http://postgresapp.com/) # # Notes: # # - If installing full Xcode, it's better to install that first from the app # store before running the bootstrap script. Otherwise, Homebrew can't access # the Xcode libraries as the agreement hasn't been accepted yet. # # Reading: # # - http://lapwinglabs.com/blog/hacker-guide-to-setting-up-your-mac # - https://gist.github.com/MatthewMueller/e22d9840f9ea2fee4716 # - https://news.ycombinator.com/item?id=8402079 # - http://notes.jerzygangi.com/the-best-pgp-tutorial-for-mac-os-x-ever/ echo "Starting bootstrapping" # install xcode command line tools xcode-select --install #OH-MY-ZSH sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" # Check for Homebrew, install if we don't have it if test ! $(which brew); then echo "Installing homebrew..." ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" fi # Update homebrew recipes brew update PACKAGES=( git node nodenv nginx wget ) echo "Installing packages..." brew install ${PACKAGES[@]} echo "Cleaning up..." brew cleanup echo "Installing cask..." brew install caskroom/cask/brew-cask CASKS=( firefox google-chrome iterm2 slack visual-studio-code ) echo "Installing cask apps..." brew cask install ${CASKS[@]} echo "Installing global npm packages..." npm install marked -g echo "Configuring OSX..." # Set fast key repeat rate defaults write NSGlobalDomain KeyRepeat -int 0 # Require password as soon as screensaver or sleep mode starts defaults write com.apple.screensaver askForPassword -int 1 defaults write com.apple.screensaver askForPasswordDelay -int 0 # Show filename extensions by default defaults write NSGlobalDomain AppleShowAllExtensions -bool true # Enable tap-to-click defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1 # Disable "natural" scroll defaults write NSGlobalDomain com.apple.swipescrolldirection -bool false echo "Bootstrapping complete"