#!/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" # 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 # Install GNU core utilities (those that come with OS X are outdated) brew tap homebrew/dupes brew install coreutils brew install gnu-sed --with-default-names brew install gnu-tar --with-default-names brew install gnu-indent --with-default-names brew install gnu-which --with-default-names brew install gnu-grep --with-default-names # Install GNU `find`, `locate`, `updatedb`, and `xargs`, g-prefixed brew install findutils # Install Bash 4 brew install bash PACKAGES=( ack autoconf automake boot2docker ffmpeg gettext gifsicle git graphviz hub imagemagick jq libjpeg libmemcached lynx markdown memcached mercurial npm pkg-config postgresql python python3 pypy rabbitmq rename ssh-copy-id terminal-notifier the_silver_searcher tmux tree vim wget zsh ) echo "Installing packages..." brew install ${PACKAGES[@]} echo "Cleaning up..." brew cleanup echo "Installing cask..." brew tap homebrew/cask echo "Setting up tap..." brew tap homebrew/cask-versions echo "adding tap for core..." brew tap homebrew/core CASKS=( #citrix-workspace #this isn't working right now unsure why. docker dropbox firefox grammarly iterm2 microsoft-office pycharm-ce skype slack snagit vagrant #this can fail because of OSX settings - may need to setup install apart. virtualbox visual-studio-code vlc ) echo "Installing cask apps..." brew cask install ${CASKS[@]} echo "Installing java11..." brew install java11 sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk echo 'export PATH="/usr/local/opt/openjdk@11/bin:$PATH"' >> ~/.zshrc export CPPFLAGS="-I/usr/local/opt/openjdk@11/include" echo "Installing fonts..." brew tap caskroom/fonts FONTS=( font-inconsolidata font-roboto font-clear-sans ) brew cask install ${FONTS[@]} echo "Installing Python packages..." PYTHON_PACKAGES=( ipython virtualenv virtualenvwrapper ) sudo pip install ${PYTHON_PACKAGES[@]} echo "Installing Ruby gems" RUBY_GEMS=( bundler filewatcher cocoapods ) sudo gem install ${RUBY_GEMS[@]} 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 "Creating folder structure..." [[ ! -d Wiki ]] && mkdir Wiki [[ ! -d Workspace ]] && mkdir Workspace echo "Bootstrapping complete"