In case you’re unacquainted, Boxen is an open source project that can setup your macOS machine(s): it automatically installs apps, developer tools and just about anything else you might need. Unlike third-party backup services, Boxen does this by reading manifest files you provide—thus affording you all the advantages of Infrastructure as Code:
.vimrc
) can be committed to source control. This allows you to experiment with different setups, $ git checkout
if it goes all wrong, and ultimately $ git commit
to new and exciting ways of working.$ boxen
command.In fact, Boxen worked so well for me, it was part of my workflow for two years. I’d:
$ git commit && git push
new setups on my Laptop A.$ git pull && boxen
on my own Laptop B.This workflow enabled me to transition between two unconnected machines seamlessly, in a way that encouraged me to play with new tools and configurations.
In my opinion, Boxen’s greatest feature is that it provides a free “App-Store” for developer tools. You’ll find tools of which you are familiar, but you’ll also find tools of which you are not. And it’s here—in the latter category—where comes joy of using Boxen. A few of my favourite discoveries include:
*.dev
entries in your hosts
file, mapped to local projects? Then brace yourself—as running $ boxen
for the first time, will transfigure them into this:
localhost:80
by default, and all *.dev
requests get resolved to it via dnsmasq. Basically, should you not be employed by GitHub, expect to reverse engineer Boxen from time to time.$ boxen
, Puppet has to compile your manifests into a catalog, before it actually applies said catalog to your Mac. In other words, Puppet hangs for (at least) a minute, deciding what your “perfect” Mac should look like. Then—happy with it’s vision—you’ll have to wait some more, whilst Puppet goes about “making it so”.$ pip
and $ brew
) started to fail randomly. Shared module updates have also been known to break things… all of which makes pulling updates, somewhat a chore.The biggest nail in the coffin for Boxen came from @MikeMcQuaid; then maintainer of the project. In a GitHub issue, Mike states GitHub is no longer interested in maintaining Boxen, and furthermore has moved on to maintain the Homebrew project. Homebrew can do most things Boxen can (check out Brewfiles for keeping your dependencies under source control!), with zero dependencies on Puppet.
Although I invested lots of time into maintaining my Boxen configuration, migrating to Homebrew was a natural, easy step thanks to @MikeMcQuaid’s Strap script. And in the rare cases Homebrew didn’t provide me what I wanted, it’s infinitely easier to extend then Boxen.