This is the implementation strategy(work that would be involved) I've come up with. If it is ok, then I'll proceed to develop the timeline for the work. I need your critics to improve it.
1. Users will search in the Guix store for the package. This will cause a Guix daemon to run which will return the installed version and the date of installation. This has to be worked upon.
2. Then, the user runs the command "guix get filename version_no." (new command which has to be implemented). This generates the hash with the filname and the version number as the values.
3. This will in turn execute the "gnunet-dht-get" which will probe GNUnet DHT for the possible key/value tuples. The values will be the GNUnet peer which contains the file requested and the version available in the peer. A new implementation should be written which verifies if the version in the peer is greater than the existing version. This is all to be done by the same "gnunet-dht-get" command.
5. If so, then a MESH channel should be opened using the "gnu-mesh-connect gnunet_peer_id filename version". This does opening the connection, accessing the file and downloading the complete archive so that it simplifies the job for the user.
6. Once, the file has been downloaded, the implementation should verify the signature in the file, and call the existing guix commands to install the pacakage. All these features are already available. Hence, no work need to be done on this.
7. Finally test this entire process on a testbed.