NixOS Bento: now able to compare local and remote NixOS version

=> Comment on Mastodon

Bento

Project update: the report is now able to compare if the remote server is using the NixOS version we built locally. This is possible as NixOS builds are reproducible, I get the same result on the server and the remote system.

The tool is getting in a better shape, the code received extra checks in a lot of place.

A bit later (blog post update), I added the possibility to trigger the update from the user.

=> Bento git project repository

Listening to socket

With systemd it's possible to trigger a command upon connecting on a socket, I made bento systemd service to listen on port TCP/51337, a connection would start the service "bento-update.service", and display the output to the TCP client.

This totally works in the web browser, it's now possible to create a bookmark that just starts the update and give instant feedback about the update process. This will be particularly useful in case of a debug phone session to ask the remote person to trigger an update on their side instead of waiting for a timer.

Status display demo

It is now possible to differenciate the "not up to date" state into two categories:

The "sync pending" is very fast, it only need to copy the files, but won't rebuild anything.

   machine   local version   remote version              state                                     time
   -------       ---------      -----------      -------------                                     ----
  kikimora        996vw3r6      996vw3r6 πŸ’š    sync pending 🚩       (build 5m 53s) (new config 2m 48s)
       nas        r7ips2c6      lvbajpc5 πŸ›‘ rebuild pending 🚩       (build 5m 49s) (new config 1m 45s)
      t470        ih7vxijm      ih7vxijm πŸ’š      up to date πŸ’š                           (build 2m 24s)
        x1        fcz1s2yp      fcz1s2yp πŸ’š      up to date πŸ’š                           (build 2m 37s)
Proxy Information
Original URL
gemini://perso.pw/blog//articles/managing-a-fleet-of-nixos-part5.gmi
Status Code
Success (20)
Meta
text/gemini
Capsule Response Time
139.102679 milliseconds
Gemini-to-HTML Time
0.518699 milliseconds

This content has been proxied by September (ba2dc).