Skip to content

Instantly share code, notes, and snippets.

@jamestomasino
Last active July 19, 2018 07:25
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save jamestomasino/2615a63a7edbb75858b5dc9be629ef76 to your computer and use it in GitHub Desktop.
Save jamestomasino/2615a63a7edbb75858b5dc9be629ef76 to your computer and use it in GitHub Desktop.
Setup for OSX development environment
- Install XCode
- Make your user an admin
- Create SSH keys
$ ssh-keygen
- Upload public key to Assembla & Github
$ cat ~/.ssh/id_rsa.pub | pbcopy
- Fork this gist
- Update osx_setup below and update all references to jamestomasino's github account to your own
- Download the osx_setup file and set its permissions to executable
$ chmod 755 osx_setup
- Run the osx_setup file
$ ./osx_setup
- Run tmux and plugin installer
$ tmux
`I #(that's a backtick and capital I)
- Install helper for mouse scrolling in tmux
1) Download .dmg file here: https://bitheap.org/mouseterm/
2) Execute: `cd /Volumes/MouseTerm && cp -r MouseTerm.bundle /Library/Application\ Support/SIMBL/Plugins`
- Install Dropbox & Spideroak (if used) and match environment vars location:
1) Install Dropbox to ~/Sites/sync/Dropbox
2) Install Spideroak Hive to ~/Sites/sync/spideroak
$ ln -s ~/Sites/sync/Dropbox ~/.dropbox/Dropbox
$ ln -s ~/Sites/sync/spideroak ~/.spideroak
- Run Vim and vim's plugin installer
$ vim
:PlugInstall
#!/usr/bin/env bash
set -e # exit on any nonzero command
read -n1 -r -p "Make sure SSH keys are set up on remotes. Press space to continue..." key
if [ "$key" = '' ]; then
# Remove default dotfiles that may exist
if [ -f "$HOME/.profile" ]; then
rm "$HOME/.profile"
fi
if [ -f "$HOME/.bashrc" ]; then
rm "$HOME/.bashrc"
fi
if [ -f "$HOME/.bash_profile" ]; then
rm "$HOME/.bash_profile"
fi
if [ -f "$HOME/.localrc" ]; then
rm "$HOME/.localrc"
fi
if [ -f "$HOME/.bash_logout" ]; then
rm "$HOME/.bash_logout"
fi
if [ -f "$HOME/.viminfo" ]; then
rm "$HOME/.viminfo"
fi
## homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update && brew upgrade
# tap
brew tap caskroom/cask
brew install Caskroom/cask/xquartz
brew cask install java
# basics
brew install wget
brew install coreutils
brew install gnu-sed --default-names
# git
brew install git git-flow-avh bash-completion gnu-getopt
curl https://raw.githubusercontent.com/petervanderdoes/git-flow-completion/develop/git-flow-completion.bash > git-flow-completion.bash
chmod 755 git-flow-completion.bash
mv git-flow-completion.bash ~/.git-flow-completion.sh
brew install tig
# utilities
brew install imagemagick
brew install libvpx
brew install ffmpeg --with-libvpx
brew install the_silver_searcher
brew install tree
brew install unrar
brew install calc
brew install htop
brew install youtube-dl
brew install p7zip
brew install figlet
brew install gsl
# python
brew install python --with-brewed-openssl
# vim
brew install mercurial
brew install vim --with-python3 --with-tcl --with-perl --override-system-vi
# shell
brew install tmux
brew install reattach-to-user-namespace
brew install jq
brew install ssh-copy-id
brew install stow
# Ruby
brew install rbenv
brew install ruby-build
rbenv install 2.3.0
rbenv rehash
rbenv global 2.3.0
rbenv rehash
# Perl
\curl -L http://install.perlbrew.pl | bash
source ~/perl5/perlbrew/etc/bashrc
perlbrew install perl-5.16.0
perlbrew switch perl-5.16.0
# node
brew install node
npm install -g grunt-cli
## repositories
mkdir -p ~/Sites/system/
mkdir -p ~/Sites/work/
mkdir -p ~/Sites/personal/
cd ~/Sites/system && git clone git@github.com:jamestomasino/dotfiles.git
cd ~/Sites/system/dotfiles && ./make
# Ruby Gems
gem install bundler
# applications
brew cask install iterm2
brew cask install easysimbl
brew cask install viscosity
brew cask install veracrypt
brew cask install slate
brew cask install karabiner
brew install tpp
brew install newsbeuter
# bash completions
brew tap homebrew/completions
brew install bundler-completion
brew install gem-completion
brew install grunt-completion
brew install pip-completion
# security
brew install lastpass-cli --with-pinentry
# pip installs
pip install --user pyyaml
pip install --user colorama
pip install rtv
# chat
brew install profanity --with-terminal-notifier
brew install irssi
# audio
brew install cmus
# video
brew install libcaca
brew install mplayer --with-libcaca
# mail
brew tap neomutt/homebrew-neomutt
brew install neomutt --with-s-lang --with-sidebar-patch --with-notmuch-patch
cd ~/.mutt && git clone https://github.com/altercation/mutt-colors-solarized.git
brew install urlview
brew install pandoc
brew install offlineimap
# Configuration
#Set a blazingly fast keyboard repeat rate
defaults write NSGlobalDomain KeyRepeat -int 0.02
#Set a shorter Delay until key repeat
defaults write NSGlobalDomain InitialKeyRepeat -int 12
#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
#Disable the 'Are you sure you want to open this application?' dialog
defaults write com.apple.LaunchServices LSQuarantine -bool false
#Show percentage in battery status
defaults write com.apple.menuextra.battery ShowPercent -string "YES"
defaults write com.apple.menuextra.battery ShowTime -string "NO"
#Disable Notification Center and remove the menu bar icon
launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist
#Disable rubberband scrolling
defaults write -g NSScrollViewRubberbanding -bool false
#Disable dashboard
defaults write com.apple.dashboard mcx-disabled -boolean YES
#Move dock to left side of screen
defaults write com.apple.dock orientation -string left
#Show all filename extensions in Finder
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
#Expand save panel by default
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
#Expand print panel by default
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true
#Avoid creating .DS_Store files on network volumes
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
#Disable the warning when changing a file extension
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
#Use list view in all Finder windows by default
#Four-letter codes for the other view modes: icnv, Nlmv, Flwv
defaults write com.apple.finder FXPreferredViewStyle -string "Nlmv"
#Remove default text from basic screen saver
defaults write ~/Library/Preferences/com.apple.ScreenSaver.Basic MESSAGE " "
#Disable sound effect when changing volume
defaults write -g com.apple.sound.beep.feedback -integer 0
#Disable user interface sound effects
defaults write com.apple.systemsound 'com.apple.sound.uiaudio.enabled' -int 0
#Set system sounds volume to 0
defaults write com.apple.systemsound com.apple.sound.beep.volume -float 0
#Autohide Dock
defaults write com.apple.dock autohide -bool true
#Show/Hide Dock instantly
defaults write com.apple.Dock autohide-delay -float 0
defaults write com.apple.dock autohide-time-modifier -float 0
#Kill affected applications, so the changes apply
for app in Safari Finder Dock Mail SystemUIServer; do killall "$app" >/dev/null 2>&1; done
# Instructions
echo "- Open tmux and run plugin installers: \`I"
echo "- Open vim and run :PlugInstall"
else
echo "Aborting"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment