Have you actually looked into the implications of the implementation of lazy trees? Like the fact that the hash part of paths of inputs is non-deterministic and absolutely random across different paths evaluations? Are you fully aware of all that this entails? E.g. Lazy trees break `builtins.unsafeGetAttrPos` · Issue #171 · DeterminateSystems/nix-src · GitHub goes on being unanswered because the design is fundamentally broken. That was highlighted during review of the upstream patch (Lazy trees v2 by edolstra · Pull Request #13225 · NixOS/nix · GitHub) and that’s why it’s in limbo and never going to be merged as is.
That is not something that nix is about IMO. Is determinism (especially store path hash part calculation) — a fundamental property and strength of the nix language — worth destroying for a quick and dirty way to solve a technical issue? The issues behind lazy trees are not communicated clearly to users and all comments on the technical side of things are met with “enterprise customers don’t care about nondeterminism”. This may be true, but other nix users don’t deserve a half-baked implementation that compromises the integrity of the language as a whole.
Since this isn’t being highlighted clearly anywhere I feel that this has to be clarified, so that everyone knows what they are getting themselves into. All these issues are in plain sight and out there for anyone to see, but they might not be immediately clear to those not familiar with the codebase.