- Allows for the automation of Mac App Store software via the [Mac App Store CLI](https://github.com/mas-cli/mas) app. - See [macOS Config](https://github.com/bkuhlmann/mac_os-config) for usage.
macOS
Shell scripts for automated macOS machine setup.
This project is a framework for automating the setup of a macOS machine. In order to illustrate the potential of what this project can do, please see the companion macOS Config project for details. The macOS Config project is an opinionated configuration which meets the needs of my development environment but is also meant to serve as an example and guide for building your own personalized setup. Here is how the two projects are meant to be used:
- macOS (this project) - Foundation and framework for building customizated macOS machine setups.
- macOS Config - The layer on top of this macOS project which defines a customized machine setup. The project is meant to be forked for as many customized machine setups as you need.
Table of Contents
Features
- Provides a command line interface, written in Bash with no additional dependencies, for installation and management of a macOS machine.
- Downloads and installs development tooling (required by Homebrew):
- Downloads, installs, and configures Homebrew command line software.
- Downloads, installs, and configures software applications generally not in the App Store.
- Downloads, installs, and configures software application extensions.
- Sets up and configures installed software for use.
Requirements
- macOS Sierra (with latest software updates applied)
- Xcode (with accepted license agreement)
Setup
Open a terminal window and execute one of the following setup sequences depending on your version preference:
Current Version (stable):
git clone https://github.com/bkuhlmann/mac_os.git
cd mac_os
git checkout v1.0.0
Master Version (unstable):
git clone https://github.com/bkuhlmann/mac_os.git
cd mac_os
Usage
Run the following script:
bin/run
You will be presented with the following options:
Boot:
B: Create boot disk.
Install:
b: Apply basic system settings.
t: Install development tools.
h: Install Homebrew software.
a: Install application software.
x: Install application software extensions.
d: Apply software defaults.
s: Setup installed software.
i: Install everything (i.e. executes all install options).
Restore:
R: Restore settings from backup.
Manage:
c: Check status of managed software.
C: Caffeinate machine.
ua: Uninstall application software.
ux: Uninstall application software extension.
ra: Reinstall application software.
rx: Reinstall application software extension.
w: Clean work (temp) directory.
q: Quit/Exit.
Choose option i to run all install options or select a specific option to run a single option.
Each option is designed to be re-run if necessary. This can also be handy for performing upgrades,
re-running a missing/failed install, etc.
The option 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.
The machine should be rebooted after all install tasks have completed to ensure all settings have been loaded.
It is recommended that the mac_os project directory not be deleted and kept on the local machine
in order to manage installed software and benefit from future upgrades.
Customization
Global settings can be configured via the following script:
lib/settings.sh
All script programs can be found in the bin folder:
bin/create_boot_disk: Creates macOS boot disk.bin/install_dev_tools: Installs macOS development tools required by Homebrew.bin/run: The main script and interface for macOS setup.
The lib folder provides foundational functions for installing, re-installing, and uninstalling
software. Everything provided via the macOS Config
project is built upon the functions found in the lib folder. See the
macOS Config project for further details.
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) 2016 Alchemists. Read the LICENSE for details.
History
Read the CHANGELOG for details. Built with Bashsmith.
Credits
Developed by Brooke Kuhlmann at Alchemists.