A tour around chezmoi
If you, like me, enjoy tinkering with programming languages, configuring text editors and installing command-line tools, you will have faced the difficulty of managing versions, configuration files and environments, and replicating them on other machines. I have used a variety of1 different ‘dotfile managers’ for this task, most recently Nix and Nix Home Manager. This was an amazing and full-featured system. It was a steep learning curve to set up, but once I had done so, it was relatively easy to maintain, at least at first.
However… you knew there had to be a ‘however’, right? Nix is amazing, but I get the feeling that it is best used on Linux, and perhaps best used as NixOS, where you configure the whole operating system with it. While it works on macOS, the operating system itself puts constraints on what Nix is able to control, and as macOS is not the key platform for development effort, some packages are broken for macOS. I found myself having to manage more and more bits of my command-line ecosystem outside of Nix, which rather defeated the purpose of it. Managing and integrating all those components became difficult. I still think that if I had a Linux machine, I would choose to install NixOS on it and love the experience, but I needed to find another solution for my Macs. I settled on a partnership between chezmoi and mise-en-place (mise for short).