2023-07-28 Nix team meeting minutes #75

Attendees: @roberth @ericson2314 @regnat @edolstra

libexpr: would you like to accept patches that improve error handling in the parser? · Issue #8584 · NixOS/nix · GitHub

Make the parser error tolerant

  • @edolstra: Agree with earlier comment that performance must not regress

  • @thufschmitt: If it’s just those three lines, that may be fine

  • @thufschmitt: In Nickel we use a second parser in case there’s an error (someone had the same request for their language server)

  • Conclusion: we can accept it if there’s no performance regression

builtins.validateAsJSON by kamadorueda · Pull Request #5403 · NixOS/nix · GitHub


  • @thufschmitt: Could be done in pure Nix

  • @edolstra: The library becomes part of the language spec

  • @edolstra: This could be a use case for plugins

  • Conclusion: close

Search any attribute recursively if `recurseForDerivation` is set by ysndr · Pull Request #6936 · NixOS/nix · GitHub

  • Performance hazard: finding the attributes to recurse into requires evaluating all derivations

  • @roberth: cleanAttrs PR might help? Maybe?

  • Conclusion: possibly too slow, talk to package modules working group?

Add reloadability to nix develop by matthewbauer · Pull Request #7235 · NixOS/nix · GitHub

Add reloadability to nix develop

  • @thufschmitt: Not something for Nix to implement

  • @ericson2314: We should (re)consider the division of labor

  • @ericson2314: See @roberth’s comment

  • Conclusion: close

Allow `diff-closures` to output `json` by Pamplemousse · Pull Request #7243 · NixOS/nix · GitHub

  • @edolstra: Should use numbers and null in JSON

  • Conclusion: approved, assign to @edolstra

Add different init systems service files for Nix by unrooted · Pull Request #6558 · NixOS/nix · GitHub

Service files for other init systems

  • @thufschmitt: We don’t have the bandwidth to maintain these

  • @edolstra: Agreed, will bitrot

  • @ericson2341: It’s ok if they add tests

  • @edolstra: That does increase the maintainer load

  • @edolstra: Maybe put it in contrib? But is it actually good?

  • @thufschmitt: Probably good enough for contrib

feat: add :clean command to Nix REPL by aldoborrero · Pull Request #7439 · NixOS/nix · GitHub

  • Currently :lf has a bug that makes the design unclear

  • @ericson2341: What should we roll back to?

  • @ericson2341: An unload command that unloads specific things could be more useful

  • @roberth: What about :l { }

    • Doesn’t remove anything; would have to be a new command
  • @thufschmitt: Restarting should be good enough a solution

Optional `requiredFeatures`: `suggestedFeatures` that only improve remote scheduling · Issue #8316 · NixOS/nix · GitHub

  • @thufschmitt: Maybe redesign how we schedule things?
  • @roberth: What needs to be added?
  • @thufschmitt: The implementation of scheduling and remote scheduling should be redone
  • @roberth: That seems like an implementation level concern, not an addition to the derivation format
  • @edolstra: Do we have more use cases than kvm?
  • @thufschmitt: big-parallel
  • @edolstra: KVM may be a bad example because with support the build tends to time out
  • @ericson2315: Maybe it should be a map where the values says whether is required or suggested
  • @thufschmitt: Bike shedding can be done later
  • Conclusion: idea approved

Configurable substituter disable time by cidkidnix · Pull Request #7424 · NixOS/nix · GitHub

  • Seems like a workaround for allow missing caches
  • @ericson2314: A setting on the binary cache store would be better, not polluting the global settings namespace
  • @thufschmitt: Would prefer to have a smarter error handling logic
  • Conclusion: to discuss

Independently of whether this should be done as a plugin or an external tool or such:

I don’t really think that plugins in their current position are a production ready technology that is yet worth suggesting to solve these kinds of problems. For example, on NixOS, the use of plugins will automatically break Nix if there is a Nix update due to nixos-rebuild running the old Nix with the new configuration (and new ABI incompatible plugin): error: could not dynamically open plugin file … libnix_doc_plugin.so · Issue #237637 · NixOS/nixpkgs · GitHub