Skip to content
/ osx Public
forked from tzarskyz/osx

Shell scripts for automated OSX machine setup.

License

Notifications You must be signed in to change notification settings

dougian/osx

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OSX

Patreon

Shell scripts for automated OS X machine setup.

Table of Contents

Features

Screencast

asciicast

Requirements

  1. OS X
  2. OS X Software Updates
  3. Xcode (with accepted license agreement)
  4. Command Line Tools for Xcode
  5. Java SE Development Kit

Setup

OS X (El Capitan)

Bootdisk

  1. Insert a USB drive (8GB or higher is best).

  2. Open Disk Utility and format the USB drive (leave the label as "Untitled").

  3. Download OS X El Capitan via the App Store but DO NOT INSTALL.

  4. Run this command to turn the USB drive into bootable image:

     sudo "/Applications/Install OS X El Capitan.app/Contents/Resources/createinstallmedia" --volume /Volumes/Untitled --applicationpath "/Applications/Install OS X El Capitan.app" --nointeraction
    
  5. Exit the OS X El Capitan install.

  6. Eject the USB drive.

Upgrade

  1. Insert the USB bootdisk into the machine to be upgraded.
  2. Reboot the machine.
  3. Hold down the OPTION key while the machine is rebooting.
  4. Select the USB bootdisk from the menu.
  5. Format the machine using Disk Utility.
  6. Install the new OS.

Reinstall

If you have already installed OS X but want to reinstall it, simply reboot the machine and hold down COMMAND+R. This will load the installer from the recovery partition and allow you to use Disk Utility, reinstall the system, etc.

Cloning

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 v13.0.0

Master Version (unstable):

git clone git://github.com/bkuhlmann/osx.git
cd osx

Usage

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:

Setup:
  b:  Apply basic system settings.
  h:  Install Homebrew software.
  a:  Install application software.
  x:  Install application extensions.
  d:  Apply software defaults.
  s:  Setup and configure installed software.
  i:  Install everything (i.e. executes all options, listed above, top to bottom).
Manage:
  c:  Check status of managed software.
  C:  Caffeinate machine.
  ua: Uninstall application software.
  ux: Uninstall application extension.
  ra: Reinstall application software.
  rx: Reinstall application extension.
  w:  Clean work (temp) directory.
  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.

Customization

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.

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 OS X, GUI-based, applications.
  • scripts/extensions.sh = Installs application extensions.
  • scripts/defaults.sh = Applies system and application defaults.
  • scripts/setup.sh = Configures and launches (if necessary) installed software.

All Bash functions, used by the scripts defined above, can be found in the lib folder of this project.

Additional Software

App Store

I also recommend installing the following software found via the App Store:

Miscellaneous

The following software is optional:

Post Install

The following are additional steps, not easily automated, that are worth completing after the install scripts have been executed:

  • Configure System Preferences:
    • Security & Privacy:
      • General:
        • Require password immediately after sleep or screen saver begins.
        • Show contact info when screen is locked. Example: <twitter> | <email> | <phone> | <url>.
        • Allow apps downloaded from App Store and identified developers.
      • FileVault:
        • Enable FileVault and save the recovery key in a secure location (i.e. 1Password).
      • Firewall:
        • Enabled it.
        • Automatically allow signed software.
        • Enable stealth mode.
      • Privacy:
        • Apps like Cheat Sheet, Dash, Dropbox, Trailer, etc. will need to be enabled for accessibility.
    • Printers & Scanners:
      • Add printer/scanner.
    • iCloud:
      • Enable Find My Mac.
    • Internet Accounts:
      • Add all accounts used by Mail.
    • Network:
      • Configure Wi-Fi.
    • Users & Groups:
      • Update avatar.
      • Remove unused login items.

Versioning

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.

Code of Conduct

Please note that this project is released with a CODE OF CONDUCT. By participating in this project you agree to abide by its terms.

Contributions

Read CONTRIBUTING for details.

License

Copyright (c) 2012 Alchemists. Read the LICENSE for details.

History

Read the CHANGELOG for details. Built with Bashsmith.

Credits

Developed by Brooke Kuhlmann at Alchemists.

About

Shell scripts for automated OSX machine setup.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 100.0%