In software development, you often manage all your dependencies through a package manager like NPM or NuGet. When it comes to software on our operating systems, we often break with this concept and install software from all various places like App Stores, Websites and more. Homebrew Bundle takes back control.

If you regularly install software on your Mac or Linux machine, that does not come via the official App Stores, you might be familiar with Homebrew, a package manager for operating systems. With the Homebrew Bundle extension, we can even define a list of all installed software in a Brewfile file.

Generate a Brewfile

A good starting point is to dump all currently via Homebrew installed software into a new Brewfile file.

brew bundle dump

Install all packages from a Brewfile

Homebrew Bundle works like every other package manager, so you can call brew bundle from the command line and all the listed applications get installed.

tap "azure/functions"
tap "caskroom/cask"
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/core"

# Essentials
brew "tree"
brew "gettext", link: true
brew "fzf"
brew "python", link: false
brew "yarn"
brew "node@12"

# Kubernetes
brew "kubernetes-cli"
brew "kubectx"
brew "openshift-cli"
brew "helm"
brew "minikube"

# Azure
brew "azure-cli"
brew "azure/functions/azure-functions-core-tools@3"
brew "terraform"
cask "powershell"

# Dev
cask "dotnet-sdk"

# Fun
brew "cmatrix"
cask "spotmenu"

# Security
mas "1Password", id: 443987910
Example Brewfile

As you can see in the Brewfile example above, you can define a mix of application sources:

  • brew for regular Homebrew command-line apps
  • cask for desktop applications
  • mas for Apple App Store applications

It's especially cool that you can now use that Brewfile to setup a completely new machine with just a single command. Just make sure to backup your Brewfile safely!

☝️ Advertisement Block: I will buy myself a pizza every time I make enough money with these ads to do so. So please feed a hungry developer and consider disabling your Ad Blocker.