Creating a little nix wrapper that calls --pure-eval --argstr system "$(arch)-$( uname | tr '[:upper:]' '[:lower:]')
would be a great way to experiment.
So that my point is crystal clear, this does not help. This does not change the fact, that without pure-eval by default, I still have to go fork every last nix project to rip out their impurities to the top so that that wrapper would even work.
(pure-eval doesn’t even work on unstable nix, still, too, so uh again yay portability https://github.com/NixOS/nix/issues/4651).
The Nix project seems fairly heavily invested in Flakes so I don’t know if it could be changed.
Also to clarify, I’m not asking for any sort of change to flakes. I just want pure-eval by default, ahead of flakes landing. Because despite “heavy investment”, the future of flakes IS NOT CLEAR TO THE COMMUNITY. Neither process, or timeline. Literally, I do not understand the process by which flakes is expected to stabilize (will it RFC), nor do I have any reason to believe I’m closer time-wise to having that in stable nix than I was two years ago.
@colemickens what outcome of the discussion are you looking for?
I want to get people excited about committing to pure-eval by default, because I want the ecosystem to move forward. I want to advance my advocacy of Nix beyond this hold-my-breath-and-wait-for-it place that I’ve been in for the past two years. Pure-eval is the first pre-req to allow the nix ecosystem to expand to its more full potential. And yet it’s bundled with a number of other things that aren’t finished or are controversial in the community (for reasons that I understand and acknowledge).
I am not interested in evangelizing stable nix, and yet I feel increasingly awkward about advocating flakes. The fact that some users think an experimental feature is more appropriate for beginners than otherwise, shows where Nix’s usability is at today. The existence of that state at all, is confusing to outsiders and newcomers - and boy do I sympathize.
Committing to pure-eval
(even via an RFC process) is a (more) achievable, small(er), still significant thing that lets us side-step countless issues regarding RFC process, community, UX changes, alt designs, etc. At which point in time experimentation with a wrapper would be perfect.