Last active
September 3, 2024 18:09
-
-
Save emilefraser/f4f3467233104ac83a42fe7120f211b8 to your computer and use it in GitHub Desktop.
[Mac Setup Script] #mac #install #configure
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment