Skip to content

Instantly share code, notes, and snippets.

@idot
Forked from bradp/setup.sh
Last active January 18, 2024 09:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save idot/3039dd3c1a7f5a55d77acf2265a9b8d2 to your computer and use it in GitHub Desktop.
Save idot/3039dd3c1a7f5a55d77acf2265a9b8d2 to your computer and use it in GitHub Desktop.
New Mac Setup Script
#!/bin/bash
#echo "Creating an SSH key for you..."
#ssh-keygen -t rsa
#echo "Please add this public key to Github \n"
#echo "https://github.com/account/ssh \n"
#read -p "Press [Enter] key after this..."
XCODE=$(xcode-select -p 1>/dev/null;echo $?)
if [ $XCODE -ne 0 ]; then
echo "Installing xcode-stuff"
xcode-select --install
sleep 100000 #should install in background, but don't know how, maybe exit?
fi
STATUS=""
# Check for Homebrew,
# Install if we don't have it
if test ! $(which brew); then
#sudo need
#echo "Installing homebrew..."
#/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
#without sudo
mkdir -p homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
STATUS=$?
else
STATUS="0"
fi
export PATH=$HOME/homebrew/bin:$PATH
if [ "$STATUS" == "0" ]; then
echo "Homebrew: success"
else
echo "Hombrew: error"
exit 1
fi
# Update homebrew recipes
echo "Updating homebrew..."
brew update
echo "Installing Git..."
brew install git
echo "Git config"
git config --global user.name "Ido Tamir"
git config --global user.email ido.tamir@vbcf.ac.at
echo "Installing other brew stuff..."
#says doesnt need, but postgresql was not available otherwise
brew tap homebrew/core
brews=(
cairo
chezmoi
gcc
git-extras
git-flow
htop
imagemagick
libtensorflow
libxt
legit
pcre2
postgresql
mise
tmux
tree
vim
wget
xz
zlib
)
brew install ${brews[@]}
echo "Cleaning up brew"
brew cleanup
#echo "Copying dotfiles from Github"
#cd ~
#git clone git@github.com:bradp/dotfiles.git .dotfiles
#cd .dotfiles
#sh symdotfiles
#Install Zsh & Oh My Zsh
echo "Installing Oh My ZSH..."
curl -L http://install.ohmyz.sh | sh
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
echo "\n\nZSH_THEME="powerlevel10k/powerlevel10k" >>~/.zshrc
echo "Setting up Zsh plugins..."
cd ~/.oh-my-zsh/custom/plugins
git clone git://github.com/zsh-users/zsh-syntax-highlighting.git
echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc
# Apps
apps=(
authy
blender
diffmerge
docker
dropbox
gimp
google-chrome
grandperspective
inkscape
iterm2
keepassxc
keeweb
licecap
meld
qlmarkdown
qlstephen
rstudio
skim
skype
sourcetree
spotify
suspicious-package
vagrant
virtualbox
visual-studio-code
vlc
xquartz
zoom
zotero
)
# Install apps to /Applications
# Default is: /Users/$user/Applications
echo "installing apps with Cask..., authy vagrant needs sudo"
brew install --cask ${apps[@]}
brew cleanup
eval "$(~/homebrew/bin/mise activate zsh)"
echo 'eval "$(~/homebrew/bin/mise activate zsh)"' >> ~/.zshrc
mise install java@temurin-20.0.0+36
mise use -g java@temurin-20.0.0+36
#mise plugins add groovy https://github.com/weibemoura/asdf-groovy.git
#mise install groovy@3.0.16
#mise use -g groovy@3.0.16
# groovysh does not work even with:
# groovysh -cp /Users/ido.tamir/.local/share/mise/installs/groovy/3.0.16/lib/jansi-2.4.0.jar
export CPPFLAGS="-I/Users/ido.tamir/homebrew/include"
export R_EXTRA_CONFIGURE_OPTIONS="--enable-R-shlib"
mise plugins install https://github.com/asdf-community/asdf-r.git
mise latest r
mise use -g r@latest
Rscript -e 'install.packages(c("tidyverse","devtools","knitr","rmarkdown","kableExtra", "DBI", "RPostgreSQL","BiocManager"), repos="https://cloud.r-project.org")'
mise install node@latest
mise use -g node@latest
mise install python@latest
mise use -g python@latest
mise install rust@latest
mise use -g rust@latest
npm install -g @angular/cli
echo "Restoring setup from Mackup..."
#mackup restore @TODO uncomment
#https://www.compsmag.com/how-to/enable-and-use-locate-command-in-mac-os-terminal/
#need sudo ... alternative?
#sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.list
#sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
#sudo /usr/libexec/locate.updated?
echo "Setting ZSH as shell..."
chsh -s /bin/zsh
echo "Setting some Mac settings..."
#"Disabling system-wide resume"
#defaults write NSGlobalDomain NSQuitAlwaysKeepsWindows -bool false
#"Disabling automatic termination of inactive apps"
#defaults write NSGlobalDomain NSDisableAutomaticTermination -bool true
#"Allow text selection in Quick Look"
defaults write com.apple.finder QLEnableTextSelection -bool TRUE
#"Disabling OS X Gate Keeper"
#"You'll be able to install any app you want from here on, not just Mac App Store apps"
#sudo spctl --master-disable
#sudo defaults write /var/db/SystemPolicy-prefs.plist enabled -string no
#defaults write com.apple.LaunchServices LSQuarantine -bool false
#"Expanding the save panel by default"
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true
#"Automatically quit printer app once the print jobs complete"
defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true
#"Saving to disk (not to iCloud) by default"
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
#"Check for software updates daily, not just once per week"
#defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1
#"Disable smart quotes and smart dashes as they are annoying when typing code"
defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false
defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false
#"Enabling full keyboard access for all controls (e.g. enable Tab in modal dialogs)"
defaults write NSGlobalDomain AppleKeyboardUIMode -int 3
#"Disabling press-and-hold for keys in favor of a key repeat"
defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false
#"Setting trackpad & mouse speed to a reasonable number"
defaults write -g com.apple.trackpad.scaling 2
defaults write -g com.apple.mouse.scaling 2.5
#"https://apple.stackexchange.com/questions/110277/how-to-enable-three-finger-drag-from-command-line"
defaults write com.apple.AppleMultitouchTrackpad DragLock -bool false
defaults write com.apple.AppleMultitouchTrackpad Dragging -bool false
defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerDrag -bool true
#tap to click https://apple.stackexchange.com/questions/382098/how-to-enable-tap-to-click-using-keyboard-only
defaults write com.apple.AppleMultitouchTrackpad Clicking -bool true
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
#"Enabling subpixel font rendering on non-Apple LCDs"
defaults write NSGlobalDomain AppleFontSmoothing -int 2
#"Showing icons for hard drives, servers, and removable media on the desktop"
#defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true
#"Showing all filename extensions in Finder by default"
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
#"Disabling the warning when changing a file extension"
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
#"Use column view in all Finder windows by default"
defaults write com.apple.finder FXPreferredViewStyle Clmv
#"Avoiding the creation of .DS_Store files on network volumes"
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
#"Enabling snap-to-grid for icons on the desktop and in other icon views"
#/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist
#/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist
#/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist
#"Setting the icon size of Dock items to 36 pixels for optimal size/screen-realestate"
defaults write com.apple.dock tilesize -int 36
#"dock on right side"
defaults write com.apple.dock orientation right
#"Speeding up Mission Control animations and grouping windows by application"
defaults write com.apple.dock expose-animation-duration -float 0.1
defaults write com.apple.dock "expose-group-by-app" -bool true
#"Setting Dock to auto-hide and removing the auto-hiding delay"
defaults write com.apple.dock autohide -bool true
defaults write com.apple.dock autohide-delay -float 0
defaults write com.apple.dock autohide-time-modifier -float 0
#"Setting email addresses to copy as 'foo@example.com' instead of 'Foo Bar <foo@example.com>' in Mail.app"
#defaults write com.apple.mail AddressesIncludeNameOnPasteboard -bool false
#"Enabling UTF-8 ONLY in Terminal.app and setting the Pro theme by default"
defaults write com.apple.terminal StringEncodings -array 4
defaults write com.apple.Terminal "Default Window Settings" -string "Pro"
defaults write com.apple.Terminal "Startup Window Settings" -string "Pro"
#"Preventing Time Machine from prompting to use new hard drives as backup volume"
#defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true
#"Disable the sudden motion sensor as its not useful for SSDs"
#sudo pmset -a sms 0
#"Speeding up wake from sleep to 24 hours from an hour"
# http://www.cultofmac.com/221392/quick-hack-speeds-up-retina-macbooks-wake-from-sleep-os-x-tips/
#sudo pmset -a standbydelay 86400
#"Disable annoying backswipe in Chrome"
#defaults write com.google.Chrome AppleEnableSwipeNavigateWithScrolls -bool false
#"Setting screenshots location to ~/Desktop"
#defaults write com.apple.screencapture location -string "$HOME/Desktop"
#"Setting screenshot format to PNG"
defaults write com.apple.screencapture type -string "png"
#"Hiding Safari's bookmarks bar by default"
#defaults write com.apple.Safari ShowFavoritesBar -bool false
#"Hiding Safari's sidebar in Top Sites"
#defaults write com.apple.Safari ShowSidebarInTopSites -bool false
#"Disabling Safari's thumbnail cache for History and Top Sites"
#defaults write com.apple.Safari DebugSnapshotsUpdatePolicy -int 2
#"Enabling Safari's debug menu"
#defaults write com.apple.Safari IncludeInternalDebugMenu -bool true
#"Making Safari's search banners default to Contains instead of Starts With"
#defaults write com.apple.Safari FindOnPageMatchesWordStartsOnly -bool false
#"Removing useless icons from Safari's bookmarks bar"
#defaults write com.apple.Safari ProxiesInBookmarksBar "()"
#"Allow hitting the Backspace key to go to the previous page in history"
#defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2BackspaceKeyNavigationEnabled -bool true
#"Enabling the Develop menu and the Web Inspector in Safari"
#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
#"Adding a context menu item for showing the Web Inspector in web views"
#defaults write NSGlobalDomain WebKitDeveloperExtras -bool true
#"Use `~/Downloads/Incomplete` to store incomplete downloads"
#defaults write org.m0k.transmission UseIncompleteDownloadFolder -bool true
#defaults write org.m0k.transmission IncompleteDownloadFolder -string "${HOME}/Downloads/Incomplete"
#"Don't prompt for confirmation before downloading"
#defaults write org.m0k.transmission DownloadAsk -bool false
#"Trash original torrent files"
#defaults write org.m0k.transmission DeleteOriginalTorrent -bool true
#"Hide the donate message"
#defaults write org.m0k.transmission WarningDonate -bool false
#"Hide the legal disclaimer"
#defaults write org.m0k.transmission WarningLegal -bool false
#"Disable 'natural' Lion-style scrolling"
#defaults write NSGlobalDomain com.apple.swipescrolldirection -bool false
# Don’t automatically rearrange Spaces based on most recent use
#defaults write com.apple.dock mru-spaces -bool false
killall Finder
echo "Done!"
#@TODO install vagrant and sites folder
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment