Determinate Nix 3.8.0 changelog: a faster nix flake check, improved flake locks, and lazy trees rolled out to 20% of users

6 Likes

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?

8 Likes

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!

1 Like

I commented on that PR that the non-determinism could be solved by mtime-based caching.

2 Likes

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.

1 Like

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

1 Like

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.

1 Like

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.

6 Likes

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? :laughing:

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).

6 Likes

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?

2 Likes
  1. 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.
  2. If you switch from using Determinate Nix to upstream, that should be fine if you first uninstall properly.
1 Like