DEV Community


Posted on

Backup/restore most of your Mac's dev tools easily

I was about to make a joke on Twitter the other day, saying how I move to a new Mac is basically about this command:

brew install yarn nvm cowsay fortune tree direnv gh git-lfs imagemagick jq qpdf webp

Because most of the tools I often use (besides VS Code) are living in the terminal installed by brew

That's when I was discovering that brew actually has a subcommand called bundle. 🤯🤯🤯

Basically, it generates a "Brewfile" for you (like your beloved package.json files in node projects), writing out a list of packages (called formulaes here) that you have installed.

All in all, it's a brilliant way to move all your devtools quickly from one Mac to another.

Give it a try!

1️⃣ Generate a Brewfile (acting as your lockfile) with
brew bundle dump

This file is totally human-readable, so when you cat it, you should see something like:

tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/cask-fonts"
tap "homebrew/core"
brew "cowsay"
brew "direnv"
brew "fortune"
brew "imagemagick"
brew "jq"
brew "neovim"
brew "nvm"
brew "qpdf"
brew "ripgrep"
brew "tree"
brew "yarn"
cask "firefox"
cask "font-hack-nerd-font"
cask "iterm2"
cask "signal"
Enter fullscreen mode Exit fullscreen mode

2️⃣ Carry this Brewfile to your other machine, and just type

brew bundle install

It will install all the dependencies listed in your Brewfile.

That's it! 💪

Top comments (4)

mvzundert profile image
Marius van Zundert • Edited

You can add:
brew bundle dump --describe

To add a description regarding the packages that are being installed in the brew file

For example:

jozsefdevs profile image

Wow! Great recommendation, thanks. awesome👌

lissy93 profile image
Alicia Sykes

Nice post - thank you Jozsef :)

You can also incorporate your Brewfilw into your dotfiles, or put it in a Git repo for easy tracking. I'm new to MacOS, but have just made my Brewfile:

jozsefdevs profile image

Great one!