What is `nativeCheckInputs`? When should it be used instead of `checkInputs`?

I just noticed that all of the checkInputs have been replaced with nativeCheckInputs. What was the rationale for this change? The treewide commit includes only a very brief description of the changes and doesn’t link to any kind of RFC or anything like that.

So a few questions:

  • What is nativeCheckInputs? When should one use checkInputs vs nativeCheckInputs?
  • What’s the rationale for changing the old checkInputs system?
  • What is the protocol for these sweeping treewide changes? Presumably there’s some discussion and process around them?

cc @symphorien, the commit author

There is more context and a link to the previous discussions started about a year ago about the issue in the commit introducing nativeCheckInputs: nativeCheckInputs by symphorien · Pull Request #206742 · NixOS/nixpkgs · GitHub

nativeCheckInputs are also documented in the manual: Nixpkgs 23.05 manual and in the release notes NixOS 23.05 manual

I’m also adding more high level documentation currently: doc: add a simpler explanation of dependencies by symphorien · Pull Request #213403 · NixOS/nixpkgs · GitHub

I’m intentionally not paraphrasing it here; if you don’t find it clear enough please let me know and maybe we can improve it.

Regarding discussions, besides the issue/PRs (it’s the second attempt), I asked for opinions/oppositions several times on the nixos dev matrix channel. Surprisingly there were very few objections.


Thanks for explaining @symphorien! I appreciate your response, and I’ll go check out these links!