Emanote
Despite my best efforts, I haven’t been able to get Emanote installed in a Devbox environment. Instead I have managed to build a flake.nix
that will install Emanote and some additional utilities into a Nix shell. That took a lot more work than it should have, but I now have a working environment with the latest release of Emanote. I didn’t really want to convert everything to yet another static site generator, so I think I will stick with Emanote for the time being. Maybe I’ll explore Zola more in the future, depending on how long I stick with using Nix.
Linux Distributions
I’ve been evaluating some Linux distributions with an eye towards automated, repeatable system builds. The distributions I’ve been looking at are NixOS, Arch Linux, and atomic distributions like Fedora CoreOS and openSuse MicroOS. I have plenty of experience automating mainstream distributions like Red Hat and Ubuntu, and I am using that as a baseline to compare these alternate distributions.
NixOS
NixOS is the most radical of the options I am looking at, and it comes with the steepest learning curve. I think it offers the straightest path to repeatable builds, based on its atomic build system. It is also highly automatable through the use of the Nix configuration language. However, it is also the hardest to learn. Between having to use a fucntional language for all of its configuration, and the unique way it stores files on disk, it is far and away the most difficult to learn. It also is fundamentally incompatible with any software that doesn’t come from the Nix package repository. If you want to install a program that isn’t available as a Nix package, you will need to buiild a package for it. NixOS has fairly terrible documentation which further complicates adoption. I need to decide if the investment of time and effort required to learn it is worth it.
Arch Linux
Arch (BTW) is the most like a mainstream distribution. It’s highly customizable, but otherwise it doesn’t offer anything special for repeatable builds or automation. It’s level of customizability makes it attractive for building systems that are tuned for a specific purpose. Since it still uses the same fundamentals as the mainstream distributions, I can leverage my existing knowledge right away. There is a bit of a learning curve here as well, but it uses a lot of my existing knowledge so in theory I should pick it up quicker. Arch is also known for its fantastic documentation. Even if you are not an Arch user, you will find a ton of useful knowledge in their wiki that can be applied to most other distributions.
Atomic Distributions
Fedora CoreOS and openSuse MicroOS are another interesting option. They use some of the same fundamentals of mainstream distributions, but they combine it with an atomic, immutable (at runtime) base. Software is installed either as Flatpaks, or in containers. (OS packages can be installed onto the base, but it’s generally discouraged unless it’s needed for system operation.) These distributions comes with tooling to automate the intial setup and configuration. These distributions are designed to be repeatable and autoamted. I’m not sure they can offer the same level of repeatablility as NixOS, but I think it would be sufficient. The biggest hurdle would be building out containers and managing them.
Next Steps
My next step is to start learning more aobut each of these distributions and to start putting them through their paces. I’ve dabbled with each of them a little already, but I need to try and build something signifianct so that I can see where the sharp edges are.