#!/bin/bash ###################################### Configure sane user preference defaults # black like my soul defaults write NSGlobalDomain AppleInterfaceStyle Dark # hide menu bar defaults write NSGlobalDomain _HIHideMenuBar -bool true # dock on left defaults write com.apple.dock orientation left # autohide dock defaults write com.apple.dock autohide -bool true # do not save to icloud drive by default defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool FALSE # airdrop on all interfaces defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool true # disable spotlight search spyware ugh thx defaults write com.apple.lookup.shared LookupSuggestionsDisabled -int 1 defaults write com.apple.Safari UniversalSearchEnabled -int 0 # show battery percentage defaults write com.apple.menuextra.battery ShowPercent -bool TRUE # ask for password after 5 seconds of screen saver defaults write com.apple.screensaver askForPassword -int 1 defaults write com.apple.screensaver askForPasswordDelay -int 30 # bottom right corner to lock screen defaults write com.apple.dock "wvous-br-corner" -int 5 defaults write com.apple.dock "wvous-br-modifier" -int 0 # 10 minute screensaver activation defaults write com.apple.screensaver idleTime -int 600 # terminal utf8 only defaults write com.apple.Terminal StringEncodings -array 4 # close terminal window if shell exited cleanly defaults write com.apple.Terminal ShellExitAction 2 defaults write com.apple.Terminal FontAntialias 1 defaults write com.apple.Terminal "Default Window Settings" "Pro" defaults write com.apple.Terminal "Startup Window Settings" "Pro" # new finder windows use ~ defaults write com.apple.finder NewWindowTarget -string "PfHm" # new finder windows show status bar defaults write com.apple.finder ShowStatusBar -int 1 # don't show mounted volumes on desktop defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -int 0 defaults write com.apple.finder ShowRemovableMediaOnDesktop -int 0 # set textedit to edit plain text by default: defaults write com.apple.TextEdit RichText -int 0 # set airdrop/bluetooth to be discoverable by everyone in range defaults write com.apple.sharingd DiscoverableMode Everyone # finder show all file extensions defaults write NSGlobalDomain AppleShowAllExtensions -bool true # set menubar clock to 24h with date and seconds defaults write com.apple.menuextra.clock DateFormat -string 'EEE MMM d H:mm:ss' defaults write NSGlobalDomain AppleICUForce24HourTime -bool true # set keyboard to be really fucking fast # normal minimum is 15 (225 ms) defaults write NSGlobalDomain InitialKeyRepeat -int 15 # normal minimum is 2 (30 ms) defaults write NSGlobalDomain KeyRepeat -int 1 # disable all spelling correction, smart quotes, capitalization, et c: # (*important* for code) defaults write NSGlobalDomain NSAutomaticCapitalizationEnabled -int 0 defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -int 0 defaults write NSGlobalDomain NSAutomaticPeriodSubstitutionEnabled -int 0 defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -int 0 defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -int 0 # safari debug stuff 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 ######################################################### set default inputrc cat > ~/.inputrc < ~/.bashrc <<'EOF' # do not edit this file. put files in the dir below. for FN in $HOME/Library/bashrc.d/*.sh ; do source $FN done EOF mkdir -p ~/Library/bashrc.d touch ~/Library/bashrc.d/keep.sh cat > ~/.profile <<'EOF' # do not edit this file. put files in the dir below. source ~/.bashrc for FN in $HOME/Library/profile.d/*.sh ; do source $FN done EOF mkdir -p ~/Library/profile.d touch ~/Library/profile.d/keep.sh ####################################################### install homebrew path cat > ~/Library/bashrc.d/100homebrew.sh <<'EOF' export PATH+=":$HOME/Library/Homebrew/bin" export PATH+=":$HOME/Library/Homebrew/sbin" export HOMEBREW_NO_ANALYTICS=1 EOF ####################################### Set caskroom to install under homedir cat > ~/Library/bashrc.d/100homebrewcaskdir.sh <<'EOF' export HOMEBREW_CASK_OPTS="--appdir=$HOME/Applications" EOF ##################################################################### set PS1 cat > ~/Library/bashrc.d/000.ps1.sh <<'EOF' export PS1='\u@\h:\w\\$ ' EOF ############################################################ enable git prompt cat > ~/Library/bashrc.d/200.git-prompt.sh <<'EOF' if [ -f "$(brew --prefix bash-git-prompt)/share/gitprompt.sh" ]; then GIT_PROMPT_THEME=Default GIT_PROMPT_ONLY_IN_REPO=1 source "$(brew --prefix bash-git-prompt)/share/gitprompt.sh" fi EOF ########################################## enable bash completion in homebrew cat > ~/Library/bashrc.d/900.homebrew-completion.sh <<'EOF' if [ -f $(brew --prefix)/etc/bash_completion ]; then . $(brew --prefix)/etc/bash_completion fi EOF ################################################################### GPG Agent cat > ~/Library/profile.d/900.gpg-agent.sh <<'EOF' # check for existing running agent info if [[ -e $HOME/.gpg-agent-info ]]; then source $HOME/.gpg-agent-info export GPG_AGENT_INFO SSH_AUTH_SOCK SSH_AGENT_PID fi # test existing agent, remove info file if not working ssh-add -L 2>/dev/null >/dev/null || rm -f $HOME/.gpg-agent-info # if no info file, start up potentially-new, working agent if [[ ! -e $HOME/.gpg-agent-info ]]; then gpg-agent \ --enable-ssh-support \ --daemon \ --write-env-file \ --use-standard-socket \ --pinentry-program $HOME/Library/Homebrew/bin/pinentry-mac \ 2>&1 >/dev/null fi # load up new agent info if [[ -e $HOME/.gpg-agent-info ]]; then source $HOME/.gpg-agent-info export GPG_AGENT_INFO SSH_AUTH_SOCK SSH_AGENT_PID fi EOF ############################################################################# ### load up profile scripts / paths for the rest of this configuration script source ~/.profile ####################################################### install caskroom apps if [[ ! -d ~/Applications ]]; then mkdir -p ~/Applications fi brew tap caskroom/cask CASKS=" atom disk-inventory-x github-desktop google-chrome google-drive iterm2 keepassx lastpass slack spotify sublime-text xscreensaver " for CASK in $CASKS ; do brew cask install $CASK done #################################################### install homebrew packages HOMEBREW_PKGS=" autoconf automake bash-completion bash-git-prompt bonnie++ byobu cmake coreutils curl daemontools docker docker-compose docker-machine duplicity ffmpeg fish flac geoip ghc gist git gnupg gnupg2 go gpg-agent homebrew/dupes/rsync irssi jq keybase lame mobile-shell mtr mutt nmap node pbzip2 pinentry-mac protobuf pv pwgen python3 socat sox speedtest_cli syncthing tcptraceroute terraform tor torsocks unrar unzip watch wget whatmask " for PKG in $HOMEBREW_PKGS ; do brew install $PKG done ############################################# look for vimrc in google drive ln -s ~/Google\ Drive/Dotfiles/vimrc ~/.vimrc