-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Figure out how to make IFD work properly #954
Copy link
Copy link
Open
Description
See the whole thread at NixOS/nixpkgs#16130 plus the ensuing IRC discussion.
As a quick recap: I and several other people see IFD as a pretty important prerequisite for Nix's continued growth, but there are a few technical issues standing in its way right now that we don't have clean answers for.
What we'd like to be able to do:
- Write a Nix codegen that takes in locked-down inputs from (presumably) a fixed-output derivation
- Incorporate the output of that codegen into nixpkgs
- Be able to use nixpkgs sensibly in that state, and have it lazily reach out to a cached output of the autogenerated nix expressions with little-to-no degradation of user experience
What hinders it right now:
- Restricted mode prevents network access which stops this from working on Hydra today
- Full understanding of ramifications of this approach:
- Is UI unfriendly when we have to build
stdenvor similar during evaluation? - Should channel bundles include subchannels or allow fetching them on the fly?
- Is it now harder to understand what a
nixpkgsevaluation involves, and whether a rebuild will be necessary? Definitely, but we could write tooling...?
- Is UI unfriendly when we have to build
- Do substitutes work properly during evaluation?
- What happens with multiple levels of evaluation->building->evaluation->building? This is unlikely to be a real scenario but it might happen by accident if someone's codegen depends on someone else's ecosystem.
- What happens when a
stdenvitself depends on one of these things? The darwin stdenv uses llvm, which depends on python. It currently doesn't use any pythonPackages but who knows what might happen in future? - Policy: when do we want this? When do we not want it? How do we make sure it's used in reasonable ways?
- [More things I haven't thought of]
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Fields
Give feedbackNo fields configured for issues without a type.