On Tue, Dec 24, 2024 at 02:38:59PM -0500, Jonathan Frederickson wrote: > Hi - I've been using Guix on a couple slower aarch64 machines for a while. One of the recurring pain points with doing so has been that very often, when I go to build my home environment after a fresh 'guix pull', most of the packages in it do not yet have substitutes built. > > I do also have a couple more powerful aarch64 machines available, so build offloading is an option. However, one of the machines I use most frequently is a small laptop (the MNT Pocket Reform), which is meant to be very portable. Even on my more powerful machines, building everything in my home environment when no (or very few) substitutes are available may take multiple hours or sometimes days, and build offloading being synchronous means the machine needs to maintain a constant connection to the build servers during a build. This is very inconvenient for a portable machine! > > What I would *like* to be able to do is to trigger a build on another more powerful machine asynchronously, and then later come back and build my home environment using the substitutes from that build. The Guix Build Coordinator seems like it may serve my needs fairly well based on the description in this blog post: https://guix.gnu.org/en/blog/2021/building-derivations-how-complicated-can-it-be/ > > ...but in contrast to building a specific package with 'guix build', it doesn't look like I'm able to get the derivation path for a home configuration without first building the packages! Running 'guix build -d -f /path/to/home/config' attempts to build the packages in my home configuration if they're not yet built, rather than returning a derivation that I could submit to the build coordinator. > > I admit that I don't fully grok derivations yet; is this inevitable for derivations, or is it just a limitation of 'guix build' and is there actually a way to get at the home configuration derivation prior to building its packages? > > Thanks, > - jfred I have a pinebook pro and I also have a couple of other aarch64 machines, and here's what I do: `guix pull` on my pinebook pro, `guix home build --no-grafts ... -d` and `guix system build --no-grafts -d` to get the derivations Then I'll do `guix copy --to=my-x86_64-machine /gnu/store/...-drv` of the two derivations Then from there I'll build them since I already have offloading setup. I'll either get substitutes from my main machine, or from there I'll do `guix copy --to=pinebookpro $(guix build /gnu/store/...-drv)`, and that'll automatically copy the packages to my pinebook pro once it's finished building everything. -- Efraim Flashner אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted