Skip to content
This repository has been archived by the owner on May 22, 2018. It is now read-only.


Folders and files

Last commit message
Last commit date

Latest commit


Repository files navigation

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