Skip to content

osx-provisioner/mac_maker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Documentation

Mac Maker

A portable single binary configuration tool for OSX machines.

Generate a consistent, reproducible "profile" of your machine

  • Start with a freshly installed Mac, and apply a Mac Maker Profile to add all the customizations and applications you want.
  • Alternatively, start with an existing Mac you already use, and incrementally build a Mac Maker Profile putting all your existing apps and customizations under version control.

Main Branch Builds

  • GitHub:
    • mac_maker Generic Push

Production Branch Builds

  • GitHub:
    • mac_maker Generic Push

Quick Start

How do I use this?

If you'd like to try it out, head over to the Mac Maker Releases and download a pre-built binary.

  • There are builds available for both Intel and Apple Silicon Macs
  • OSX versions Catalina through Sequoia are known to be compatible, but you must carefully select your download.

How do I select the right download ?

All OSX versions have an associated version number:

Version Number OS Name Supported Build Versions
15 Sequoia 15
14 Sonoma 14, 15
13 Ventura 13, 14, 15
12 Monterey 12, 13, 14, 15
11 Big Sur 11, 12, 13, 14, 15
10 Catalina 10, 11, 12, 13, 14, 15

The binaries created by pyinstaller are generally forward compatible with later OSX versions.

  • For example, consider a binary built on version 13 (Ventura). This binary is compatible Ventura, but also Sonoma and Sequoia.
  • Check your target machine's OS version number, and use that to select the most recent compatible mac_maker binary.

In addition to making sure your build is compatible with your OS, you must also choose the right CPU architecture:

Architecture CPU Type
arm64 Apple Silicon
x86_64 Intel

Please Note:

  • The binaries are unsigned, and not notarized by Apple.
  • As such, they will trigger a warning about software from an unidentified developer when executed.

OK, but you still didn't tell me how to get started...

Are you on OS version Monterey or later? It may not ship with python anymore! We better check:

  • open a terminal and type python3, and if prompted to install the x-code cli tools click install.
  • this is less than ideal, but it gets you into a compatible state quickly

Once you've confirmed python is present):

  • Copy the mac_maker binary to the OSX machine you'd like to put under configuration management.
  • If you have a working internet connection, you can start working with Mac Maker Profiles.
  • To try creating your own Profile, check out this repository.
  • To learn more about Mac Maker Profiles, and to try out a simple example, continue reading here.

Mac Maker Profiles

Mac Maker uses the concept of Profiles, to bundle together the Ansible configuration required to configure your Mac.

Here's an example profile for you to test out:

  1. Start Mac Maker: ./mac_maker
  2. Run the these commands, to check and apply the profile
  • precheck github https://github.com/osx-provisioner/profile-example
  • apply github https://github.com/osx-provisioner/profile-example

You can work with Profiles in one of two ways:

  • Create a public GitHub Repository that contains your profile, taking care NOT to included privileged content.
  • Create your profile in any private git repository, and clone it to a USB key (or other portable media). Add a spec.json file to the USB stick telling Mac Maker how to find it.

To find out more:

  • Read about the Mac Maker Profiles, and how to build one here.
  • Use this template to create your own custom profiles.
  • Read about the spec.json file, and how to build one here.

Please Note:

  • We've had some user feedback that the spec.json files are a bit complicated to get started with.
  • Although we'll continue to support them, we'll soon introduce the ability to simply specify the path to a Mac Maker Profile folder on the local filesystem.

License

As this project effectively bundles Ansible, it must comply with the GNU GPL. You are however free to use and modify this source, as long as the license's terms are respected.

(Pull requests are most welcome, as I sincerely hope this project can be of use to others.)

Detailed Documentation

The project's full documentation can be found here:

Complete build instructions are included, so you can build your own binary.