wpsmith / Complete-macOS-Setup

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Complete macOS Setup

From clean install to fully configured.

Step 1: Init Environment

Temporarily Disable sudo Password Timeout

The sudo password timeout is re-enabled at the end of this script. ##+BEGIN_SRC sh sudo tee /etc/sudoers.d/timeout > /dev/null <<-EOF Defaults timestamp_timeout=-1 EOF ##+END_SRC

##+BEGIN_SRC sh sudo tee /etc/sudoers.d/installer > /dev/null <<-EOF %admin ALL=(ALL) NOPASSWD:SETENV: /usr/sbin/installer EOF ##+END_SRC

Disable System and Disk Sleep

sudo pmset -a sleep 0
sudo pmset -a disksleep 0

Setup Required Paths

if ! grep -Fq '/usr/local/sbin' /etc/paths; then
  sudo sed -i -e '/\/usr\/sbin/i\
\/usr\/local\/sbin\
' /etc/paths
fi

sudo mkdir -p '/usr/local/Caskroom'
sudo chgrp admin '/usr/local/' '/usr/local/Caskroom/' '/Library/ColorPickers/' '/Library/Screen Savers/'
sudo chmod g+w '/usr/local/' '/usr/local/Caskroom/' '/Library/ColorPickers/' '/Library/Screen Savers/'

Set Environment Variables Permanently (after restart)

Details: http://stackoverflow.com/a/26477515/1959421

Create /etc/environment

sudo tee /etc/environment > /dev/null <<-EOF
#!/bin/sh

set -e

syslog -s -l warn "Set environment variables for \$(whoami) - start"

CASK_OPTS="--appdir=/Applications"
CASK_OPTS="\${CASK_OPTS} --caskroom=/usr/local/Caskroom"
CASK_OPTS="\${CASK_OPTS} --colorpickerdir=/Library/ColorPickers"
CASK_OPTS="\${CASK_OPTS} --fontdir=/Library/Fonts"
CASK_OPTS="\${CASK_OPTS} --prefpanedir=/Library/PreferencePanes"
CASK_OPTS="\${CASK_OPTS} --screen_saverdir='/Library/Screen Savers'"
export HOMEBREW_CASK_OPTS=\$CASK_OPTS
launchctl setenv HOMEBREW_CASK_OPTS "\$CASK_OPTS"

