Skip to content

Instantly share code, notes, and snippets.

@netEmmanuel
Last active February 16, 2023 18:18
Show Gist options
  • Save netEmmanuel/63be29915d3817c187287f7e4acbc557 to your computer and use it in GitHub Desktop.
Save netEmmanuel/63be29915d3817c187287f7e4acbc557 to your computer and use it in GitHub Desktop.
MacBook Pro setup script
echo "Creating an SSH key for you..."
ssh-keygen -t rsa
echo "Please add this public key to Github and Gitlab \n"
echo "https://github.com/account/ssh \n"
echo "https://gitlab.com/profile/keys \n"
read -p "Press [Enter] key after this..."
echo "Installing xcode-stuff"
xcode-select --install
# Check for Homebrew,
# Install if we don't have it
if test ! $(which brew); then
echo "Installing homebrew..."
# NOTE : install home-brew manually this command might not work
# ruby -e "$(curl -k -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
fi
# Update homebrew recipes
echo "Updating homebrew..."
brew update
echo "Installing Git..."
brew install git
echo "Git config"
git config --global user.name "Emmanuel Oyelakin"
git config --global user.email oluwadamilare.oyelakin@mail.bcu.ac.uk
echo "Installing other brew stuff..."
brew install tree
brew install wget
brew install trash
brew install mackup
brew install tmux
# Install NVM and node
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
# NOTE: install node manually this command didn't work for me
# nvm install node
# Install global NPM packages
npm install --global yarn
#@TODO install our custom fonts and stuff
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..."
brew install zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
#echo "Setting up Oh My Zsh theme..."
cd ~/.oh-my-zsh/themes
curl https://gist.githubusercontent.com/bradp/a52fffd9cad1cd51edb7/raw/cb46de8e4c77beb7fad38c81dbddf531d9875c78/brad-muse.zsh-theme > brad-muse.zsh-theme
echo "Setting up Zsh plugins..."
cd ~/.oh-my-zsh/custom/plugins
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
echo "Setting ZSH as shell..."
#chsh -s /bin/zsh
# Apps
apps=(
alfred
spectacle
firefox
google-chrome
vlc
diffmerge
spotify
sublime-text2
sequel-pro
qlstephen
steam
# slack
transmission
zoom
discord
microsoft-teams
stremio
telegram
postman
intellij-idea
)
# Install versioned Cask registry
brew tap homebrew/cask-versions
# Install apps to /Applications
# Default is: /Users/$user/Applications
echo "Installing VS Code to be ready before other apps"
brew install --cask --appdir="/Applications" visual-studio-code
echo "installing apps with Cask..."
brew install --cask --appdir="/Applications" ${apps[@]}
brew cleanup
vsplugins=(
Angular.ng-template
christian-kohler.npm-intellisense
christian-kohler.path-intellisense
DavidAnson.vscode-markdownlint
discountry.react-redux-react-router-snippets
dsznajder.es7-react-js-snippets
ecmel.vscode-html-css
EditorConfig.EditorConfig
eg2.tslint
esbenp.prettier-vscode
fabiospampinato.vscode-git-history
formulahendry.auto-close-tag
formulahendry.auto-rename-tag
formulahendry.code-runner
freebroccolo.sml
gamunu.vscode-yarn
ipatalas.vscode-postfix-ts
johnpapa.Angular2
johnpapa.winteriscoming
joshpeng.sublime-babel-vscode
mrmlnc.vscode-scss
mrmlnc.vscode-vash
ms-python.python
ms-vscode.Go
ms-vscode.js-atom-grammar
msjsdiag.debugger-for-chrome
natewallace.angular2-inline
octref.vetur
Orta.vscode-jest
PeterJausovec.vscode-docker
rebornix.ruby
robertohuertasm.vscode-icons
samverschueren.final-newline
steoates.autoimport
stringham.move-ts
vincaslt.highlight-matching-tag
WakaTime.vscode-wakatime
wayou.vscode-todo-highlight
wmaurer.change-case
xyz.local-history
Zignd.html-css-class-completion
)
code --install-extension ${vsplugins[@]}
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 will 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
#"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
#"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 Safaris bookmarks bar by default"
defaults write com.apple.Safari ShowFavoritesBar -bool false
#"Hiding Safaris sidebar in Top Sites"
defaults write com.apple.Safari ShowSidebarInTopSites -bool false
#"Disabling Safaris thumbnail cache for History and Top Sites"
defaults write com.apple.Safari DebugSnapshotsUpdatePolicy -int 2
#"Enabling Safaris debug menu"
defaults write com.apple.Safari IncludeInternalDebugMenu -bool true
#"Making Safaris search banners default to Contains instead of Starts With"
defaults write com.apple.Safari FindOnPageMatchesWordStartsOnly -bool false
#"Removing useless icons from Safaris 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 DownloadsIncomplete to store incomplete downloads"
defaults write org.m0k.transmission UseIncompleteDownloadFolder -bool true
defaults write org.m0k.transmission IncompleteDownloadFolder -string "${HOME}/Downloads/Incomplete"
#"Dont 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
# "Dont 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