Cross-platform NixOps?


I am trying to figure out if it is possible to use an x86 machine to manage a NixOps network of ARMv7 (NixOS) machines. I noticed that in NixOps the builds are performed on the manager and then pushed to the managed nodes, so, the manager would need to be performing cross compiles.

Is the NixOS cross-compile situation able to achieve this yet? Guidelines welcome!


It is possible. I managed a fleet of ARM devices with NixOps. I could not get the cross compile approach working so I bootstrapped with an ARM build slave. This also helped with Hydra. Parts of my approach is in various wiki’s, but no single coherent explanation anywhere. Is this of interest? What are you trying to do?


Ah. My ultimate goal is to have a collection of (basically identical) Ceph nodes. I am interested in using Odroid HC1/HC2 devices for this, which take one disk each. These are armv7 SBCs with 2GB RAM. Since all the nodes will be the same, its a perfect fit for NixOps.

However, I would like to manage the fleet from another, x86 machine. And if I can use this other machine to build everything for the nodes, that would be much better, since the Odroids are very constrained for doing large rebuilds. Plus, their SD cards will wear out.

My thought is maybe to just run an arm7 VM on my x86 machine and manage NixOps from there. I am guessing this is much simpler than trying to make cross-compiling work. I think I would avoid Hydra, because I don’t have any powerful arm7 hardware to use with it to do the builds. Does that make sense?


For my use case it ended up being faster to just build EVERYTHING ( binutils, gcc stages, the whole thing) distributed than the VM approach. Once it was set up, then it was only my application that I had to rebuild which was much more reasonable.