#!/bin/sh # run "sh setup.sh" # BACKUP BEFORE WIPE: # SSH keys # Fonts # Keychain passwords # files outside dropbox: downloads, documents, photos, photobooth # bash/zsh profile # transmit favs # reference: # https://github.com/thoughtbot/laptop # https://github.com/tylucaskelley/setup # http://sourabhbajaj.com/mac-setup/ fancy_echo() { local fmt="$1"; shift # shellcheck disable=SC2059 printf "\\n$fmt\\n" "$@" } append_to_zshrc() { local text="$1" zshrc local skip_new_line="${2:-0}" if [ -w "$HOME/.zshrc.local" ]; then zshrc="$HOME/.zshrc.local" else zshrc="$HOME/.zshrc" fi if ! grep -Fqs "$text" "$zshrc"; then if [ "$skip_new_line" -eq 1 ]; then printf "%s\\n" "$text" >> "$zshrc" else printf "\\n%s\\n" "$text" >> "$zshrc" fi fi } # shellcheck disable=SC2154 trap 'ret=$?; test $ret -ne 0 && printf "failed\n\n" >&2; exit $ret' EXIT set -e if [ ! -d "$HOME/.bin/" ]; then mkdir "$HOME/.bin" fi if [ ! -f "$HOME/.zshrc" ]; then touch "$HOME/.zshrc" fi # shellcheck disable=SC2016 append_to_zshrc 'export PATH="$HOME/.bin:$PATH"' # Determine Homebrew prefix arch="$(uname -m)" if [ "$arch" = "arm64" ]; then HOMEBREW_PREFIX="/opt/homebrew" else HOMEBREW_PREFIX="/usr/local" fi update_shell() { local shell_path; shell_path="$(command -v zsh)" fancy_echo "Changing your shell to zsh ..." if ! grep "$shell_path" /etc/shells > /dev/null 2>&1 ; then fancy_echo "Adding '$shell_path' to /etc/shells" sudo sh -c "echo $shell_path >> /etc/shells" fi sudo chsh -s "$shell_path" "$USER" } case "$SHELL" in */zsh) if [ "$(command -v zsh)" != '/usr/local/bin/zsh' ] ; then update_shell fi ;; *) update_shell ;; esac if ! command -v brew >/dev/null; then fancy_echo "Installing Homebrew ..." /bin/bash -c \ "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" append_to_zshrc "eval \"\$($HOMEBREW_PREFIX/bin/brew shellenv)\"" export PATH="$HOMEBREW_PREFIX/bin:$PATH" fi if brew list | grep -Fq brew-cask; then fancy_echo "Uninstalling old Homebrew-Cask ..." brew uninstall --force brew-cask fi fancy_echo "Updating Homebrew formulae ..." brew update --force # https://github.com/Homebrew/brew/issues/1151 fancy_echo "Begin Homebrew bundle install..." brew bundle --file=- <> ~/.config/yt-dlp/config fancy_echo "Begin OSX Settings..." # OSX Settings # reference: https://github.com/keith/dotfiles/blob/master/osx/defaults.sh # Disable "shake to find mouse" defaults write NSGlobalDomain CGDisableCursorLocationMagnification -bool true # set key repeat speed defaults write -g InitialKeyRepeat -int 15 defaults write -g KeyRepeat -int 2 # Automatically hide and show the Dock defaults write com.apple.dock autohide -bool true # Dock setup defaults delete com.apple.dock persistent-apps; killall Dock # Change the auto-hiding Dock delay adn speed defaults write com.apple.dock autohide-delay -float 0.0 defaults write com.apple.dock autohide-time-modifier -float 0.5 # Disable the Launchpad gesture (pinch with thumb and three fingers) defaults write com.apple.dock showLaunchpadGestureEnabled -int 0 # set DNS servers networksetup -setdnsservers Wi-Fi 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001 echo "Setup process complete!" # MANUAL SETUP # install Laravel Valet # adobe-creative-cloud install apps # xcode cli tools run: "xcode-select --install" # git config # setup Dropbox # Sublime: link settings in dropbox with symlink (https://packagecontrol.io/docs/syncing#dropbox-osx) # Alfred: link settings in dropbox # RightFont: link dropbox # arq # authy