@civodul all of the above plus the adoption of FOD-based dependencies fetchers for the Rust and Go toolchains. (wrote this in the survey a few days ago, I sound like a broken record!)
It's definitely a tradeoff, patching a Rust or Go library for the whole packageset is definitly not an option for Nixpkgs. At least not a realistic one at the moment. But that's a tradeoff I personally think makes sense. The very little experience of packaging a not so complicated Rust package on Guix has been horrendeous. The importer is brittle, it generates a lot of code that you have to manually massage into the tree. All this is unecessary busywork in my opinion.
This plus my very limited experience with email-based workflows has been the real show-stopper for me during my latest attempt to use Guix more.
--------------------------------
I also feel like we need a Guix counterpart of nixpkgs-review for reviewers. This is a really important tool for me, and last time I checked (granted a few months ago), there were no credible option in the Guix land.
@picnoir Could you explain a bit the FOD-based dependencies fetchers (or send a link)? (I always read “FOD” is “FUD”; for those like me, we’re talking about fixed-output derivations. :-))
‘nixpkgs-review’ looks pretty cool indeed; the recently-added ‘mumi am’ helps, but it only does a tiny part of the job.
How does ‘nixpkgs-review’ figure out which packages (if any) need to be rebuilt to validate a PR?
@civodul As for nixpkgs-review, the heavy lifting is currently done by ofborg, the soon to be discontinued PR CI. (ie. the component evaluating and building the PRs, but not populating the cache/building the channels).
@picnoir It’s a FOD whose output hash cannot be known in advance too, so I suppose one just builds it, looks at the hash mismatch error, and feeds the “expected” hash back in the package definition?
@civodul@picnoir FOD stands for fixed output derivations. IIUC what PicNoir is suggesting that guix should use the lockfile of the Go/Rust package to define an intermediate package that contains all the dependencies for a package. This leads to less conflicts trying to find common versions that work for multiple crates at the expense of more storage requirements and longer build times
@PuercoPop@civodul@picnoir If I'm understanding this correctly, the dependencies would only exist in the FOD and wouldn't need to be explicitly packaged and included in nixpkgs, right?