2024-07-03 Nix team meeting minutes #158

Hi, we’re catching up with unpublished release notes.
157 looks to be very incomplete, so I’ve chosen to merge it into this post.

2024-07-03 Nix team meeting minutes #158

Attendees: @ericson2314, @l-as, @edolstra, @tomberek, @roberth

Notes:

"lock file contains unlocked input" when using (dirty) git+file:// input · Issue #10815 · NixOS/nix · GitHub

fetcher cache sqlite error: table Cache has no column named domain · Issue #10985 · NixOS/nix · GitHub

Error: could not set permissions on '...' to 755: Operation not permitted when using experimental local overlay store · Issue #10991 · NixOS/nix · GitHub

Assigned to @ericson2314

Looks like user error, not a bug.

`builtins.fetchTarball` with a single-file tarball produces an empty derivation · Issue #10983 · NixOS/nix · GitHub

Somewhat related to the code tested here Support hardlinks in tarballs by roberth · Pull Request #1 · DeterminateSystems/nix-src · GitHub

Assigned to Eelco

Shallow fetches of specific revs do not work with all servers · Issue #11012 · NixOS/nix · GitHub

Some repos don’t support it for legitimate security reasons.
We could add a fallback, by detecting the error message.
This adds latency, so it would be nice to know more

  • maybe relying on shallow = false user input is good, but the initial fetch works, so it’s really bad UX to find out later, possibly only on a different host because of cache
  • latency could be reduced by caching the ability to fetch shallowly per URL
  • having two code paths is not great

In this specific case, a fixed-output derivation based fetcher may be better, if it’s only fetching sources, and not doing import, readFile or other IFD.

Would shallow = false; be an acceptable solution for this?

Passing store paths into functions from other flakes causes errors in pure evaluation mode · Issue #11030 · NixOS/nix · GitHub

This may be an IFD-related problem, considering this import in nix-freeze-tree

Could also be caused by recent-ish changes in EvalState to use Source- / InputAccessor for allow-listing the accessible paths.

Maybe it’s only allowing the direct references to the imported outputs; should be allowing whole closures.

Or maybe we should require

  • @Ericson2314: Also looks like they should be using builtins.storePath. Bugs aside, if you don’t use that, and just havea /nix/store/.... path literal, that won’t work with a chroot store.
  • EvalState should recognize that it’s an ok store path to add context for.

Two flakes is not necessary. One flake is enough to reproduce.

Call chain is realisePath -> realiseContext -> addPath -> addPathPrefix; no computeFSClosure or similar. It should compute the closure.

  • @edolstra: EvalState::resolveLookupPathPath does add the entire closure of a path

This was not previously discovered because a lot of IFD only looks at the output, ignoring references.

2024-07-01 Nix team meeting minutes #157

Attendees:
Notes:

Agenda

2 Likes