18-AUG-2024

1013

As I work on getting the remaining barge services running, I’m thinking about the CI side of this and how to keep all these machines updated.

I could set up hydra, but I think that’s overkill for my use right now; it is nice that it’s a bespoke ‘build nixos images’ kind of tool, but I think I can probably get most of the value with less setup using some laminar scripts that introspect on the minas-tarwon flake; and have it periodically rebuild each of the canon images as vms into a centralized nix store, then if the target machines mount /nix over nfs and are otherwise mostly static (i.e., they don’t have any local OS state stored on whatever disks they may have), then it should be possible to verify the image in CI, then automatically deploy when those images work alright.

Independently, I need to set up a metrics machine, and I think I’m going to create a second, dedicated VM for it, and probably just set up the services using the other, ‘just give it a nixos-config’ style container, more as an experiment than anything else. I should be able to re-use the definitions in laurelin inside these containers, which would make it easier to ‘promote’ them to full VMs if I wanted to, which is kind of cool – same configuration in multiple locations.

I’d also like to experiment with microvm.nix, which I’ve read a bit about, and more generally with microvms.

Lastly, I’ve removed elenta for now, as I’m not really doing anything with it and I don’t think it’ll be necessary for a while. Right now building in place is easier, and working out the deployment strategy for multiple domains is a problem for future Joe.