Glad to announce! We just released Version 0.3.0, which finally allows you to deploy the controller on the public internet, available via HTTPS and manage Raspberry Pis, which then can be deployed in Push-Mode (build on controller, activate on device) even behind NAT or a Firewall allowing only HTTP(S) WebSocket connections.
Hey! Thanks for sharing this software, it looks great. I was wondering, how would you compare your product to Balena?
I am currently using their dashboard with one of the obsolete armv7l machines. At the time, I could only dream on using Nix for my (hobby) project, because cross compiling is hard and expensive in terms of computing resources, and Balena is (by default) building the images on their servers, and especially because the distributions they use (Ubuntu / Debian etc.) also provide natively built armv7l packages ready to use.
We directly compare Thymis to Balena. The project includes the web-ui management in the open source part, compared to OpenBalena though, and of course we use Nix/NixOS.
Currently we focus on Raspberry Pi 3/4/5 support and do not currently target any armv7l devices.
Of course we are much less far along with development and feature-set than the Balena project due to different resources, however you have quite a bit more flexibility with what you can achieve with our system using the flexibility that NixOS provides.
Wow OK good to know. I’m sorry if I have missed something in the documentation (it seems incomplete so I’m sure you’d forgive me :)), but do you handle cross compilation from x86_64-linux to aarch64-linux? If so, would it be too hard to similarly support cross compiling to armv7l-linux?
Yes, we are aware and it’s somewhere on our agenda. We have provided some of our pilot partnerships specific usage instructions as well as guidance but we have not written comprehensive docs for now.
When we build aarch64-linux systems on x86_64-linux, we use the linux kernel binfmt feature with QEMU activated via boot.binfmt.emulatedSystems, which we also activate for you in our NixOS module per default unless you deactivate this. This allows the builds to use hydra’s native aarch64-linux packages and store paths to avoid compiling every single intermediate which immensely speeds up builds, while taking a performance penalty during actual compilation.
For our hosted Thymis instances which we provide to our pilot partners and which we aim to provide to the public in the near future, if ARM systems are targeted, we use native ARM VMs to run the builds, which is the fastest solution.
No technical difficulty except for a large time sink to compile everything from scratch, as well as an ongoing infrastructure cost to store the armv7 Store Paths in a binary cache. If nixpkgs is not up to date with respect to changes specific to armv7 there is a slight integration pain as well.
Do you have a specific device or image in mind to build?
I see. Indeed the lack of cached store paths remains the main thing I lack. See also:
And for native building using the community’s aarch64-linux build box, I now found out it has retired…
When I’ll actually find time to transition my project to Nix, I think I’ll put my efforts in cross compiling, and maintaining my own cache.
Yes. It is a hobby project - a sound system connected to the local home network. I’m using the BalenaFin device, which to my understanding is identical to Raspberry Pi 3 in most software / firmware related aspects. The main feature of it, which also forces me to use armv7 on it and not aarch64, is the fact it is connected to this sound card and it uses this closed source firmware.
Oh so these are not the same builders! Thanks for pointing that out. It would have been nice if that big warning added in this commit by @hexa would have mentioned that - the archived state of the repo doesn’t allow a PR…
Thymis 0.6.1 has been released with some fixes like deleting older logs from the database. Additionally it includes a copy ssh command button to connect to devices from any terminal over the network relay. See the full changelog here: Release Release 0.6.1 · Thymis-io/thymis · GitHub