2024-01-26 Nix team meeting minutes #118

Attendees: @roberth @Eelco @thufschmitt, @tomberek
guest: @Dominic

Beefier action runners

  • Using the GH ones would require paying for it, or asking very nicely
    • Hosting it ourselves requires a lot of work
  • Hercules-CI: Still planned. Not before a month though
  • Might ask GitHub for the runners in the meantime
  • Possible for darwin: GitHub Actions - Tart

Nix survey: Any question that we would like to see ask

  • @thufschmitt: Different ways for improving Nix (perf, more features, stabilisation). What do people think we should prioritize?
  • @roberth:
    • How is Nix Provided (NixOS, home-manager, installer)
    • Are you using a more recent Nix version than the default nix.package (NixOS/nix-darwin)
  • @thufschmitt: Which Xp features have you enabled?
  • @Dominic: What is your main usage of Nix?
    • Devenv
    • Packaging
    • Ops
    • Personal
    • Home automation
    • …?
      (+ refine it based on the first answer)

Nix 2.20

  • @roberth: Long overdue, and big one. Anything blocking us?
    • The fetchGit stuff isn’t perfect, but good-enough for a release
  • Decision: Release today or early next week

fetchTree return type

  • We might want to return a path instead of a string
    • @roberth would like to have that in 2.20
    • Would bring the semantics very close to lazy trees
      • except for the /nix/store/virtual<n> impurity problem
    • Would bring some/most(?) of the performance improvement
      • expressions that don’t use ${} or toString on such paths should already benefit from less copying
    • @thufschmitt: Can it be done today?
    • @edolstra: Better to wait after the release

Cleaning the “team review” column

make it possible to add s3 tag to nars when uploading to s3, to allow different retention policy for debug symbols by symphorien · Pull Request #8080 · NixOS/nix · GitHub

Assigned to John for a more generic proposal

Brainstorm:

  • all stores?
  • based on file, or based on external non-store-object “input”?
  • add to narinfo?
  • add to store db?

Add pre-commit hook and CI check, excluding currently unformatted files by roberth · Pull Request #7745 · NixOS/nix · GitHub

https://github.com/NixOS/nix/pull/7745#issuecomment-1912262946

Allow gc-ing with a rootless daemon by thufschmitt · Pull Request #5380 · NixOS/nix · GitHub

https://github.com/NixOS/nix/pull/5380#issuecomment-1912327913

Brainstorm: evaluator performance

  • @tomberek: Interested in doing string optimizations
  • attrset fingertree or similar
  • attrset evaluation method that batches //s where attrsets are expected
    • find the tree of // computations and then do them at once
      • relatedly, @infinisil’s lazy getAttr would make that tree into a specific kind of thunk, but that may not be necessary for performance gain
  • concurrent instantiation vs evaluation (in memory store + async-ish copying)
  • concurrent filterSource function eval vs fetchToStore (use a queue)
  • GHC model full parallelism
    • sparks
    • allow concurrent evaluation of the same thunks, checking periodically to stop redundant threads (have them move to the next spark, etc)
  • various potential changes to representations (needs experimentation)
    • string context currently has two (stringly and compact, or structured non-GCed)
  • tracking issue
1 Like