Shell scripts for automated OSX machine setup.
- Configures default OSX settings.
- Downloads, installs, and configures Homebrew command line software:
- Readline
- OpenSSL
- Bash
- Bash Completion
- ShellCheck
- SSHFS
- tmux
- Mosh
- Reattach to User Namespace
- Z
- Tree
- hr
- Git
- Hub
- GHI
- CTags
- Tag
- Parallel
- Pigz
- jq
- The Silver Surfer
- Pipe Viewer
- Ioping
- Network Grep
- Namebench
- ImageMagick
- Graphviz
- FLAC
- FFmpeg
- Node.js
- Phantom.js
- Slimer.js
- rbenv
- rbenv-build
- rbenv-vars
- rbenv-binstubs
- rbenv-gem-rehash
- rbenv-default-gems
- rbenv-ctags
- Ruby
- Rubinius
- JRuby
- Go
- Peco
- Nginx
- Pow
- Memcached
- Redis
- PostgreSQL
- MySQL
- Wry
- lnav
- cloc
- Downloads, installs, and configures software applications generally not in the App Store:
- Dropbox
- Knox
- iTerm2
- Atom
- Sublime Text 2
- Sublime Text 2 URL Handler
- Alfred
- TextExpander
- Path Finder
- Firefox
- Google Chrome
- Google Chrome Canary
- Opera
- OmniGraffle
- Transmit
- iStat Menus
- Bartender
- Snippets
- CodeKit
- Acorn
- DoubleTake
- ImageOptim
- VLC
- pgAdmin
- Sequel Pro
- MoneyWell
- Delicious Library
- Cheatsheet
- OpenOffice
- Cloak
- Screenhero
- Colloquy
- VirtualBox
- Doxie
- Sonos
- App Cleaner
- Hazel
- Trailer
- Carbon Copy Cloner
- Downloads, installs, and configures software extensions:
- Vim Pathogen
- Vim Fugitive
- Vim Unimpaired
- Vim Commentary
- Vim Git Gutter
- Vim Bundler
- Vim Ruby
- Vim Text Object User
- Vim Text Object Ruby Block
- Vim Rails
- Sublime Text 2 Git
- Sublime Text 2 Git Gutter
- Sublime Text 2 Gist
- Sublime Text 2 Keymaps
- Sublime Text 2 Local History
- Sublime Text 2 CTags
- Sublime Text 2 Sidebar Enhancements
- Sublime Text 2 Advanced New File
- Sublime Text 2 Move Tab
- Sublime Text 2 Apply Syntax
- Sublime Text 2 Change Quotes
- Sublime Text 2 Bracket Highlighter
- Sublime Text 2 Trailing Spaces
- Sublime Text 2 Gutter Color
- Sublime Text 2 Color Highlighter
- Sublime Text 2 Alignment
- Sublime Text 2 Wrap+
- Sublime Text 2 Autoprefixer
- Sublime Text 2 Xiki
- Sublime Text 2 Easy Motion
- Sublime Text 2 Emmet
- Sublime Text 2 Emmet LiveStyle
- Sublime Text 2 Web Inspector
- Sublime Text 2 Sublime Linter
- Sublime Text 2 Ruby Extract Method
- Sublime Text 2 Ruby Slim
- Sublime Text 2 Markdown Extended
- Sublime Text 2 SCSS
- Sublime Text 2 CSScomb
- Sublime Text 2 Coffee Script
- Sublime Text 2 HTML Prettify
- Sublime Text 2 DashDoc
- Sublime Text 2 Table Editor
- Atom Project Manager
- Atom Git+
- Atom Vim Mode
- Atom Ruby Test
- Atom CTags
- Atom Autocomplete Paths
- Atom Autocomplete Plus
- Atom Color Picker
- Atom Dash
- Atom Easy Motion
- Atom Emmet
- Atom IPlastic Syntax
- Atom Linter
- Atom Linter (CSS)
- Atom Linter (JSHint)
- Atom Linter (Rubocop)
- Atom Linter (Ruby)
- Atom Linter (SCSS).
- Atom Linter(ShellCheck)
- Atom Local HIstory
- Atom Rails RSpec
- Atom Reveal Active File Context
- Atom Ruby Slim
- Atom Tab Move Key
- Atom Toggle Quotes
- Atom Trailing Spaces
- Atom Wrap Lines
- Atom Yosemite Unity UI
- Atom Open Last Project
- Atom TODO Show
- Atom Pain Split
- Atom Inline Autocomplete
- Atom File Icons
- Atom Git Tab Status
- Atom Git History
- Atom Key Peek
- Atom Live Archive
- Google Chrome Rails Panel
- Google Chrome Ember Inspector
- Google Chrome Chrome Logger
- OSX
- OSX Software Updates
- Xcode (with accepted license agreement)
- Command Line Tools for Xcode
- Java SE Development Kit
-
Insert a USB drive (8GB or higher is best).
-
Open Disk Utility and format the USB drive (leave the label as "Untitled").
-
Download OSX Yosemite via the App Store but DO NOT INSTALL.
-
Run this command to turn the USB drive into bootable image:
sudo "/Applications/Install OS X Yosemite.app/Contents/Resources/createinstallmedia" --volume /Volumes/Untitled --applicationpath "/Applications/Install OS X Yosemite.app" --nointeraction
-
Exit the OSX Yosemite install.
-
Eject the USB drive.
- Insert the USB bootdisk into the machine to be upgraded.
- Reboot the machine.
- Hold down the OPTION key while the machine is rebooting.
- Select the USB bootdisk from the menu.
- Format the machine using Disk Utility.
- Install the new OS.
If you have already installed OSX but want to reinstall it, simply reboot the machine and hold down CONTROL+R. This will load the installer from the recovery partition and allow you to use Disk Utility, reinstall the system, etc.
Open a terminal window and execute one of the following setup sequences depending on your version preference:
Current Version (stable):
git clone git://github.com/bkuhlmann/osx.git
cd osx
git checkout v8.0.0
Master Version (unstable):
git clone git://github.com/bkuhlmann/osx.git
cd osx
Edit any of the *.sh files in the scripts
folder to your liking and then open a terminal window to execute the following command:
./run.sh
Running the run.sh script will present the following options:
b: Apply basic system settings.
h: Install Homebrew software (i.e. non-GUI, command line interfaces).
a: Install application software (i.e. GUI-enabled).
x: Install application extensions (i.e. enhancements, add-ons, plug-ins, etc.)
d: Apply system and application defaults.
p: Apply software preferences.
s: Setup installed software.
w: Clean work directory.
i: Perform complete install (i.e. executes all options, listed above, top to bottom).
c: Check status of installed applications and extensions.
q: Quit/Exit.
Choose option 'i' to run all install tasks or select a specific option to run a single task. Each task is designed to be re-run if necessary. This can also be handy for performing upgrades, re-running a missing/failed install, etc.
The options prompt can be skipped by passing the desired option directly to the run.sh script. For example, executing "./run.sh i" will execute the complete software install process.
It is recommended that the machine be rebooted after all install tasks have completed. Feel free to delete the osx project directory afterwards...or keep it around for future upgrades.
While the default settings for this project are opinionated and tailored for my specific setup, you can easily fork this project and customize the settings to your specific environment. Start by editing the files located in the settings project:
- settings/settings.sh = Defines settings for machine name, applications, extensions, versions, paths, etc.
- settings/rbenv-vars.txt = Defines global environment settings for Ruby development.
TIP: The installer determines which applications/extensions to install as defined by the settings.sh script. Applications defined with the "APP_NAME" suffix and extensions defined with the "EXTENSION_PATH" suffix inform the installer what to care about. Removing/commenting out these applications/extensions within the settings.sh file will cause the installer to skip these applications/extensions.
You can also modify the install scripts themselves by editing any of the following:
- scripts/basic.sh = Applies basic system settings.
- scripts/homebrew.sh = Installs Homebrew, command line, software.
- scripts/applications.sh = Installs OSX, GUI-based, applications.
- scripts/extensions.sh = Installs application extensions.
- scripts/defaults.sh = Applies system and application defaults.
- scripts/preferences.sh = Applies software preferences.
- scripts/setup.sh = Sets up and launches (if necessary) installed software.
All Bash functions, used by the scripts defined above, can be found in the functions folder.
I also recommend installing the following software found via the App Store:
- DaisyDisk
- Keymo
- Moom
- Witch - Yosemite Workaround
- 1Password
- Fantastical
- Cobook
- Dash
- PDFpenPro
- Marked
- OmniOutliner
- OmniFocus
- Patterns
- ColorSnapper
- Gradient
- xScope
- LittleSnapper
- Pixelmator
- GIF Brewery
- Prepo
- Name Mangler
- Kaleidoscope
- Paw
- Cocoa JSON Editor
- AquaPath
- Day One
- Kindle
- GarageBand
- iMovie
- iPhoto
- CCMenu
- WiFi Explorer
- Slack or Slack Multi-Team Beta
The following software is optional:
- Hardware IO Tools for Xcode - Includes the Network Link Conditioner, etc.
- VMWare Fusion (requires a registered account, download only)
- Logitech Harmony Remote
The following is a checklist of additional steps worth completing after the scripts have been executed:
- Configure Security & Privacy:
- Require password immediately after sleep or screen saver begins.
- Show a message when the screen is locked. Example: " | | "
- Enable FileVault.
- Configure Wi-Fi.
- Configure printer.
- Configure scanner.
- Configure Internet Accounts.
- Configure Contacts.
- Configure Calendar.
- Configure Google Chrome:
- Open the Flags tab (i.e. chrome://flags)
- Enable "Experimental Extension APIs".
- Enable "Developer Tools Experiments".
- Enable "Enable experimental Web Platform features".
- Open Web Inspector Developer Tools (COMMAND+OPTION+I) and click the gear (lower right corner)
- Click the Experiments tab.
- Enable "FileSystem inspection".
- Enable "Canvas inspection."
- Click the General tab.
- Enable "CSS Source maps".
- Enable "Auto-reload generated CSS".
- Enable "CSS Source maps".
- Click the Experiments tab.
- Open the Settings tab (i.e. chrome:://settings)
- Passwords and Forms
- Disable "Enable Autofill to fill out web forms in a single click".
- Disable "Offer to save your web passwords".
- Passwords and Forms
- Open the Flags tab (i.e. chrome://flags)
- Configure previously installed applications.
- Mathias Bynens' OSX Defaults - OSX/application defaults.
Read Semantic Versioning for details. Briefly, it means:
- Patch (x.y.Z) - Incremented for small, backwards compatible bug fixes.
- Minor (x.Y.z) - Incremented for new, backwards compatible public API enhancements and/or bug fixes.
- Major (X.y.z) - Incremented for any backwards incompatible public API changes.
Read CONTRIBUTING for details.
Developed by Brooke Kuhlmann at Alchemists
Copyright (c) 2012 Alchemists. Read the LICENSE for details.