Boxen

with tags Boxen Git OSX puppet imaging github -

Setting up a new laptop is always a bit of a ballache as there’s always something you’ll miss.

But at least for OSX theres boxen to do most of the heavy lifting for you which can install everything from steam and MS Office to htop and lynx/links/elinks or even just set your screensaver to BSOD.

Boxen is a handy little tool from github that they use internally for deploying environments for devs, Its not the most user friendl= tool to get your head around but once you have you can go from a blank OSX install to up and running in about 15mins

Prereqs

  • A fairly clean install (Boxen doesnt play nice with existing homebrew/rubyenv installs)
  • Xcode (command line utils)
  • A github account without a hypen (Boxen hammers githubs api and will take forever if not authenticated)

Setup

Now you’ll need to clone their repo

git clone https://github.com/boxen/our-boxen

Once done can start setting up your own configs in ./modules/people/manifests/$GITHUB_USERNAME.pp replace $GITHUB_USERNAME with your own username

this takes the form of a puppet class

class people::$GITHUB_USERNAME {
}

from here you can simply include the packages from https://github.com/boxen/ so to install virtualbox

your puppet module would look like

class people::$GITHUB_USERNAME {
include virtualbox
}

and you’d need to append github "virtualbox" to ./Puppetfile

but that’s a bit too simple

class people::$GITHUB_USERNAME {

 ###### Environment Settings ##########
  include osx::disable_app_quarantine
  include osx::dock::autohide
  include osx::dock::dim_hidden_apps
  include osx::finder::empty_trash_securely
  include osx::finder::show_all_on_desktop
  include osx::finder::show_hidden_files
  include osx::global::disable_key_press_and_hold
  include osx::global::enable_standard_function_keys
  include osx::global::tap_to_click
  include osx::no_network_dsstores
  include osx::software_update

  class { 'osx::global::natural_mouse_scrolling':
    enabled => false #Makes the touch pad behave like it should
  }

  class { 'osx::dock::hot_corners':
    top_right => "Start Screen Saver",
    bottom_left => "Mission Control"
  }
}

you’ll need to append github "osx" to ./Puppetfile

for more examples see my fork of boxen which contains my full setup

Written by
Older article
Scheduled Scaling