Hey, Back in early 2021, I was trying to address the issues the Guix Data Service has when trying to compute channel instance derivations for various systems [1]. 1: https://issues.guix.gnu.org/47989 Some changes did some out of that, and I believe the helped, but even with those changes, being able to build things for the system you want to compute the channel instance derivation for seemed to remain necessary. This poses an operational issue for things like data.guix.gnu.org, since it can only compute channel instance derivations for systems it can build for, which in practice means that it's limited by the systems which QEMU emulation is enabled for. Even for those systems it can build for, because builds can happen when attempting to compute these derivations, it means that data.guix.gnu.org spends a lot of time waiting for builds to complete, just so it can store these derivations. I have a suspicion that this issue is a big contributor to the data.guix.gnu.org slowness when processing new revisions, so I tried to dig in to it more recently as I didn't know why these builds were happening. I think I figured out that it's related to grafts. I've attached a test script which computes the channel instance derivation for mips64el-linux which I'm not set up to build things for (if you can build for mips64el-linux, replace this with a system you can't build for). You'll need to use the attached patch (also present on [2]) when running this script. 2: https://git.cbaines.net/guix/log/?h=channel-instances-manifest-graft-control When I run this script locally, it first succeeds in computing the channel instance derivation when grafts are disabled, but then fails when grafts are enabled: while setting up the build environment: a `mips64el-linux' is required to build `/gnu/store/g40shyhsd00r5dq3mm76c2b1krnr1njh-guile-bootstrap-2.0.drv', but I am a `x86_64-linux' Even though I think this shows that grafts are involved, I'm not sure what this means? I'm guessing that the effects of grafts aren't as clear cut as for packages here, since the grafts are happening here as part of computing a derivation I'm guessing that the derivation is actually built with the grafted outputs, which differs from how grafts affect packages. Given this, I guess computing the derivation without grafts means that the replacements that would be grafted in are just not used at all. To recap on my aim here, I really just want to be able to compute channel instance derivations without performing any expensive builds, or if that's not possible, it would be good to understand why? Thanks, Chris