loading...
Cover image for My Brewfile

My Brewfile

mattstratton profile image Matt Stratton ・7 min read

I am a big fan of using Homebrew to install/update all the software on my MacBook. One thing that not everyone knows about is the idea of a Brewfile, which is a text file that lists all the various packages, etc, and you can then use brew bundle to install the things in the Brewfile (along with their dependencies). Brewfiles support more than just Homebrew packages; you can use a Brewfile to list out casks, as well as apps installed from the Mac App Store.

My current Brewfile is available on GitHub, but I thought it might be helpful to go through it and provide some explanation of each package/application, and what I use them for.

Packages

This is not a comprehensive list of all the packages I have installed, but just some that you might wonder about!

Casks

Homebrew can also install applications that have installers, etc. I try to only install software using a cask so that I can keep it tracked with my Brewfile. Note that some of these applications are not free and will require you to input a license key the first time you start them up. I haven't included every cask that I use, because do you really care that I install Docker via cask? No, you don't.

  • 1password: This is my main password management application. I personally like it because I can use it across my mobile devices as well as all my computers. Use the one you prefer, of course, but you should be using one!
  • adobe-creative-cloud: This gets the main application installer/control on my machine so that I can install the various Adobe applications that I am licensed to use.
  • aerial: An OS X screensaver that uses the same images/look as the Apple TV screensaver.
  • airfoil: A great product from Rogue Amoeba to redirect output to various Airplay devices. I use this to stream Spotify to my HomePod.
  • audio-hijack: Rogue Amoeba again! Dump audio from any application to be recorded, etc.
  • authy: As much as possible, I use Authy for my OTP/multi-factor authentication. I can use it on my phone, as well as keep them in sync across all my devices. This means I don't need to create a new code for Google, etc when I get a new phone!
  • alfred: Task launcher (and more). I'll eventually write up a post detailing the various Alfred workflows that make my life easier. Replaces Spotlight for launching apps by search, and also includes a great clipboard replacement.
  • bartender: Small utility that you don't know you needed until you try it. Lets you hide various things in the Mac menubar. Awesome.
  • beyond-compare: I use this for diffing files. Maybe it's a force of habit, maybe you have a better tool you like. YMMV.
  • cakebrew: A GUI in front of Homebrew. Necessary? No. Kind of neat? Yes.
  • dash: Great tool for quick access to documentation on various tools, languages, etc. Coupled with Alfred, it's amazing.
  • dropbox: I go back and forth with Dropbox; I keep my documents in iCloud, but Dropbox is great for syncing certain files (for example, I keep my Alfred settings in sync via Dropbox) and also, this is where I keep images, movie files, etc.
  • elgato-control-center: Tool for controlling my Elgato Key Lights.
  • obs: If you use the Elgato Stream Deck, note that OBS must be installed before the Stream Deck software. Which annoyed me, because I like my Brewfile to be alphabetical.
  • elgato-stream-deck: This is the driver/configuration utility for the Stream Deck, which gives me quick buttons for doing fancy things like controlling the aforementioned Key Lights, as well as shortcuts for cool things in OBS.
  • farrago: A soundboard for sound effects, etc.
  • handbrake: While I don't rip DVDs anymore, this is still a super useful tool for converting video files to the format I want.
  • iterm2: If you do anything in the terminal on OS X, you should be using iTerm. Period.
  • loopback: Creates virtual audio devices, so it's a helpful audio router.
  • krisp: Noise cancellation, in case you are taking a Zoom call in a noisy area.
  • logitech-presentation - I mention this one because it's kind of annoying; this only installs the installer for the Logitech Spotlight remote; you will then need to run the installer from where it gets dumped at a location like this: /usr/local/Caskroom/logitech-presentation/1.54.84/LogiPresentation Installer.app
  • macdown: My favorite Markdown editor.
  • moom: Window management tool. I use this a lot. I have custom configurations for the placement of windows on the screen, and Moom lets me move windows there with a keystroke. Love it.
  • soundsource: Lets me control audio on a per-app basis, adjusting the volume and output device for individual apps, etc.
  • tower: Most of the time, I use git at the command line, but this is a nice GUI on top of it.
  • witch: Enhance task switcher, making it easier to tab between windows, etc, not just apps.

Fonts

You can even use Homebrew to install fonts! I don't have all my fonts in my Brewfile because there isn't a cask for every one I use, but I do have these:

tap "homebrew/cask-fonts"
cask "font-hack-nerd-font"
cask "font-inconsolata-for-powerline"
cask "font-menlo-for-powerline"

Notice that I need to add a tap in order to get those fonts.

Mac App Store apps

I am not going to list all these, as I only use a few (mostly games), but just to touch on a few things.

You need to know the ID of the app; to get it, run the following command:
mas search Bear (where "Bear" is the search string for the app you want). You need the mas package installed for this, which is why we have the packages listed first in the Brewfile.

You'll get output that looks like this:

  1091189122  Bear                             (1.7.11)
   926066161  Wildlife Simulator: Bear         (1.0)
   413013033  BATTLE BEARS -1 Mac              (1.1)
  1150538527  Dress Up Bear                    (1.1)
   792252100  Build A Teddy Bear               (1.0)
   418326655  Beargo                           (1.3)
   675102891  Teddy Bear : Kindergarten        (1.0)
   639585198  Little Bear: My very first games (1,00)
   612122909  Berenstain Bears Get In a Fight  (1.2)
   612126526  Berenstain Bears In the Dark     (1.2)

The first column is the ID that you will need. You also need the exact app name in the second column. Then, update your Brewfile like this!

mas "Bear", id: 1091189122

It's that easy!

Posted on by:

mattstratton profile

Matt Stratton

@mattstratton

I'm a Transformation Specialist at Red Hat. I host the Arrested DevOps podcast. I run DevOpsDays Chicago and devopsdays.org. I pretend to be a Go developer sometimes.

Discussion

markdown guide
 

Cool!! I'm always happy to see other people brewfiles, is how I discovered some of the most useful apps.
Here's mine: magarcia/dotfiles/.Brewfile (the weird syntax is because I use yadm to manage my dotfiles).

 

Another yadm fan here! I need to dig into yours for inspiration for sure!

 

Diving down this rabbit hole will cut my productivity to zero for a week, but I'll be up at like 101% after.

Real talk: I love seeing these lists, more than half of this is new to me.

 

I always get inspired when I see someone else's Brewfile, etc...I am pretty sure that's how I learned about tldr.

 

Hey Matty! Any reason you're using Authy when you can do OTP with 1password? :)

 

Honestly, it is because I have everything in Authy. I've thought about using 1Password for it (for the same reason I use Authy, which is 1) able to use it on a computer and b) not have to re-set everything up if I get a new phone, device, etc).

I have a LOT of OTP stuff in Authy, so moving it to 1Password would be a pain, and I honestly haven't had a forcing function that would inspire me to do that work. If I was starting over, I might use 1Password!