Title: NixOS Bento: now able to compare local and remote NixOS version Author: SolΓ¨ne Date: 06 September 2022 Tags: bento nixos nix Description: # 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. (HTM) 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 bento scripts were updated but not NixOS version change, this is called "sync pending". Changes could be distributing the updating file to give a new address for the remote server, so we can ensure they all received it. * the local NixOS version differs from the remote version, a rebuild is required, thus it's called "rebuild pending" The "sync pending" is very fast, it only need to copy the files, but won't rebuild anything. ```text 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) ```