This article covers OSX Workstation Tuning, El Capitan, originally published as a secure GitHub Gist snippet.

OS X Preferences

most of these require logout/restart to take effect

Enable character repeat on keydown

defaults write -g ApplePressAndHoldEnabled -bool false

Set a shorter Delay until key repeat

defaults write NSGlobalDomain InitialKeyRepeat -int 12

Set a blazingly fast keyboard repeat rate

defaults write NSGlobalDomain KeyRepeat -int 0

Disable window animations ("new window" scale effect)

defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool false

Turn on dashboard-as-space

defaults write com.apple.dashboard enabled-state 2

Use plain text mode for new TextEdit documents

defaults write com.apple.TextEdit RichText -int 0

Make top-right hotspot start screensaver

defaults write com.apple.dock wvous-tr-corner -int 5 &&
defaults write com.apple.dock wvous-tr-modifier -int 0

Set default Finder location to home folder (~/)

defaults write com.apple.finder NewWindowTarget -string "PfLo" &&
defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}"

Expand save panel by default

defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true

Disable ext change warning

defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false

Check for software updates daily, not just once per week

defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1

Use current directory as default search scope in Finder

defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"

Show Path bar in Finder

defaults write com.apple.finder ShowPathbar -bool true

Show Status bar in Finder

defaults write com.apple.finder ShowStatusBar -bool true

Show icons for hard drives, servers, and removable media on the desktop

defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true &&
defaults write com.apple.finder ShowHardDrivesOnDesktop -bool true &&
defaults write com.apple.finder ShowMountedServersOnDesktop -bool true &&
defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true

Avoid creating .DS_Store files on network volumes

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

Disable disk image verification

defaults write com.apple.frameworks.diskimages skip-verify -bool true &&
defaults write com.apple.frameworks.diskimages skip-verify-locked -bool true &&
defaults write com.apple.frameworks.diskimages skip-verify-remote -bool true

Trackpad: map bottom right corner to right-click

defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadCornerSecondaryClick -int 2 &&
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRightClick -bool true &&
defaults -currentHost write NSGlobalDomain com.apple.trackpad.trackpadCornerClickBehavior -int 1 &&
defaults -currentHost write NSGlobalDomain com.apple.trackpad.enableSecondaryClick -bool true

Enable the Develop menu and the Web Inspector in Safari

defaults write com.apple.Safari IncludeInternalDebugMenu -bool true &&
defaults write com.apple.Safari IncludeDevelopMenu -bool true &&
defaults write com.apple.Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true &&
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled -bool true &&
defaults write NSGlobalDomain WebKitDeveloperExtras -bool true

Show the ~/Library folder

chflags nohidden ~/Library

Show absolute path in finder's title bar.

defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES

Auto-play videos when opened with QuickTime Player

defaults write com.apple.QuickTimePlayerX MGPlayMovieOnOpen 1

Enable AirDrop over Ethernet and on unsupported Macs

defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool true

Disable WebkitNightly.app's homepage

defaults write org.webkit.nightly.WebKit StartPageDisabled -bool true

###Shell

####Switch to z-shell

curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh ####Homebrew

install package manager

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

install homebrew packages

brew install
tree
node
ssh-copy-id
wget
jpegoptim
pngcrush
colordiff
ghostscript
imagemagick --with-ghostscript
graphicsmagick
ack ####Homebrew Web Server Packages

brew install
dnsmasq
nginx
mariadb
redis
memcached
libmemcached
####Homebrew Cask Apps & Fonts

add support for fonts

brew tap caskroom/fonts

#add dev/beta versions brew tap caskroom/versions

#install mac apps & fonts brew cask install
font-source-code-pro
adobe-creative-cloud
blueharvest
cleanmymac
cocktail
ghostlab
coda
sublime-text-dev
virtualbox
coderunner
google-chrome
firefox
codekit
iterm2-beta
sequel-pro
querious
imageoptim
imagealpha
xquartz
simpholders-2-alpha
handbrake
vagrant
ksdiff
spotify ####Update .zshrc

wget https://gist.githubusercontent.com/saetia/2764210/raw/ab099b587689640eb32cbc1afdb6a19b62be7fb0/.zshrc -O
~/.zshrc

#syntax highlighting git clone git://github.com/zsh-users/zsh-syntax-highlighting.git
~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting ####Set hostname

sudo scutil --set HostName Work ###Agree To Xcode

sudo xcrun cc ###Git

####Setup Github

ssh-keygen -t rsa -C "saetia@gmail.com"

#copy ssh key to clipboard for adding to github.com pbcopy < ~/.ssh/id_rsa.pub

#test connection ssh -T git@github.com

#set git config values git config --global user.name "Joel Glovacki" &&
git config --global user.email "saetia@gmail.com" &&
git config --global github.user saetia &&
git config --global core.editor "subl -w" &&
git config --global color.ui true &&
git config --global push.default simple

