`derivationOf` primop
Is your feature request related to a problem? Please describe.
It behaves roughly as an inverse of outputOf and is equivalent to the planned ^.. syntax on the CLI.
This function improves RFC 92 and multi-derivation package support, by allowing the derivation path to be accessed for any output, whose derivations may be distinct, rather than only exposing a single drvPath.
pkg.drvPath is rarely needed. When we have a function for it, this attribute can be removed from the packages.
https://github.com/NixOS/nixpkgs/pull/281536 adds such a function in Nixpkgs. Its implementation can serve as a polyfill for this builtin.
Describe the solution you'd like
A primop that takes the Nix language representation of a DerivingPath, a string with context, and returns the deriver field if it is present. Otherwise it should throw or return null.
Describe alternatives you've considered
Require the Nixpkgs library for this functionality.
Additional context
- #10121
Priorities
Add :+1: to issues you find important.
This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/pre-rfc-implement-dependency-retrieval-primitive/43418/9
Discussed in Nix team meeting:
- @edolstra: if there's a polyfill, why don't we use that?
- @roberth: implementing it in C++ would be very simple, run much faster, and would provide much better error messages
- @edolstra: looks fine otherwise
- @fricklerhandwerk has reservations whether growing the API surface is a good use of limited time, but not going to block
- idea approved
Team discussion:
- Idea approved, seems useful and mirrors
outputOf. - Probably doesn't need to be experimental since it's straight-forward and doesn't really fall under RFC 92.
Note that it needs to be pure: only return the deriver field that's readily available, and don't query the store in the way nix-store -q --deriver does.
This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/2024-06-24-nix-team-meeting-minutes-155/47739/1