Iāve asked in the last thread and didnāt get an answer so I will repeat my question here
I thought we decided that lazy trees in their current form have a negative impact on the language due to introducing non-determinism?
Do your customers not care about deterministic path semantics? Are there any surveys showing that people are okay with this? Are people made aware that lazy trees change language semantics?
There is a concern about that on that pull request, however we have not seen any real world impact when path ordering and path equality are different between executions. Given the instability of source path hashes in general, I donāt believe this to be a compelling or concerning semantics change to any use case. Iād be happy to be shown wrong, though!
I commented on that PR that the non-determinism could be solved by mtime-based caching.
Congrats! If you could make it clear for those items listed in the post, whether they are features that are new in Nix or DetNix. Itās probably the latter but I think it takes a thought or two to come to that conclusion and I only have so many per day.
Our changelogs are only ever for Determinate Nix. For upstream Nix, I recommend the release notes:
https://nix.dev/manual/nix/latest/release-notes/release-notes
Anyone with a large monorepo is locked out of flakes anyways for performance reasons, so observing an absolute path already exposes them to non-determinism.
Have you tried working in a monorepo with lazy trees?
Is it possible to try out the open source part of Determinate Nix (GitHub - DeterminateSystems/nix-src: Determinate Nix is the golden path for Nix, for teams of any size.) without the closed sourced determinate-nixd? I think many people (including me) would like to do so if there is an officially supported, fully open sourced variant.
Not really. Theyāre intended to be used as a unity and we canāt vouch for using the nix-src CLI without determinate-nixd.
Could you clarify what you mean by officially supported?
I seeā¦
Maybe not as much as āofficial supportā, but it would be great if DetSys can provide a pathway to try out DetSys Nix (oss, with lazy-trees) without the determinate-nixd component. For example, if I just compile from source (GitHub - DeterminateSystems/nix-src: Determinate Nix is the golden path for Nix, for teams of any size.) without nixd and replace nix.package with it, will my system explode? ![]()
I was hoping for something like āthe open source component would mostly work but if you want the full experience^TM, please install nixdā, e.g. tailscale .app vs oss tailscale cli: Three ways to run Tailscale on macOS Ā· Tailscale Docs (and they make it crystal clear which is open source and which is not).
Thatās just not how Determinate Nix works. Determinate Nixd performs some vital configuration bits that make some jagged edges of Nix (like certificate provisioning) go away and some Determinate Nix features, like the native Linux builder for macOS (see here) donāt work without it. I do understand your desire for this but itās unlikely that weāll provide such a pathway any time in the near future.
Iāve been testing to use Determinateās nix-src without determinate-nixd for a few days in CI and it works. Iāve not switched (yet) my laptop to it however.
@lucperkins, apart from the additional features / polished experience determinate-nixd provides, do you foresee any big issue that could occur when using nix-src without determinate-nixd?
I understand that Determinate Systems donāt want to support this kind of setup because they want to provide a fully integrated Nix experience though.
Edit : Another related question is: after switching to Determinate Nix (with determinate-nixd or not), is it safe to switch back to upstream Nix on the same machine?
- Youāre free to do things that way and if it works for you, great. I canāt really usefully comment beyond that because we donāt vet or test that scenario in any way.
- If you switch from using Determinate Nix to upstream, that should be fine if you first uninstall properly.