Plume on NixOS

This Plume instance is built with a Nix Flake

Having written my diploma thesis on federated social networking services ten years ago, I am happy that there is a contemporary approach named ActivityPub. I do follow up with new implementations. Plume is one of them, with the extra advantage of being written in my favorite programming language Rust.

I was recently asked if we ran a blogging service at C3D2. We didn’t, but Plume came to mind immediately.

As our infrastructure runs mostly on NixOS by now, the operating system is always my favorite choice when deploying a new service. Unfortunately, no Plume package is available for Nix so far. From browsing the Web, I’ve got the impression that others have tried and failed before.

In the end, packaging it took a few days and many attempted builds. Having fenix provide a rust for wasm32-unknown-unknown got me compiling the frontend plume-front pretty quickly. Luckily there is already wasm-pack in nixpkgs because that produces even more of the needed files compared to just building with cargo. There were also a few more things to learn for me about naersk, the new Rust builder for Nix. I think that the resulting hacks are not all too ugly.

By requiring a Rust compiler for a non-native target, which we get from fenix, I think that chances are low to get this into nixpkgs right now. If you think it can be done, let’s try!

I am considering to break the code out into a separate reusable Plume.nix Flake. If you are interested, don’t hesitate to tell me. I am keen on sharing the maintenance efforts. I will publish that earlier then, because right now tinkering in our main infrastructure repository is kind of convenient while there may still be some issues to come.