Reproducible builds & Emacs straight.el

As often as possible, I try to make sure everything that I do on my computer is reproducible. I have an extensive backup system, and tasks to manually back up things that do not back themselves up (such as the order of the items on the dock of my Mac). I hate the idea that something I have on my computer is a one time setup, and I won't be able to easily recreate it on a new machine. I test this system by wiping my computer completely, about twice a year. This is probably excessive, but 1) it cleans out all of the things I did as a one time install for a hackathon or school project and 2) tests that my computer is 'reproducible' and there is nothing that is not getting backed up that should be. I might do a more full write up on how I do this in the future, but for now here are the three tools I use

  1. Chezmoi, which lets me clone my dotfiles as a git repo and sets up symlinks for me
  2. homebrew, which lets me install apps and cli utilities super easily
  3. A ~130 action Omnifocus project that contains all the small changes I like to make to macOS and certain apps that have no way to automate (like changing default date formats, what is in the menu bar, adding VPN profiles, etc)

One pain point I have had for a while though is my Emacs configuration. Chezmoi gets my init.el set correctly, and before I had tried to keep track of a list of packages I want installed in that Omnifocus project. However, I have found a great tool that lets me add packages to be auto-installed in my init.el: straight.el. straight.el is a "next-generation, purely functional package manager for the Emacs hacker". If you are a Emacs user, and feel like you Emacs installation and config is fragile / non-reproducible, I strongly suggest you give straight.el a try, it has been a great addition to my Emacs configuration.