2024-11-27 Nix team meeting minutes #198

It seems that we skipped taking notes on Monday. I did some work on meson-based packaging for Nix in Nixpkgs.
I know it’s not the same as these fine human-written notes, but you can find activity in the repo as well, like this or even this. Owh but you knew that ;). Anyway, onwards to today’s notes!


2024-11-27 Nix team meeting minutes #198

Wednesday triage meeting

Attendees: @roberth @mschwaig @edolstra

Triage

Rename content-addressed derivations's "realisation" to "build trace" · Issue #11895 · NixOS/nix · GitHub

@mschwaig: using a realisation both for the process and the data may be ambiguous. Make it hard to talk about the process vs the data.

Next steps: use terminology in documentation with @Ericson2314

builtins.getFlake: Allow inputs to overridden by edolstra · Pull Request #11952 · NixOS/nix · GitHub

Reuses part of the flake.nix syntax, inputs

@roberth: Looks good so far. We’ll have to keep in mind that it’s used here.

@edolstra: follows not supported. Could be added to the LockFlags, which would also benefit the CLI (--follows or similar)
(need to check --override non-flake behavior)

Touches on Reuse input lock files · Issue #7730 · NixOS/nix · GitHub
@roberth: not a blocker

Probably @tomberek is interested
Assigned to @roberth and @tomberek

`eval-okay-fromTOML-timestamps` test fails on `toml11-4.2.0` · Issue #11441 · NixOS/nix · GitHub

We accept the upstream change. Reasons:

  • verbatim is slightly better
  • feature is still experimental
    • perhaps not very important - least resistance

Assigned to @roberth

Systematize `nix build`, `nix shell`, `nix develop`, etc (tracking issue) · Issue #10504 · NixOS/nix · GitHub

Approved: nix dev commands, nix env commands
Rejected: nix package commands

nix profile idea to be specified later.

Sorry @BLANKatGITHUB for taking a while.

Review

Improve support for subflakes by edolstra · Pull Request #10089 · NixOS/nix · GitHub

Not implemented: warning about .. access restriction.
@roberth: Not worried as much anymore about this forward compatibility / performance / UX concern that I head. It’s not to warn.

Reassigned to @roberth @tomberek

@roberth: Layer violation
@edolstra: Would be a big diff and a downcast otherwise
@roberth: Not a downcast if the data model is

data FlakeRef = Flake (SourceRef, Subpath)  -- remote subflake
              | Relative Subpath

data FlakeInput = FlakeRef | SourceRef -- flake = true/false

@edolstra: We could add a non-fetchable libfetchers input scheme to represent this
@roberth: That may be acceptable tech debt, since it does not seem to produce useful functionality. [Although we have a creative community…!]
@edolstra: I could perhaps extend the flake input type instead

data FlakeRef = Flake (SourceRef, Subpath)

data FlakeInput = FlakeRef | Subflake Subpath | SourceRef

Add functionInfo builtin by vkryachko · Pull Request #8961 · NixOS/nix · GitHub

@edolstra: Single function returning attrs feels nicer
@edolstra: Semantic naming may be nice, depending on documentation

  • @roberth: Is {...}: <...> an open function? [referring to the other PR]

@roberth: Recommend against making the name of x: <...> or x@{...}: <...> public, [because it makes renaming unsafe until proven otherwise, whereas in the current situation we know that such a rename is safe (given only local context to avoid capture)]

Flakes: provide robust access to `outPath` through new `meta` argument by roberth · Pull Request #8908 · NixOS/nix · GitHub

Infinite recursion through self.outPath and outputs attrset

outputs = inputs: inputs.something.lib.mkOutputs inputs;
mkOutputs = inputs@{self, ...}:
  ... readDir self.outPath
self = { outPath = ...; } // outputs;
outputs = { nixpkgs, ... }@args: {
  args.meta

}

=> Naively, make call-flake use functionArgs, but this only actually works in some cases; need more info.

@edolstra: outPath isn’t really meta
@edolstra: What about a more explicit rule:
if inputs is in the arguments, use the new calling convention, where inputs is passed as a single attribute to the outputs function

@roberth: { inputs, outPath, ... } require ellipsis too, for forward compatibility, adding other kinds of info

@roberth: Should test against flake-regressions, because we’re stealing a bit of flake syntax.