nix flake check: Skip substitutable derivations#13998
Merged
Mic92 merged 1 commit intoNixOS:masterfrom Sep 15, 2025
Merged
Conversation
Member
Author
|
Looking the binary cache download statistics for the github ASN, I would like to see this in - it saves money and time for everyone. It has been now tested for a while (and is not a very complex change) in the other two implementations. |
Member
|
Per #13574 (comment) and the following, if we can have some sort of "todo remove" in the code, then I am good with this. |
Ericson2314
reviewed
Sep 15, 2025
edolstra
approved these changes
Sep 15, 2025
13f9fa8 to
5febd81
Compare
Since `nix flake check` doesn't produce a `result` symlink, it doesn't actually need to build/substitute derivations that are already known to have succeeded, i.e. that are substitutable. This can speed up CI jobs in cases where the derivations have already been built by other jobs. For instance, a command like nix flake check github:NixOS/hydra/aa62c7f7db31753f0cde690f8654dd1907fc0ce2 should no longer build anything because the outputs are already in cache.nixos.org. Based-on: DeterminateSystems#134 Based-on: https://gerrit.lix.systems/c/lix/+/3841 Co-authored-by: Eelco Dolstra <edolstra@gmail.com>
5febd81 to
ecdda57
Compare
| // not actually produce the outputs. | ||
| auto missing = store->queryMissing(drvPaths); | ||
| // Only occurs if `drvPaths` contains a `DerivedPath::Opaque`, which should never happen | ||
| assert(missing.unknown.empty()); |
Member
There was a problem hiding this comment.
This assert breaks nix flake check in certain cases, not sure why...
Member
There was a problem hiding this comment.
@Mic92 Can you flesh out the thinking here about why it shouldn't ever happen / what it implies if it does?
Member
Author
There was a problem hiding this comment.
Missed that line when reviewing the original pull request.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a rebased version of #13574 Check the previous discussion there.
Since
nix flake checkdoesn't produce aresultsymlink, it doesn't actually need to build/substitute derivations that are already known to have succeeded, i.e. that are substitutable.This can speed up CI jobs in cases where the derivations have already been built by other jobs. For instance, a command like
nix flake check github:NixOS/hydra/aa62c7f7db31753f0cde690f8654dd1907fc0ce2
should no longer build anything because the outputs are already in cache.nixos.org.
Based-on: DeterminateSystems#134
Based-on: https://gerrit.lix.systems/c/lix/+/3841
Motivation
Context
Add 👍 to pull requests you find important.
The Nix maintainer team uses a GitHub project board to schedule and track reviews.