#token git config --global github.token your_token_here #diff-so-fancy brew install diff-so-fancy git config --global pager.diff "diff-so-fancy | less --tabs=4 -RFX" &&
git config --global pager.show "diff-so-fancy | less --tabs=4 -RFX" ###Coda

####Install markdown support

git clone https://github.com/bobthecow/Markdown.mode.git
~/Library/Application\ Support/Coda\ 2/modes/Markdown.mode ###Sublime Text

####Install Soda Theme

git clone git://github.com/buymeasoda/soda-theme.git
~/Library/Application\ Support/Sublime\ Text\ 3/Packages/Theme\ -\ Soda ####Install Tomorrow Night Eighties Themes

#Sublime Text git clone git://github.com/chriskempson/textmate-tomorrow-theme.git
~/Library/Application\ Support/Sublime\ Text\ 3/Packages/Color\ Scheme\ -\ Tomorrow

#iTerm2 wget https://raw.githubusercontent.com/mbadolato/iTerm2-Color-Schemes/master/schemes/Tomorrow%20Night%20Eighties.itermcolors
-O ~/Downloads/Tomorrow\ Night\ Eighties.itermcolors && open ~/Downloads/Tomorrow\ Night\ Eighties.itermcolors

#Xcode mkdir -p ~/Library/Developer/Xcode/UserData/FontAndColorThemes &&
wget https://raw.githubusercontent.com/chriskempson/tomorrow-theme/master/Xcode%204/Tomorrow%20Night%20Eighties.dvtcolortheme -O
~/Library/Developer/Xcode/UserData/FontAndColorThemes/Tomorrow\ Night\ Eighties.dvtcolortheme ####Settings

{ "close_windows_when_empty": true, "color_scheme": "Packages/Color Scheme - Tomorrow/Tomorrow-Night-Eighties.tmTheme", "draw_indent_guides": false, "font_face": "Source Code Pro", "font_size": 22.0, "highlight_modified_tabs": true, "ignored_packages": [ "Vintage" ], "show_full_path": true, "show_tab_close_buttons": false, "spell_check": false, "tab_size": 2, "theme": "Soda Light.sublime-theme", "word_separators": "./\()"'-:,.;<>!@#%^&*|+=[]{}`?" }

####Key Bindings

[ { "keys": ["super+b"], "command": "expand_selection", "args": {"to": "brackets"} }, { "keys": ["super+f"], "command": "show_panel", "args": {"panel": "replace"} }, { "keys": ["super+alt+f"], "command": "show_panel", "args": {"panel": "find"} } ] ####Snippets

git clone git@github.com :co-b/sublime-snippets.git
~/Library/Application\ Support/Sublime\ Text\ 3/Packages/CoB

iOS

sudo gem install cocoapods pod setup

Ruby

Ruby version manager

curl -L https://get.rvm.io | bash -s stable --rails

Gems

gem install pygmentize growl guard guard-phpunit bropages

Node

Packages

npm install -g coffee-script bower

Vagrant

vagrant plugin install vagrant-hostsupdater

PHP

#switch from SecureTransport brew reinstall --with-openssl curl

#install php-fpm brew tap homebrew/dupes &&
brew tap homebrew/versions &&
brew tap homebrew/dupes &&
brew install php70
--with-fpm
--without-apache
--with-mysql
--with-homebrew-curl
--with-homebrew-openssl \ --without-snmp

#setup daemon ln -sfv /usr/local/opt/php70/*.plist ~/Library/LaunchAgents &&
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php70.plist ####PHP-Redis

#brew install php70-redis brew install --HEAD homebrew/php/php70-redis ####Imagemagick

brew install homebrew/php/php70-imagick ####MariaDB

#setup daemon ln -sfv /usr/local/opt/mariadb/*.plist ~/Library/LaunchAgents &&
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mariadb.plist

#initial setup mysql_install_db

#secure mariadb mysql_secure_installation ####NGINX

sudo cp -v /usr/local/opt/nginx/*.plist /Library/LaunchDaemons/ && sudo chown root:wheel /Library/LaunchDaemons/homebrew.mxcl.nginx.plist && sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

Local Web Server

Add DNS Domains, Enable dnsmasq daemon

This will route requests to any url ending in .build back to your own computer. The goal is to use urls like http://example.com.build for development while you work on http://example.com

mkdir -pv $(brew --prefix)/etc/ &&
echo 'address=/.build/127.0.0.1' > $(brew --prefix)/etc/dnsmasq.conf &&
sudo cp -v $(brew --prefix dnsmasq)/homebrew.mxcl.dnsmasq.plist /Library/LaunchDaemons &&
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist &&
sudo mkdir -v /etc/resolver &&
sudo zsh -c 'echo "nameserver 127.0.0.1" > /etc/resolver/build'

#flush cache sudo discoveryutil mdnsflushcache && scutil --dns ####Enable virtual hosts

This will allow you to serve folders under ~/Sites/ as websites.

  • ~/Sites

example.com

htdocs

index.html

to access this site, visit http://example.com.build

####Match production server paths

sudo mkdir -p /var/ && sudo ln -s ~/Sites /var/www