|
|
@@ -0,0 +1,169 @@ |
|
|
#!/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 |
|
|
) |
|
|
|
|
|
echo "Installing packages..." |
|
|
brew install ${PACKAGES[@]} |
|
|
|
|
|
echo "Cleaning up..." |
|
|
brew cleanup |
|
|
|
|
|
echo "Installing cask..." |
|
|
brew install caskroom/cask/brew-cask |
|
|
|
|
|
CASKS=( |
|
|
colluquy |
|
|
dropbox |
|
|
firefox |
|
|
flux |
|
|
google-chrome |
|
|
google-drive |
|
|
gpgtools |
|
|
iterm2 |
|
|
macvim |
|
|
skype |
|
|
slack |
|
|
spectacle |
|
|
vagrant |
|
|
virtualbox |
|
|
vlc |
|
|
) |
|
|
|
|
|
echo "Installing cask apps..." |
|
|
brew cask install ${CASKS[@]} |
|
|
|
|
|
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" |