2023-10-16 Nix team meeting minutes #95

Attendees: @thufschmitt @tomberek @ericson2314 @fricklerhandwerk @edolstra @infinisil

Agenda

  • Assessing concerns with moving forward with flakes stabilisation
  • Reviews

Blockers for stabilizing fetchTree

Making the fetchTree stabilisation depend on rewriting fetchGit with libgit

  • @roberth raised the issue last time
  • Fear that we’ll want to change the API a bit based on that, which should happen before the stabilisation
    • We can decide to fix forward until the next release
  • We shouldn’t make the stabilisation wait forever if that doesn’t happen quickly enough
  • Concerns for breaking changes:
    • git config
    • ssh config
      • libgit works fine fetching over https and the legacy git protocol, but .ssh/config will be ignored
      • @edolstra: libssh2 is supported, but it does not seem to have the right features
        • there is a patch but not upstream yet
      • we could start with adding NixOS tests to prepare the migration to libgit, and then see step by step whether it has all the features we need
  • Advantages of using libgit
    • Accessing files in source trees efficiently
    • Lazy tree uses it for caching
  • Decision: it’s worth doing but it’s not a blocker for stabilising fetchTree

Registry

Not part of the stabilisation.

URI syntax

Not intended to be part of the first stable fetchTree.
The structured attribute version is easier to handle as it has fewer edge-cases.

Agreement on not stabilising the URI syntax for now.

Documentation

Needs a rewrite to reflect reality of stable features.

@fricklerhandwerk will take care of that.

“Fancy” fetchers (mercurial, github, gitlab, sourcehut)

  • mercurial already exists through fetchMercurial, so we should stabilize
  • fetchTarball and fetchUrl are already builtins
  • gitHub is widely used (and useful) for efficiently fetching Nixpkgs
  • Don’t stabilise gitlab and sourcehut yet
    • Those are not as commonly used and it gives us time to fix remaining issues

Git smudging

Smudging allows running arbitrary stuff at fetch time. Do we want to have it run by default? Or at all?

Current behavior:

  • fetchGit doesn’t run smudging
  • github fetches tarballs, and GitHub applies smudging to those

Examples:

$ nix build github:tomberek/export-magic -L
text> /nix/store/8fdx2h960yf292czd4ik2f6fza63wlqh-.version
text> HEAD -> main
text>  (HEAD -> main)
text> f0fe26485056d92e78d84de3daf14a8875548783
text> Tue, 21 Feb 2023 19:51:28 -0500
text> 2023-02-21 19:51:28 -0500
text> 2023-02-21T19:51:28-05:00
text> HEAD -> main
text>  (HEAD -> main)
text> f0fe26485056d92e78d84de3daf14a8875548783
text> Tue, 21 Feb 2023 19:51:28 -0500
text> 2023-02-21 19:51:28 -0500
text> 2023-02-21T19:51:28-05:00

But also:

$ nix build git+ssh://git@github.com/tomberek/export-magic -L
text> /nix/store/8fdx2h960yf292czd4ik2f6fza63wlqh-.version
text> HEAD -> main
text>  (HEAD -> main)
text> f0fe26485056d92e78d84de3daf14a8875548783
text> Tue, 21 Feb 2023 19:51:28 -0500
text> 2023-02-21 19:51:28 -0500
text> 2023-02-21T19:51:28-05:00
text> HEAD -> main
text>  (HEAD -> main)
text> f0fe26485056d92e78d84de3daf14a8875548783
text> Tue, 21 Feb 2023 19:51:28 -0500
text> 2023-02-21 19:51:28 -0500
text> 2023-02-21T19:51:28-05:00

@thufschmitt and @tomberek will look into it.

  • check fetching from GitHub and pure Git

@infinisil: %d is definitely non-deterministic and has caused problems before: Don't use non-deterministic %d with git's export-subst by infinisil · Pull Request #165 · immerrr/lua-mode · GitHub

CLI Stabilisation

`nix store ping` -> `nix store info` by vicky1999 · Pull Request #9150 · NixOS/nix · GitHub

Overhaul completions, redo #6693 by Ericson2314 · Pull Request #8131 · NixOS/nix · GitHub

https://github.com/NixOS/nix/pull/8595

Reviewed by @thufschmitt and @ericson2314