2023-09-01 Nix team meeting minutes #84

Attendees: We experienced some confusion about the starting time. Meeting started with Tom, Robert, Eelco. Theophane and John joined at 12 UTC, the new time. In the notes, that’s approximately after the nix store ping discussion.


  • Triage (30 min)
  • Discussion / other work


Fix #8838, pathExists: isDir when ends with `/ ` by roberth · Pull Request #8869 · NixOS/nix · GitHub

  • Merged

flake.nix: update nixpkgs: 22.11 → 23.05

  • Need to fix master by either fixing+merging the NixOS 23.05 update or reverting the PR that broke aarch64-linux
    • @edolstra will look into issue in auto uid experimental feature + the coverage issue
  • “vanila” (without our overrides) AWS SDK is buildable on release-23.05 with tests.
    • let’s try building again with the tests, hopefully the AWS tests pass this time.

Overhaul nix flake update

  • assigned for review

Add --query-valid-derivers

  • Merged

Support cross compiling to BSD and CI it

  • Surprise by the small code patch.
  • @edolstra: Do we guarantee support for these new (cross) builds? Should it block a release?
  • @roberth: Let’s make it best-effort.
  • @roberth: We could support without risk by building it in pull request CI.


New CLI stablization work.

nix store gc

What about the gc-related queries?

  • Maybe add --dry-run and --json to nix store gc?
  • or to nix store delete
  • How do we structure the “reverse” queries? Just gc roots? or more?
  • Returning only some things can be confusing
  • Returning everything may be slow
  • @roberth: If we return to little, then the users has to backtrack with docs, and then still run the slow thing, worst of both worlds

nix store ping

What does --json return?
Why does trusted return an int? Change to bool-or-null

TODO copy note from comment on issue

Rename to nix store info.

nix store add-file


@edolstra: benefit of explicit add-file is that it matches fetchurl
@ericson2314: a single command with multiple modes, flags seems more sensible
@thufschmitt: what’s the use case?
@edolstra: generally prefetching
@roberth: also RFC 92 dynamic derivations?
@thufschmitt: seem similar
@ericsion2314: the varying hashing methods have always been a source of confusion to me. Making this explicit is helpful for learning
@edolstra: names?
@roberth: match the code?
Too long and inconvenient
@roberth: short flags that are neatly categorized in the docs?
@edolstra: should match derivation attr recursive, flat
@roberth: recursive should be the default?
Make it match the language? Then it should be recursive or flat
@roberth: ~recursive-or-flat as a mode?~ ~It names the language behavior~ wrong! The language uses recursive in its string coercions.
Should it match outputHashAlgo / outputHashMethod?
@thufschmitt: It would be great for the language and CLI to agree
@ericson2314: I think it is very good if the CLI is “subliminally” teaching people the most compressed/efficient mental model by never missing and opportunity to connect things that are the same. (The less users need to consult the docs the better.) So if recursive hashing is deeply related to NAR hashing, they should share a name. (I took a lot of time to “academically” understand Nix and refine my mental model, but most users won’t take the time to “relearn” that way. So we want to give them the right mental model from the beginning.)

@thufschmitt: Do we want key-value options or flags? (--method=foo or --foo)
@edolstra: Prefer brief options. Would like to avoid string-value for enums.
@roberth: This command is for scripts and power users, so brevity is not a priority.
@tomberek: What should be the CLI guideline?
@edolstra: enum key-value options can always be turned into single flags
@ericson2314: such flags are naturally booleans, whereas we’re dealing with an enum
@roberth: key-value matches the language, matches derivations

@edolstra: We have precendent for flattening enum-valued options to mutually exclusive flags, e.g. sandbox
@roberth: for tab completion we want a consistent prefix
@edolstra: Implementation effort may be higher for enum case
@roberth: Should be close: either you specify more flags, or you specify a string mapping
@ericson2314: Would be happy to implement infra for enum options if still needed.
@ericson3214: Support text for manually adding derivations in aterm format (e.g. for RFC 92, or just for complete coverage)

@tomberek: Let’s also update / clarify the CLI guidelines.


Great to see that there’s discussion around add-path and add-file! The confusion is a very real problem that caused me to open this bug ticket, though I realized it might not really be a bug.

Specifically, I expected the default to be like the derivation builtin.

I agree with the notion that a unified command would make more sense and would be happy support the development there.

1 Like