Hi friends,
skip to next heading to get straight to technicals. this isn’t an AI post btw.
I currently have a one month subscription to one of a the BigLLMs. Seeing our community cult leader doing all this vibe coding and being a 1000x dev made me have fear of missing out and also fear of being left behind.
I’ve been guiding the LLM for a few weeks, learning the ropes and trying to get it to make stuff that I want but don’t have time to do.
One huge pain in my computing life is how awful Guix substitute servers can be. It can take a really long time to reconfigure your system or install a large piece of software when the servers are running slow or simply lacking a substitute binary. This also always happens at the most inconvenient time. I think distributed p2p substitutes network could help here.
There was an attempt a while ago that didn’t really take off, which is disappointing. I would have rather had something to base off of and then take it to the finish line with the LLM.
So…I entered “Plan” mode and began telling it everything that I want. It asked me detailed questions about the implementation and started grinding.
guix-p2p
The idea is kind of simple, use a distributed hash table, similar to Bittorrent, to store NAR hashes that are seeded by peers. NAR metadata are still looked up against the real substitute servers so that there is still level of trust1.
guix-p2p runs as a system service and installs a guix extension that shadows the built in substitute command, so all commands that call that for querying and downloading a substitute binary talk to guix-p2p instead.
Right now there is no one on the network and seeding. I’m just playing around with guix containers talking to each other and seeding packages to each other.
I could imagine this useful for large packages that take a long time to build, like kernels and firefox. A lot of the time I eagerly guix pull and find that the substitute servers haven’t built a lot of the large binaries yet, so I have to build a kernel myself, which is not fun…
If anyone is interested, maybe we can organize some time to fire up the daemon and start seeding and downloading from one another for fun. Though, I completely understand if the fact that this is LLM developed is an absolute “no” for you.
1 Eventually I want to work towards peer attestation so substitute servers are optional.
Enough rambling, here’s an obligatory screenshot of the dashboard (demo mode):