if [ -x /usr/libexec/path_helper ]; then
  export PATH=""
  eval \`/usr/libexec/path_helper -s\`
  launchctl setenv PATH \$PATH
fi

osascript -e 'tell app "Dock" to quit'

syslog -s -l warn "Set environment variables for \$(whoami) - complete"
EOF

sudo chmod a+x /etc/environment

Create /Library/LaunchAgents/environment.user for GUI Applications

sudo defaults write '/Library/LaunchAgents/environment.user' 'Label' -string 'environment.user'
sudo defaults write '/Library/LaunchAgents/environment.user' 'ProgramArguments' -array-add '/etc/environment'
sudo defaults write '/Library/LaunchAgents/environment.user' 'RunAtLoad' -bool true
sudo defaults write '/Library/LaunchAgents/environment.user' 'WatchPaths' -array-add '/etc/environment'
sudo defaults write '/Library/LaunchAgents/environment.user' 'WatchPaths' -array-add '/etc/paths'
sudo defaults write '/Library/LaunchAgents/environment.user' 'WatchPaths' -array-add '/etc/paths.d'
sudo plutil -convert xml1 '/Library/LaunchAgents/environment.user.plist'
sudo chmod 644 /Library/LaunchAgents/environment.user.plist
sudo launchctl load -w /Library/LaunchAgents/environment.user.plist

Create /Library/LaunchDaemons/environment for Terminal Applications

sudo defaults write '/Library/LaunchDaemons/environment' 'Label' -string 'environment'
sudo defaults write '/Library/LaunchDaemons/environment' 'ProgramArguments' -array-add '/etc/environment'
sudo defaults write '/Library/LaunchDaemons/environment' 'RunAtLoad' -bool true
sudo defaults write '/Library/LaunchDaemons/environment' 'WatchPaths' -array-add '/etc/environment'
sudo defaults write '/Library/LaunchDaemons/environment' 'WatchPaths' -array-add '/etc/paths'
sudo defaults write '/Library/LaunchDaemons/environment' 'WatchPaths' -array-add '/etc/paths.d'
sudo plutil -convert xml1 '/Library/LaunchDaemons/environment.plist'
sudo chmod 644 /Library/LaunchDaemons/environment.plist
sudo launchctl load -w /Library/LaunchDaemons/environment.plist

Add Secondary User

/bin/echo -n "Enter full name: "
read FULLNAME

/bin/echo -n "Enter account name: "
read USERNAME

/bin/echo -n "Enter password: "
read -s PASSWORD

LASTID=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
USERID=$((LASTID+1))

sudo dscl . -create "/Users/${USERNAME}"
sudo dscl . -create "/Users/${USERNAME}" UserShell /bin/zsh
sudo dscl . -create "/Users/${USERNAME}" RealName "${FULLNAME}"
sudo dscl . -create "/Users/${USERNAME}" UniqueID "${USERID}"
sudo dscl . -create "/Users/${USERNAME}" PrimaryGroupID 20
sudo dscl . -create "/Users/${USERNAME}" NFSHomeDirectory "/Users/${USERNAME}"
sudo dscl . -passwd "/Users/${USERNAME}" "${PASSWORD}"

ADMIN_GROUPS="admin appserveradm appserverusr com.apple.sharepoint.group.1 lpadmin"
for GROUP in $ADMIN_GROUPS ; do
  sudo dseditgroup -o edit -t user -a $USERNAME $GROUP
done

sudo createhomedir -c -u $USERNAME 2> /dev/null

sudo defaults write /Library/Preferences/com.apple.loginwindow SHOWFULLNAME -bool true

Restart Before Continuing

osascript -e 'tell app "loginwindow" to «event aevtrrst»'

Step 2: Install Software

Open New Terminal

if [ -z "$1" ]; then
  osascript > /dev/null <<-END
    tell app "Terminal" to do script "source ${0} 0"
END
  clear

else

Initialize Variables

function init_install_path () {
  if [ ! -d "/Volumes/Storage" ] \
    && [ -d "/Volumes/VMware Shared Folders/Storage" ]; then
    cd "/Volumes" \
      && sudo ln -s "VMware Shared Folders/Storage" "Storage"
  fi

  if [ -d "/Volumes/Storage/Software" ]; then
    INSTALL_PATH="/Volumes/Storage/Software"
  else
    INSTALL_PATH="${HOME}/Downloads"
  fi

  mkdir -p "${HOME}/Library/Caches/Homebrew/"
}

Install Command Line Tools

function install_command_line_tools () {
  init_install_path

  INSTALL_PATH_XCODE="${INSTALL_PATH}/apple.com"

  if [ ! -d "${INSTALL_PATH_XCODE}" ]; then
    mkdir -p "${INSTALL_PATH_XCODE}"
  fi

  if [ ! -f "${INSTALL_PATH_XCODE}/CLTools_Executables.pkg" ] \
    || [ ! -f "${INSTALL_PATH_XCODE}/DevSDK_OSX1012.pkg" ]; then
    cd "${INSTALL_PATH_XCODE}" \
      && curl --compressed --location --silent \
      "https://swscan.apple.com/content/catalogs/others/index-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz" \
      | sed -n \
        -e "s/^.*<string>\(.*CLTools_Executables.pkg\).*/\1/p" \
        -e "s/^.*<string>\(.*DevSDK_OSX1012.pkg\).*/\1/p" \
      | tail -n 2 \
      | xargs -L 1 curl --compressed --location --remote-name
  fi

  if [ -f "${INSTALL_PATH_XCODE}/CLTools_Executables.pkg" ] \
    && [ -f "${INSTALL_PATH_XCODE}/DevSDK_OSX1012.pkg" ]; then
    sudo installer -pkg "${INSTALL_PATH_XCODE}/CLTools_Executables.pkg" -target /
    sudo installer -pkg "${INSTALL_PATH_XCODE}/DevSDK_OSX1012.pkg" -target /
  fi
}

Install Homebrew

Details: http://brew.sh

function install_homebrew () {
  sudo chown $(whoami) '/usr/local' '/usr/local/Caskroom' "${HOME}/Library/Caches/Homebrew/"

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

  brew analytics off

  brew update
  brew doctor

  brew tap "caskroom/cask"
  brew tap "homebrew/bundle"
}

Create Brewfile

Details: https://github.com/Homebrew/homebrew-bundle

function create_brewfile () {
  cat > /usr/local/Brewfile <<-EOF
tap "caskroom/cask"
tap "caskroom/fonts"
tap "caskroom/versions"
tap "homebrew/bundle"
tap "homebrew/dupes"
tap "homebrew/nginx"
tap "infinit/releases"
tap "ptb/custom"
tap "railwaycat/emacsmacport"
tap "vitorgalvao/tiny-scripts"

cask "java"

cask "ptb/custom/mas-xcode"

# cask "adobe-illustrator-cc"
# cask "adobe-indesign-cc"
# cask "adobe-photoshop-cc"

# cask "ptb/custom/enhanced-dictation"
cask "ptb/custom/text-to-speech-allison"

cask "ptb/custom/mas-keynote"
cask "ptb/custom/mas-numbers"
cask "ptb/custom/mas-pages"

cask "ptb/custom/mas-affinity-photo"

cask "sonarr"
cask "sonarr-menu"
cask "vmware-fusion"

# cask "ptb/custom/bbedit-10"
cask "ptb/custom/blankscreen"
cask "ptb/custom/composer"
cask "ptb/custom/ipmenulet"
cask "ptb/custom/mas-1password"
cask "ptb/custom/mas-autoping"
cask "ptb/custom/mas-coffitivity"
cask "ptb/custom/mas-growl"
cask "ptb/custom/mas-hardwaregrowler"
cask "ptb/custom/mas-i-love-stars"
cask "ptb/custom/mas-icon-slate"
cask "ptb/custom/mas-justnotes"
cask "ptb/custom/mas-wifi-explorer"
cask "ptb/custom/pcalc-3"
cask "ptb/custom/safari-technology-preview"
cask "ptb/custom/sketchup-pro"
cask "ptb/custom/synergy"
cask "ptb/custom/tune4mac"

brew "aspell", args: ["lang=en"]
brew "vitorgalvao/tiny-scripts/cask-repair"
brew "chromedriver"
brew "duti"
brew "railwaycat/emacsmacport/emacs-mac", args: ["with-spacemacs-icon"]
brew "ptb/custom/ffmpeg",
  args: [
  "with-dcadec",
  "with-faac",
  "with-fdk-aac",
  "with-ffplay",
  "with-fontconfig",
  "with-freetype",
  "with-frei0r",
  "with-lame",
  "with-libass",
  "with-libbluray",
  "with-libbs2b",
  "with-libcaca",
  "with-libsoxr",
  "with-libssh",
  "with-libvidstab",
  "with-libvorbis",
  "with-libvpx",
  "with-opencore-amr",
  "with-openh264",
  "with-openjpeg",
  "with-openssl",
  "with-opus",
  "with-pkg-config",
  "with-qtkit",
  "with-rtmpdump",
  "with-rubberband",
  "with-schroedinger",
  "with-sdl",
  "with-snappy",
  "with-speex",
  "with-texi2html",
  "with-theora",
  "with-tools",
  "with-webp",
  "with-x264",
  "with-x265",
  "with-xvid",
  "with-yasm",
  "with-zeromq",
  "with-zimg" ]
brew "git"
# brew "git-annex"
brew "gnu-sed", args: ["with-default-names"]
brew "gnupg"
brew "gpac"
brew "hub"
brew "ievms"
brew "imagemagick"
brew "mercurial"
brew "mp4v2"
brew "mtr"
brew "nmap"
brew "homebrew/nginx/nginx-full",
  args: [
  "with-dav-ext-module",
  "with-fancyindex-module",
  "with-gzip-static",
  "with-http2",
  "with-mp4-h264-module",
  # "with-passenger",
  "with-push-stream-module",
  "with-secure-link",
  "with-webdav" ]
brew "node"
brew "openssl"
brew "homebrew/dupes/rsync"
brew "python"
brew "ruby"
brew "selenium-server-standalone"
brew "sqlite"
brew "stow"
brew "terminal-notifier"
brew "trash"
brew "vim"
brew "wget"
brew "youtube-dl"
brew "zsh"

cask "adium"
cask "airfoil"
cask "alfred"
cask "arduino"
cask "atom"
cask "autodmg"
cask "bbedit"
cask "caffeine"
cask "carbon-copy-cloner"
cask "charles"
cask "dash"
# cask "datetree"
# cask "disk-inventory-x"
cask "docker-toolbox"
cask "dropbox"
cask "duet"
cask "exifrenamer"
cask "expandrive"
cask "firefox"
cask "flux"
cask "github-desktop"
cask "gitup"
cask "google-chrome"
cask "handbrake"
cask "handbrakecli"
cask "hermes"
cask "imageoptim"
cask "integrity"
cask "istat-menus"
cask "jubler"
cask "little-snitch"
cask "machg"
cask "makemkv"
cask "menubar-countdown"
cask "meteorologist"
# cask "microsoft-office"
cask "moom"
cask "mp4tools"
cask "munki"
cask "musicbrainz-picard"
cask "namechanger"
cask "nvalt"
cask "nzbget"
cask "nzbvortex"
cask "openemu"
cask "opera"
cask "caskroom/versions/osxfuse-beta"
cask "pacifist"
cask "platypus"
cask "plex-media-server"
cask "quitter"
# cask "raindropio"
cask "rescuetime"
cask "scrivener"
cask "sitesucker"
cask "sizeup"
cask "sketch"
cask "sketchup"
cask "skitch"
cask "skype"
cask "slack"
cask "sourcetree"
cask "steermouse"
cask "subler"
cask "caskroom/versions/sublime-text-dev"
cask "time-sink"
# cask "timing"
cask "the-unarchiver"
# cask "tidy-up"
cask "torbrowser"
cask "tower"
cask "transmit"
cask "vimr"
cask "vlc"
# cask "webkit-nightly"
cask "xld"

cask "xquartz"
cask "inkscape"
# brew "wine"
cask "wireshark"

cask "caskroom/fonts/font-inconsolata-lgc"

brew "infinit/releases/infinit"
EOF
}

Install OS X Software

function install_osx_software () {
  init_install_path

  INSTALL_PATH_HOMEBREW="${INSTALL_PATH}/github.com/Homebrew"

  if [ -d "${INSTALL_PATH_HOMEBREW}" ]; then
    cd "$(cd "${INSTALL_PATH_HOMEBREW}" && pwd)" \
      && cp -av * "${HOME}/Library/Caches/Homebrew/"
  fi

  cd /usr/local/ && brew bundle

  brew upgrade --all
  brew linkapps

  cd $(cd /usr/local/Caskroom/little-snitch/* && pwd) && open "Little Snitch Installer.app"
}

Install Node Software

function install_node_software () {
  npm i -g babel-cli bower browser-sync browserify chimp coffee-script eslint eslint-plugin-promise eslint-plugin-standard gulp-cli jasmine polyserve riot selenium-webdriver superstatic svgo uglify-js watchify webpack
}

Install Python Software

function install_python_software () {
  curl -Ls https://bootstrap.pypa.io/get-pip.py | sudo -H python
  pip install --upgrade pip setuptools
  pip install --upgrade babelfish bottle 'guessit<2' influxdb netifaces pika psutil py2app pyobjc-core pysnmp pystache qtfaststart requests scour selenium statsd 'subliminal<2' watchdog yapf zeroconf
  pip install --upgrade glances pyobjc 'requests[security]'
}

Install Ruby Software

function install_ruby_software () {
  printf "%s\n" \
    "gem: --no-document" \
    >> "${HOME}/.gemrc"

  gem update --system
  gem update
  gem install nokogiri -- --use-system-libraries
  gem install web-console --version "~> 2"
  gem install rails sqlite3 sass-rails uglifier coffee-rails jquery-rails turbolinks jbuilder sdoc byebug spring tzinfo-data
  gem install em-websocket middleman middleman-autoprefixer middleman-blog middleman-compass middleman-livereload middleman-minify-html middleman-robots mime-types slim
  gem install bootstrap-sass git-cipher org-ruby selenium-webdriver thin
}

Create /usr/local/bin/vi Script

function create_vi_script () {
  cat > /usr/local/bin/vi <<-EOF
#!/bin/sh

if [ -e '/Applications/Emacs.app' ]; then
  t=()

  if [ \${#@} -ne 0 ]; then
    while IFS= read -r file; do
      [ ! -f "\$file" ] && t+=("\$file") && /usr/bin/touch "\$file"
      file=\$(echo \$(cd \$(dirname "\$file") && pwd -P)/\$(basename "\$file"))
      \$(/usr/bin/osascript <<-END
        if application "Emacs.app" is running then
          tell application id (id of application "Emacs.app") to open POSIX file "\$file"
        else
          tell application ((path to applications folder as text) & "Emacs.app")
            activate
            open POSIX file "\$file"
          end tell
        end if
END
        ) &  # Note: END on the previous line may be indented with tabs but not spaces
      done <<<"\$(printf '%s\n' "\$@")"
    fi

    if [ ! -z "\$t" ]; then
      \$(/bin/sleep 10; for file in "\${t[@]}"; do
        [ ! -s "\$file" ] && /bin/rm "\$file";
      done) &
    fi
  else
    vim -No "\$@"
  fi
EOF

  chmod a+x /usr/local/bin/vi
}

Link Utilities

function link_utilities () {
  cd /Applications/Utilities \
    && for a in /System/Library/CoreServices/Applications/*; do
      sudo ln -s "../..$a" .
    done \
    && for b in /Applications/Xcode.app/Contents/Applications/*; do
      sudo ln -s "../..$b" .
    done \
    && for c in /Applications/Xcode.app/Contents/Developer/Applications/*; do
      sudo ln -s "../..$c" .
    done
}

Re-enable sudo Password Timeout

function reenable_sudo_timeout () {
  sudo sed -i -e "/Defaults  timestamp_timeout=-1/d" /etc/sudoers
  sudo sed -i -e "/%admin ALL=(ALL) NOPASSWD:SETENV: \/usr\/sbin\/installer/d" /etc/sudoers
}

Install All

function install_all () {
  install_command_line_tools
  install_homebrew
  create_brewfile
  install_osx_software
  # install_node_software
  install_python_software
  # install_ruby_software
  create_vi_script
  link_utilities
  # reenable_sudo_timeout
}

Display Help

clear
cat <<-END

Enter any of these commands:
  install_command_line_tools
  install_homebrew
  create_brewfile
  install_osx_software
  # install_node_software
  install_python_software
  # install_ruby_software
  create_vi_script
  link_utilities
  # reenable_sudo_timeout

Or:
  install_all

END
fi

Step 3: Configure Prefs

Open New Terminal

if [ -z "$1" ]; then
  osascript > /dev/null <<-END
    tell app "Terminal" to do script "source ${0} 0"
END
  clear

else

Configure File Mappings

function config_file_map () {
  if [ -x "/usr/local/bin/duti" ]; then
    printf "%s\t%s\t%s\n" \
      "org.videolan.vlc" "public.avi" "all" \
      "com.VortexApps.NZBVortex3" "dyn.ah62d4rv4ge8068xc" "all" \
      "com.apple.DiskImageMounter" "com.apple.disk-image" "all" \
      "com.apple.DiskImageMounter" "public.disk-image" "all" \
      "com.apple.DiskImageMounter" "public.iso-image" "all" \
      "com.apple.QuickTimePlayerX" "com.apple.coreaudio-format" "all" \
      "com.apple.QuickTimePlayerX" "com.apple.quicktime-movie" "all" \
      "com.apple.QuickTimePlayerX" "com.microsoft.waveform-audio" "all" \
      "com.apple.QuickTimePlayerX" "public.aifc-audio" "all" \
      "com.apple.QuickTimePlayerX" "public.aiff-audio" "all" \
      "com.apple.QuickTimePlayerX" "public.audio" "all" \
      "com.apple.QuickTimePlayerX" "public.mp3" "all" \
      "com.apple.Safari" "com.compuserve.gif" "all" \
      "com.apple.Terminal" "com.apple.terminal.shell-script" "all" \
      "com.apple.iTunes" "com.apple.iTunes.audible" "all" \
      "com.apple.iTunes" "com.apple.iTunes.ipg" "all" \
      "com.apple.iTunes" "com.apple.iTunes.ipsw" "all" \
      "com.apple.iTunes" "com.apple.iTunes.ite" "all" \
      "com.apple.iTunes" "com.apple.iTunes.itlp" "all" \
      "com.apple.iTunes" "com.apple.iTunes.itms" "all" \
      "com.apple.iTunes" "com.apple.iTunes.podcast" "all" \
      "com.apple.iTunes" "com.apple.m4a-audio" "all" \
      "com.apple.iTunes" "com.apple.mpeg-4-ringtone" "all" \
      "com.apple.iTunes" "com.apple.protected-mpeg-4-audio" "all" \
      "com.apple.iTunes" "com.apple.protected-mpeg-4-video" "all" \
      "com.apple.iTunes" "com.audible.aa-audio" "all" \
      "com.apple.iTunes" "public.mpeg-4-audio" "all" \
      "com.apple.installer" "com.apple.installer-package-archive" "all" \
      "com.github.atom" "com.apple.binary-property-list" "editor" \
      "com.github.atom" "com.apple.crashreport" "editor" \
      "com.github.atom" "com.apple.dt.document.ascii-property-list" "editor" \
      "com.github.atom" "com.apple.dt.document.script-suite-property-list" "editor" \
      "com.github.atom" "com.apple.dt.document.script-terminology-property-list" "editor" \
      "com.github.atom" "com.apple.log" "editor" \
      "com.github.atom" "com.apple.property-list" "editor" \
      "com.github.atom" "com.apple.rez-source" "editor" \
      "com.github.atom" "com.apple.symbol-export" "editor" \
      "com.github.atom" "com.apple.xcode.ada-source" "editor" \
      "com.github.atom" "com.apple.xcode.bash-script" "editor" \
      "com.github.atom" "com.apple.xcode.configsettings" "editor" \
      "com.github.atom" "com.apple.xcode.csh-script" "editor" \
      "com.github.atom" "com.apple.xcode.fortran-source" "editor" \
      "com.github.atom" "com.apple.xcode.ksh-script" "editor" \
      "com.github.atom" "com.apple.xcode.lex-source" "editor" \
      "com.github.atom" "com.apple.xcode.make-script" "editor" \
      "com.github.atom" "com.apple.xcode.mig-source" "editor" \
      "com.github.atom" "com.apple.xcode.pascal-source" "editor" \
      "com.github.atom" "com.apple.xcode.strings-text" "editor" \
      "com.github.atom" "com.apple.xcode.tcsh-script" "editor" \
      "com.github.atom" "com.apple.xcode.yacc-source" "editor" \
      "com.github.atom" "com.apple.xcode.zsh-script" "editor" \
      "com.github.atom" "com.apple.xml-property-list" "editor" \
      "com.github.atom" "com.barebones.bbedit.actionscript-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.erb-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.ini-configuration" "editor" \
      "com.github.atom" "com.barebones.bbedit.javascript-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.json-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.jsp-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.lasso-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.lua-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.setext-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.sql-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.tcl-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.tex-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.textile-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.vbscript-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.vectorscript-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.verilog-hdl-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.vhdl-source" "editor" \
      "com.github.atom" "com.barebones.bbedit.yaml-source" "editor" \
      "com.github.atom" "com.netscape.javascript-source" "editor" \
      "com.github.atom" "com.sun.java-source" "editor" \
      "com.github.atom" "dyn.ah62d4rv4ge80255drq" "all" \
      "com.github.atom" "dyn.ah62d4rv4ge80g55gq3w0n" "all" \
      "com.github.atom" "dyn.ah62d4rv4ge80g55sq2" "all" \
      "com.github.atom" "dyn.ah62d4rv4ge80y2xzrf0gk3pw" "all" \
      "com.github.atom" "dyn.ah62d4rv4ge81e3dtqq" "all" \
      "com.github.atom" "dyn.ah62d4rv4ge81e7k" "all" \
      "com.github.atom" "dyn.ah62d4rv4ge81g25xsq" "all" \
      "com.github.atom" "dyn.ah62d4rv4ge81g2pxsq" "all" \
      "com.github.atom" "net.daringfireball.markdown" "editor" \
      "com.github.atom" "public.assembly-source" "editor" \
      "com.github.atom" "public.c-header" "editor" \
      "com.github.atom" "public.c-plus-plus-source" "editor" \
      "com.github.atom" "public.c-source" "editor" \
      "com.github.atom" "public.csh-script" "editor" \
      "com.github.atom" "public.json" "editor" \
      "com.github.atom" "public.lex-source" "editor" \
      "com.github.atom" "public.log" "editor" \
      "com.github.atom" "public.mig-source" "editor" \
      "com.github.atom" "public.nasm-assembly-source" "editor" \
      "com.github.atom" "public.objective-c-plus-plus-source" "editor" \
      "com.github.atom" "public.objective-c-source" "editor" \
      "com.github.atom" "public.patch-file" "editor" \
      "com.github.atom" "public.perl-script" "editor" \
      "com.github.atom" "public.php-script" "editor" \
      "com.github.atom" "public.plain-text" "editor" \
      "com.github.atom" "public.precompiled-c-header" "editor" \
      "com.github.atom" "public.precompiled-c-plus-plus-header" "editor" \
      "com.github.atom" "public.python-script" "editor" \
      "com.github.atom" "public.ruby-script" "editor" \
      "com.github.atom" "public.script" "editor" \
      "com.github.atom" "public.shell-script" "editor" \
      "com.github.atom" "public.source-code" "editor" \
      "com.github.atom" "public.text" "editor" \
      "com.github.atom" "public.utf16-external-plain-text" "editor" \
      "com.github.atom" "public.utf16-plain-text" "editor" \
      "com.github.atom" "public.utf8-plain-text" "editor" \
      "com.github.atom" "public.xml" "editor" \
      "com.kodlian.Icon-Slate" "com.apple.icns" "all" \
      "com.kodlian.Icon-Slate" "com.microsoft.ico" "all" \
      "com.microsoft.Word" "public.rtf" "all" \
      "com.panayotis.jubler" "dyn.ah62d4rv4ge81g6xy" "all" \
      "com.sketchup.SketchUp.2016" "com.sketchup.skp" "all" \
      "com.vmware.fusion" "com.microsoft.windows-executable" "all" \
      "cx.c3.theunarchiver" "com.alcohol-soft.mdf-image" "all" \
      "cx.c3.theunarchiver" "com.allume.stuffit-archive" "all" \
      "cx.c3.theunarchiver" "com.altools.alz-archive" "all" \
      "cx.c3.theunarchiver" "com.amiga.adf-archive" "all" \
      "cx.c3.theunarchiver" "com.amiga.adz-archive" "all" \
      "cx.c3.theunarchiver" "com.apple.applesingle-archive" "all" \
      "cx.c3.theunarchiver" "com.apple.binhex-archive" "all" \
      "cx.c3.theunarchiver" "com.apple.bom-compressed-cpio" "all" \
      "cx.c3.theunarchiver" "com.apple.itunes.ipa" "all" \
      "cx.c3.theunarchiver" "com.apple.macbinary-archive" "all" \
      "cx.c3.theunarchiver" "com.apple.self-extracting-archive" "all" \
      "cx.c3.theunarchiver" "com.apple.xar-archive" "all" \
      "cx.c3.theunarchiver" "com.apple.xip-archive" "all" \
      "cx.c3.theunarchiver" "com.cyclos.cpt-archive" "all" \
      "cx.c3.theunarchiver" "com.microsoft.cab-archive" "all" \
      "cx.c3.theunarchiver" "com.microsoft.msi-installer" "all" \
      "cx.c3.theunarchiver" "com.nero.nrg-image" "all" \
      "cx.c3.theunarchiver" "com.network172.pit-archive" "all" \
      "cx.c3.theunarchiver" "com.nowsoftware.now-archive" "all" \
      "cx.c3.theunarchiver" "com.nscripter.nsa-archive" "all" \
      "cx.c3.theunarchiver" "com.padus.cdi-image" "all" \
      "cx.c3.theunarchiver" "com.pkware.zip-archive" "all" \
      "cx.c3.theunarchiver" "com.rarlab.rar-archive" "all" \
      "cx.c3.theunarchiver" "com.redhat.rpm-archive" "all" \
      "cx.c3.theunarchiver" "com.stuffit.archive.sit" "all" \
      "cx.c3.theunarchiver" "com.stuffit.archive.sitx" "all" \
      "cx.c3.theunarchiver" "com.sun.java-archive" "all" \
      "cx.c3.theunarchiver" "com.symantec.dd-archive" "all" \
      "cx.c3.theunarchiver" "com.winace.ace-archive" "all" \
      "cx.c3.theunarchiver" "com.winzip.zipx-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.arc-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.arj-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.dcs-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.dms-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.ha-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.lbr-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.lha-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.lhf-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.lzx-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.packdev-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.pax-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.pma-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.pp-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.xmash-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.zoo-archive" "all" \
      "cx.c3.theunarchiver" "cx.c3.zoom-archive" "all" \
      "cx.c3.theunarchiver" "org.7-zip.7-zip-archive" "all" \
      "cx.c3.theunarchiver" "org.archive.warc-archive" "all" \
      "cx.c3.theunarchiver" "org.debian.deb-archive" "all" \
      "cx.c3.theunarchiver" "org.gnu.gnu-tar-archive" "all" \
      "cx.c3.theunarchiver" "org.gnu.gnu-zip-archive" "all" \
      "cx.c3.theunarchiver" "org.gnu.gnu-zip-tar-archive" "all" \
      "cx.c3.theunarchiver" "org.tukaani.lzma-archive" "all" \
      "cx.c3.theunarchiver" "org.tukaani.xz-archive" "all" \
      "cx.c3.theunarchiver" "public.bzip2-archive" "all" \
      "cx.c3.theunarchiver" "public.cpio-archive" "all" \
      "cx.c3.theunarchiver" "public.tar-archive" "all" \
      "cx.c3.theunarchiver" "public.tar-bzip2-archive" "all" \
      "cx.c3.theunarchiver" "public.z-archive" "all" \
      "cx.c3.theunarchiver" "public.zip-archive" "all" \
      "cx.c3.theunarchiver" "public.zip-archive.first-part" "all" \
      "org.gnu.Emacs" "dyn.ah62d4rv4ge8086xh" "all" \
      "org.inkscape.Inkscape" "public.svg-image" "editor" \
      "org.videolan.vlc" "com.apple.m4v-video" "all" \
      "org.videolan.vlc" "com.microsoft.windows-media-wmv" "all" \
      "org.videolan.vlc" "org.perian.matroska" "all" \
      "org.videolan.vlc" "org.videolan.ac3" "all" \
      "org.videolan.vlc" "org.videolan.ogg-audio" "all" \
      "org.videolan.vlc" "public.ac3-audio" "all" \
      "org.videolan.vlc" "public.audiovisual-content" "all" \
      "org.videolan.vlc" "public.avi" "all" \
      "org.videolan.vlc" "public.movie" "all" \
      "org.videolan.vlc" "public.mpeg" "all" \
      "org.videolan.vlc" "public.mpeg-2-video" "all" \
      "org.videolan.vlc" "public.mpeg-4" "all" \
      > "${HOME}/.duti"

    /usr/local/bin/duti "${HOME}/.duti"
  fi

  sudo mkdir -p /var/db/lsd
  sudo chown root:admin /var/db/lsd
  sudo chmod 775 /var/db/lsd

  /System/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -kill -r -domain local -domain system -domain user
}

Configure Finder

function config_finder () {
### Finder > Preferences… > General

  # Show these items on the desktop: Hard disks: on
  defaults write 'com.apple.finder' 'ShowHardDrivesOnDesktop' -bool false

  # Show these items on the desktop: External disks: on
  defaults write 'com.apple.finder' 'ShowExternalHardDrivesOnDesktop' -bool false

  # Show these items on the desktop: CDs, DVDs, and iPods: on
  defaults write 'com.apple.finder' 'ShowRemovableMediaOnDesktop' -bool false

  # Show these items on the desktop: Connected servers: on
  defaults write 'com.apple.finder' 'ShowMountedServersOnDesktop' -bool true

  # New Finder windows show: ${HOME}
  defaults write 'com.apple.finder' 'NewWindowTarget' -string 'PfHm'
  defaults write 'com.apple.finder' 'NewWindowTargetPath' -string "file://${HOME}/"

### Finder > Preferences… > Advanced

  # Show all filename extensions: on
  defaults write -g 'AppleShowAllExtensions' -bool true

  # Show warning before emptying the Trash: on
  defaults write 'com.apple.finder' 'WarnOnEmptyTrash' -bool false

### View

  # Show Path Bar
  defaults write 'com.apple.finder' 'ShowPathbar' -bool true

  # Show Status Bar
  defaults write 'com.apple.finder' 'ShowStatusBar' -bool true

  # Customize Toolbar…
  defaults write 'com.apple.finder' 'NSToolbar Configuration Browser' '{ "TB Item Identifiers" = ( "com.apple.finder.BACK", "com.apple.finder.PATH", "com.apple.finder.SWCH", "com.apple.finder.ARNG", "NSToolbarFlexibleSpaceItem", "com.apple.finder.SRCH", "com.apple.finder.ACTN" ); "TB Display Mode" = 2; }'

### View > Show View Options: [${HOME}]

  # Show Library Folder: on
  chflags nohidden "${HOME}/Library"

### Window

  # Copy
  defaults write 'com.apple.finder' 'CopyProgressWindowLocation' -string '{2160, 23}'
}

Configure Safari

function config_safari () {
### Safari > Preferences… > General

  # New windows open with: Empty Page
  defaults write 'com.apple.Safari' 'NewWindowBehavior' -int 1

  # New tabs open with: Empty Page
  defaults write 'com.apple.Safari' 'NewTabBehavior' -int 1

  # Homepage: about:blank
  defaults write 'com.apple.Safari' 'HomePage' -string 'about:blank'

### Safari > Preferences… > Tabs

  # Open pages in tabs instead of windows: Always
  defaults write 'com.apple.Safari' 'TabCreationPolicy' -int 2

### Safari > Preferences… > AutoFill

  # Using info from my Contacts card: off
  defaults write 'com.apple.Safari' 'AutoFillFromAddressBook' -bool false

  # Credit cards: off
  defaults write 'com.apple.Safari' 'AutoFillCreditCardData' -bool false

  # Other forms: off
  defaults write 'com.apple.Safari' 'AutoFillMiscellaneousForms' -bool false

### Safari > Preferences… > Search

  # Include Spotlight Suggestions: off
  defaults write 'com.apple.Safari' 'UniversalSearchEnabled' -bool false

  # Show Favorites: off
  defaults write 'com.apple.Safari' 'ShowFavoritesUnderSmartSearchField' -bool false

### Safari > Preferences… > Privacy

  # Website use of location services: Deny without prompting
  defaults write 'com.apple.Safari' 'SafariGeolocationPermissionPolicy' -int 0

  # Ask websites not to track me: on
  defaults write 'com.apple.Safari' 'SendDoNotTrackHTTPHeader' -bool true

### Safari > Preferences… > Notifications

  # Allow websites to ask for permission to send push notifications: off
  defaults write 'com.apple.Safari' 'CanPromptForPushNotifications' -bool false

### Safari > Preferences… > Advanced

  # Smart Search Field: Show full website address: on
  defaults write 'com.apple.Safari' 'ShowFullURLInSmartSearchField' -bool true

  # Default encoding: Unicode (UTF-8)
  defaults write 'com.apple.Safari' 'WebKitDefaultTextEncodingName' -string 'utf-8'
  defaults write 'com.apple.Safari' 'com.apple.Safari.ContentPageGroupIdentifier.WebKit2DefaultTextEncodingName' -string 'utf-8'

  # Show Develop menu in menu bar: on
  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

### View

  # Show Favorites Bar
  defaults write 'com.apple.Safari' 'ShowFavoritesBar-v2' -bool true

  # Show Status Bar
  defaults write 'com.apple.Safari' 'ShowStatusBar' -bool true
  defaults write 'com.apple.Safari' 'ShowStatusBarInFullScreen' -bool true

  # Install Extensions
  chrome_extensions=(
    "https://agilebits.com/onepassword/extensions/chrome?beta=false" \
    "http://redditenhancementsuite.com/download-chrome.html" \
    "https://www.ublock.org/"
  )

  for extension in "${chrome_extensions[@]}"; do
    open -a "/Applications/Google Chrome.app" "$extension"
  done

  firefox_extensions=(
    "https://agilebits.com/onepassword/extensions/firefox?beta=false" \
    "http://redditenhancementsuite.com/download-firefox.html" \
    "https://www.ublock.org/"
  )

  for extension in "${firefox_extensions[@]}"; do
    open -a "/Applications/Firefox.app" "$extension"
  done

  safari_browsers=("/Applications/Safari.app" "/Applications/Safari Technology Preview.app")
  safari_extensions=(
    "https://agilebits.com/onepassword/extensions/safari?beta=false" \
    "http://redditenhancementsuite.com/download-safari.html" \
    "https://www.ublock.org/" \
    "http://selenium-release.storage.googleapis.com/2.48/SafariDriver.safariextz"
  )

  for safari in "${safari_browsers[@]}"; do
    for extension in "${safari_extensions[@]}"; do
      open -a "$safari" "$extension"
    done
  done
}

Configure System Preferences

function config_system_prefs () {
### General

  # Appearance: Graphite
  defaults write -g 'AppleAquaColorVariant' -int 6

  # Use dark menu bar and Dock: on
  defaults write -g 'AppleInterfaceStyle' -string 'Dark'

  # Highlight color: Other… #CC99CC
  defaults write -g 'AppleHighlightColor' -string '0.600000 0.800000 0.600000'

  # Sidebar icon size: Small
  defaults write -g 'NSTableViewDefaultSizeMode' -int 1

  # Show scroll bars: Always
  defaults write -g 'AppleShowScrollBars' -string 'Always'

  # Click in the scroll bar to: Jump to the next page
  defaults write -g 'AppleScrollerPagingBehavior' -bool false

  # Ask to keep changes when closing documents: on
  defaults write -g 'NSCloseAlwaysConfirmsChanges' -bool true

  # Close windows when quitting an app: on
  defaults write -g 'NSQuitAlwaysKeepsWindows' -bool false

  # Recent items: None
  osascript <<-EOF
    tell application "System Events"
      tell appearance preferences
        set recent documents limit to 0
        set recent applications limit to 0
        set recent servers limit to 0
      end tell
    end tell
EOF

  # Use LCD font smoothing when available: on
  defaults -currentHost delete -g 'AppleFontSmoothing' 2> /dev/null

### Desktop & Screen Saver

  # Desktop: Solid Colors: Custom Color… Solid Black
  base64 -D > "/Library/Caches/com.apple.desktop.admin.png" <<-EOF
iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAQAAAADrRVxmAAAAGElEQVR4AWOgMxgFo2AUjIJRMApG
wSgAAAiAAAH3bJXBAAAAAElFTkSuQmCC
EOF

  mkdir -m go= -p "${HOME}/Library/Desktop Pictures/Solid Colors/"
  base64 -D > "${HOME}/Library/Desktop Pictures/Solid Colors/Solid Black.png" <<-EOF
iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAQAAAADrRVxmAAAAGElEQVR4AWOgMxgFo2AUjIJRMApG
wSgAAAiAAAH3bJXBAAAAAElFTkSuQmCC
EOF
  osascript <<-EOF
    tell application "System Events"
      set a to POSIX file "${HOME}/Library/Desktop Pictures/Solid Colors/Solid Black.png"
      set b to a reference to every desktop
      repeat with c in b
        set picture of c to a
      end repeat
    end tell
EOF

  # Screen Saver: BlankScreen
  if [ -e "/Library/Screen Savers/BlankScreen.saver" ]; then
    defaults -currentHost write 'com.apple.screensaver' 'moduleDict' '{ moduleName = BlankScreen; path = "/Library/Screen Savers/BlankScreen.saver"; type = 0; }'
  fi

  # Screen Saver: Start after: Never
  defaults -currentHost write 'com.apple.screensaver' 'idleTime' -int 0

  # Screen Saver: Hot Corners… Top Left: ⌘ Mission Control
  defaults write 'com.apple.dock' 'wvous-tl-corner' -int 2
  defaults write 'com.apple.dock' 'wvous-tl-modifier' -int 1048576

  # Screen Saver: Hot Corners… Bottom Left: Put Display to Sleep
  defaults write 'com.apple.dock' 'wvous-bl-corner' -int 10
  defaults write 'com.apple.dock' 'wvous-bl-modifier' -int 0

### Dock

  # Size: 32
  defaults write 'com.apple.dock' 'tilesize' -int 32

  # Magnification: off
  defaults write 'com.apple.dock' 'magnification' -bool false
  defaults write 'com.apple.dock' 'largesize' -int 64

  # Position on screen: Left
  defaults write 'com.apple.dock' 'orientation' -string 'right'

  # Minimize windows using: Scale effect
  defaults write 'com.apple.dock' 'mineffect' -string 'scale'

  # Animate opening applications: off
  defaults write 'com.apple.dock' 'launchanim' -bool false

### Security & Privacy

  # General: Require password: on
  defaults write 'com.apple.screensaver' 'askForPassword' -int 1

  # General: Require password: 5 seconds after sleep or screen saver begins
  defaults write 'com.apple.screensaver' 'askForPasswordDelay' -int 5

### Energy Saver

  # Power > Turn display off after: 20 min
  sudo pmset -c displaysleep 20

  # Power > Prevent computer from sleeping automatically when the display is off: enabled
  sudo pmset -c sleep 0

  # Power > Put hard disks to sleep when possible: 60 min
  sudo pmset -c disksleep 60

  # Power > Wake for Ethernet network access: enabled
  sudo pmset -c womp 1

  # Power > Start up automatically after a power failure: enabled
  sudo pmset -c autorestart 1

  # Power > Enable Power Nap: enabled
  sudo pmset -c powernap 1

### Mouse

  # Scroll direction: natural: off
  defaults write -g 'com.apple.swipescrolldirection' -bool false

### Trackpad

  # Point & Click: Tap to click: on
  defaults -currentHost write -g 'com.apple.mouse.tapBehavior' -int 1

### Sound

  # Sound Effects: Select an alert sound: Sosumi
  defaults write 'com.apple.systemsound' 'com.apple.sound.beep.sound' -string '/System/Library/Sounds/Sosumi.aiff'

  # Sound Effects: Play user interface sound effects: off
  defaults write 'com.apple.systemsound' 'com.apple.sound.uiaudio.enabled' -int 0

  # Sound Effects: Play feedback when volume is changed: off
  defaults write -g 'com.apple.sound.beep.feedback' -int 0

### Sharing

  # Computer Name
  sudo systemsetup -setcomputername $(hostname -s | perl -nE 'say ucfirst' | perl -np -e 'chomp')

  # Local Hostname
  sudo systemsetup -setlocalsubnetname $(hostname -s) &> /dev/null

### Users & Groups

  # Current User > Advanced Options… > Login shell: /usr/local/bin/zsh
  sudo sh -c 'printf "%s\n" "/usr/local/bin/zsh" >> /etc/shells'
  sudo chsh -s /usr/local/bin/zsh
  chsh -s /usr/local/bin/zsh
  sudo mkdir -p /private/var/root/Library/Caches/
  sudo touch "/private/var/root/.zshrc"
  touch "${HOME}/.zshrc"

### Dictation & Speech

  # Dictation: Dictation: On
  defaults write 'com.apple.speech.recognition.AppleSpeechRecognition.prefs' 'DictationIMMasterDictationEnabled' -bool true
  defaults write 'com.apple.speech.recognition.AppleSpeechRecognition.prefs' 'DictationIMIntroMessagePresented' -bool true

  # Dictation: Use Enhanced Dictation: on
  if [ -d '/System/Library/Speech/Recognizers/SpeechRecognitionCoreLanguages/en_US.SpeechRecognition' ]; then
    defaults write 'com.apple.speech.recognition.AppleSpeechRecognition.prefs' 'DictationIMPresentedOfflineUpgradeSuggestion' -bool true
    defaults write 'com.apple.speech.recognition.AppleSpeechRecognition.prefs' 'DictationIMSIFolderWasUpdated' -bool true
    defaults write 'com.apple.speech.recognition.AppleSpeechRecognition.prefs' 'DictationIMUseOnlyOfflineDictation' -bool true
  fi

  # Text to Speech: System Voice: Allison
  if [ -d '/System/Library/Speech/Voices/Allison.SpeechVoice' ]; then
    defaults write 'com.apple.speech.voice.prefs' 'VisibleIdentifiers' '{ "com.apple.speech.synthesis.voice.allison.premium" = 1; }'
    defaults write 'com.apple.speech.voice.prefs' 'SelectedVoiceName' -string 'Allison'
    defaults write 'com.apple.speech.voice.prefs' 'SelectedVoiceCreator' -int 1886745202
    defaults write 'com.apple.speech.voice.prefs' 'SelectedVoiceID' -int 184555197
  fi

### Date & Time

  # Clock: Display the time with seconds: on / Show date: on
  defaults write 'com.apple.menuextra.clock' 'DateFormat' -string 'EEE MMM d  h:mm:ss a'

### Accessibility

  # Display: Reduce transparency: on
  defaults write 'com.apple.universalaccess' 'reduceTransparency' -bool true

### Restart defaults server

  killall -u "$USER" cfprefsd
  osascript -e 'tell app "Finder" to quit'
  osascript -e 'tell app "Dock" to quit'
}

Create /etc/zshrc

function create_zshrc () {
  sudo tee /etc/zshrc > /dev/null <<-EOF
alias -g ...="../.."
alias -g ....="../../.."
alias -g .....="../../../.."
alias l="/bin/ls -lG"
alias ll="/bin/ls -alG"
alias lr="/bin/ls -alRG"
alias screen="/usr/bin/screen -U"
autoload -U compaudit
compaudit | xargs -L 1 sudo chown -HR root:wheel {} 2> /dev/null
compaudit | xargs -L 1 sudo chmod -HR go-w {} 2> /dev/null
autoload -U compinit
compinit -d "\${HOME}/Library/Caches/zcompdump"
bindkey "\e[3~" delete-char
bindkey "\e[A" up-line-or-search
bindkey "\e[B" down-line-or-search
export HISTFILE="\${HOME}/Library/Caches/zsh_history"
export HISTSIZE=50000
export SAVEHIST=50000
setopt APPEND_HISTORY
setopt AUTO_CD
setopt EXTENDED_HISTORY
setopt HIST_FIND_NO_DUPS
setopt INC_APPEND_HISTORY
setopt PROMPT_SUBST
setopt SHARE_HISTORY
stty erase \b
# Correctly display UTF-8 with combining characters.
if [ "\$TERM_PROGRAM" = "Apple_Terminal" ]; then
  setopt combiningchars
fi
function precmd () {
  print -Pn "\\e]7;file://%M\${PWD// /%%20}\a"
  print -Pn "\\e]2;%n@%m\a"
  print -Pn "\\e]1;%~\a"
}
gb () { git branch --no-color 2> /dev/null | /usr/bin/sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' }
xd () { /usr/bin/xattr -d com.apple.diskimages.fsck \$* 2> /dev/null; /usr/bin/xattr -d com.apple.diskimages.recentcksum \$* 2> /dev/null; /usr/bin/xattr -d com.apple.metadata:kMDItemFinderComment \$* 2> /dev/null; /usr/bin/xattr -d com.apple.metadata:kMDItemDownloadedDate \$* 2> /dev/null; /usr/bin/xattr -d com.apple.metadata:kMDItemWhereFroms \$* 2> /dev/null; /usr/bin/xattr -d com.apple.quarantine \$* 2> /dev/null; /usr/bin/find . -name .DS_Store -delete; /usr/bin/find . -name Icon
 -delete }
sf () { /usr/bin/SetFile -P -d "\$1 12:00:00" -m "\$1 12:00:00" \$argv[2,\$] }
sd () { xd **/*; sf \$1 .; for i in **/*; do sf \$1 \$i; done; /usr/sbin/chown -R root ROOT 2> /dev/null; /usr/bin/chgrp -R wheel ROOT 2> /dev/null; /bin/chmod -R a+r ROOT 2> /dev/null; /bin/chmod -R u+w ROOT 2> /dev/null; /bin/chmod -R go-w ROOT 2> /dev/null; /usr/bin/find . -type d -exec /bin/chmod a+x '{}' ';'; /usr/bin/chgrp -R admin ROOT/Applications 2> /dev/null; /bin/chmod -R g+w ROOT/Applications 2> /dev/null; /usr/bin/chgrp -R admin ROOT/Library 2> /dev/null; /bin/chmod -R g+w ROOT/Library 2> /dev/null; /bin/chmod -R g-w ROOT/Library/Application\ Enhancers 2> /dev/null; /usr/bin/chgrp -R staff ROOT/Library/Application\ Support/Adobe 2> /dev/null; /bin/chmod -R g-w ROOT/Library/Bundles 2> /dev/null; /bin/chmod -R g-w ROOT/Library/InputManagers 2> /dev/null; /bin/chmod -R g-w ROOT/Library/Keychains 2> /dev/null; /bin/chmod -R g-w ROOT/Library/ScriptingAdditions 2> /dev/null; /bin/chmod -R g-w ROOT/Library/Tcl 2> /dev/null; /usr/bin/chgrp -R wheel ROOT/Library/Filesystems 2> /dev/null; /bin/chmod -R g-w ROOT/Library/Filesystems 2> /dev/null; /usr/bin/chgrp -R wheel ROOT/Library/LaunchAgents 2> /dev/null; /bin/chmod -R g-w ROOT/Library/LaunchAgents 2> /dev/null; /usr/bin/chgrp -R wheel ROOT/Library/LaunchDaemons 2> /dev/null; /bin/chmod -R g-w ROOT/Library/LaunchDaemons 2> /dev/null; /usr/bin/chgrp -R wheel ROOT/Library/PreferencePanes 2> /dev/null; /bin/chmod -R g-w ROOT/Library/PreferencePanes 2> /dev/null; /usr/bin/chgrp -R wheel ROOT/Library/StartupItems 2> /dev/null; /bin/chmod -R g-w ROOT/Library/StartupItems 2> /dev/null; /usr/bin/chgrp -R wheel ROOT/Library/Widgets 2> /dev/null; /bin/chmod -R g-w ROOT/Library/Widgets 2> /dev/null; /usr/bin/find . -name "kexts" -type d -exec /bin/chmod -R g-w '{}' ';'; /usr/bin/find . -name "*.kext" -exec /usr/sbin/chown -R root:wheel '{}' ';'; /usr/bin/find . -name "*.kext" -exec /bin/chmod -R g-w '{}' ';' }
PROMPT='%B%n@%m%b:%2~%B\$(gb) %#%b '
EOF
}

Configure All

function config_all () {
  config_file_map
  config_finder
  config_safari
  config_system_prefs
  create_zshrc
}

Display Help

clear
cat <<-END

Enter any of these commands:
  config_file_map
  config_finder
  config_safari
  config_system_prefs
  create_zshrc

Or:
  config_all

END
fi

Step 4: Register Apps

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

About


Languages

Language:Shell 100.0%