#!/usr/bin/env bash |
# |
# Bootstrap script for setting up a new OSX machine |
# |
# This should be idempotent so it can be run multiple times. |
# |
# Some apps don't have a cask and so still need to be installed by hand. These |
# include: |
# |
# - Twitter (app store) |
# - Postgres.app (http://postgresapp.com/) |
# |
# Notes: |
# |
# - If installing full Xcode, it's better to install that first from the app |
# store before running the bootstrap script. Otherwise, Homebrew can't access |
# the Xcode libraries as the agreement hasn't been accepted yet. |
# |
# Reading: |
# |
# - http://lapwinglabs.com/blog/hacker-guide-to-setting-up-your-mac |
# - https://gist.github.com/MatthewMueller/e22d9840f9ea2fee4716 |
# - https://news.ycombinator.com/item?id=8402079 |
# - http://notes.jerzygangi.com/the-best-pgp-tutorial-for-mac-os-x-ever/ |
echo'Starting bootstrapping' |
# Check for Homebrew, install if we don't have it |
iftest!$(which brew);then |
echo'Installing homebrew..' |
ruby -e '$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)' |
fi |
# Update homebrew recipes |
brew update |
# Install GNU core utilities (those that come with OS X are outdated) |
brew tap homebrew/dupes |
brew install coreutils |
brew install gnu-sed --with-default-names |
brew install gnu-tar --with-default-names |
brew install gnu-indent --with-default-names |
brew install gnu-which --with-default-names |
brew install gnu-grep --with-default-names |
# Install GNU `find`, `locate`, `updatedb`, and `xargs`, g-prefixed |
brew install findutils |
# Install Bash 4 |
brew install bash |
PACKAGES=( |
ack |
autoconf |
automake |
boot2docker |
ffmpeg |
gettext |
gifsicle |
git |
graphviz |
hub |
imagemagick |
jq |
libjpeg |
libmemcached |
lynx |
markdown |
memcached |
mercurial |
npm |
pkg-config |
postgresql |
python |
python3 |
pypy |
rabbitmq |
rename |
ssh-copy-id |
terminal-notifier |
the_silver_searcher |
tmux |
tree |
vim |
wget |
) |
echo'Installing packages..' |
brew install ${PACKAGES[@]} |
echo'Cleaning up..' |
brew cleanup |
echo'Installing cask..' |
brew install caskroom/cask/brew-cask |
CASKS=( |
colluquy |
dropbox |
firefox |
flux |
google-chrome |
google-drive |
gpgtools |
iterm2 |
macvim |
skype |
slack |
spectacle |
vagrant |
virtualbox |
vlc |
) |
echo'Installing cask apps..' |
brew cask install ${CASKS[@]} |
echo'Installing fonts..' |
brew tap caskroom/fonts |
FONTS=( |
font-inconsolidata |
font-roboto |
font-clear-sans |
) |
brew cask install ${FONTS[@]} |
echo'Installing Python packages..' |
PYTHON_PACKAGES=( |
ipython |
virtualenv |
virtualenvwrapper |
) |
sudo pip install ${PYTHON_PACKAGES[@]} |
echo'Installing Ruby gems' |
RUBY_GEMS=( |
bundler |
filewatcher |
cocoapods |
) |
sudo gem install ${RUBY_GEMS[@]} |
echo'Installing global npm packages..' |
npm install marked -g |
echo'Configuring OSX..' |
# Set fast key repeat rate |
defaults write NSGlobalDomain KeyRepeat -int 0 |
# Require password as soon as screensaver or sleep mode starts |
defaults write com.apple.screensaver askForPassword -int 1 |
defaults write com.apple.screensaver askForPasswordDelay -int 0 |
# Show filename extensions by default |
defaults write NSGlobalDomain AppleShowAllExtensions -bool true |
# Enable tap-to-click |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true |
defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1 |
# Disable 'natural' scroll |
defaults write NSGlobalDomain com.apple.swipescrolldirection -bool false |
echo'Creating folder structure..' |
[[ !-d Wiki ]] && mkdir Wiki |
[[ !-d Workspace ]] && mkdir Workspace |
echo'Bootstrapping complete' |
commented Jun 5, 2020
Bullet reloading software for mac. Then I call the say command which is a native Mac OS command that reads a string out loud. I pick the voice named Daniel to have a consistent British feel to the delivery of the joke. I could easily run this and have a lot of fun. But, I wanted to share this with my colleagues. I wanted to turn the bash script into a Mac app. The following is a bash shell script, that I've named 'disk', that when run, and passed a volume name, will attempt to mount that volume if unmounted, and will unmount the volume if presently mounted. It's a convenience wrapper for MacOS X's 'diskutil' utility.
FreeFileSync is a folder comparison and synchronization software that creates and manages backup copies of all your important files. Instead of copying every file every time, FreeFileSync determines the differences between a source and a target folder and transfers only the. Free file sync for mac.
Anyway to specify the apps to install rather than doing them all in bulk? |
commented Jun 6, 2020
have it read a text file, each program a separate line. just text. |