Skip to content
This repository has been archived by the owner. It is now read-only.
Go to file

Boxen Build Status

Manage Mac development boxes with love (and Puppet).

Rules for Services

  1. Run on a nonstandard port, usually default port + 1000 or 10000.

  2. Install with a custom Boxen homebrew formula.

  3. Suffix the Homebrew package's version, starting with -boxen1.

  4. Run as a launchd service in the dev namespace, e.g., dev.dnsmasq.

  5. Store config, data, and log files in $BOXEN_HOME/{config,data,log}. This will normally require customization of a service's Homebrew formula.

Sometimes it's not possible to follow these rules, but try hard.

Projects from the CLI

We use a totally awful hack to do from-the-cli project installs of projects. We create a file in "$BOXEN_HOME/repodir" called .projects, with a single line. That line is made up of projects separated by commas. We then read that into a Puppet fact in Puppet-land, and that checks for classes that match those project names, and includes them in the catalog.

We can't pass a FACTER_ env var because sudo has env_reset and we can't just modify the sudoers file due to a chicken-egg problem.


  1. All hooks must be in the namespace Boxen::Hook::MyThing.

  2. All hooks must subclass from Boxen::Hook

  3. All hooks must provide a private instance method required_environment_variables that returns an array with at least one entry.

  4. All hooks must provide a private instance method #call.


Use the OS X system Ruby (2.0 or newer). Run script/tests often. Open PR's. Use the CI.


Use Issues or #boxen on

You can’t perform that action at this time.