I am a passionate self-taught backend software developer, and a strong advocate for libre software.
- π Coding since 2013.
- πΌ Currently working @ OroraTech.
- π¨βπ» Python is β€οΈ.
- π» NixOS / Awesome / kitty / xonsh.
- π I have a portfolio website with some more information.
- π Checkout my rΓ©sumΓ© for even more detail.
- π« Reach me @ [email protected].
- π² Fun fact: My first program was not a "Hello World" (it was simple R/W in an HC11 Β΅C emulator).
- π Starred brybrant/lava-lamp
- On 18 Aug 2025, 20:03:45
- β‘οΈ Pushed 61 commits in kip93/nix on branch
master
- #4e776a5 Merge pull request #13753 from obsidiansystems/simplify-derivation-goal
Simplify DerivationGoal
in many ways
- #677b1c0 prepare merge queues for nix
- #f64000e Merge pull request #13756 from xokdvium/fix-copy-path-message
libstore: Fix makeCopyPathMessage
- #e74ef41 libstore: Fix makeCopyPathMessage
Old code completely ignored query parameters and it seems ok to keep that behavior. There's a lot of code out there that parses nix code like nix-output-monitor and it can't parse messages like:
> copying path '/nix/store/wha2hi4yhkjmccqhivxavbfspsg1wrsj-source' from 'https://cache.nixos.org' to 'local://'...
Let's not break these tools without a good reason. This goes in line with what other code does by ignoring parameters in logs.
The issue is just in detecting the shorthand notations for the store reference - not in printing the url in logs.
By default the daemon opens a local store with ?path-info-cache-size=0, so that leads to the erronenous 'local://'.
- #4b4895e Merge pull request #13755 from xokdvium/concise-uri-logs
treewide: Remove getUri and replace with getHumanReadableURI where appropriate
- #1b7ffa5 treewide: Remove getUri and replace with getHumanReadableURI where appropriate
The problem with old code was that it used getUri for both the diskCache
as well as logging. This is really bad because it mixes the textual human
readable representation with the caching.
Also using getUri for the cache key is really problematic for the S3 store,
since it doesn't include the endpoint
in the cache key, so it's totally broken.
This starts separating the logging / cache concerns by introducing a
getHumanReadableURI
that should only be used for logging. The caching
logic now instead uses getReference().render(/*withParams=*/false)
exclusively.
This would need to be fixed in follow-ups, because that's really fragile and
broken for some store types (but it was already broken before).
- #e6f3a19 libstore: Fix makeCopyPathMessage after config getUri refactor
- #4a2de1d
DerivationGoal
Make some fields immutable
We can set both during construction, yay!
- #f155dff
DerivationGoal::done
Clean up parameter types
We don't need to ask all these callers to build these single-entry maps for us.
- #c940283
DerivationBuilder
Move output result filtering logic and assert just into the branch where it is not obviously a no op / meeting the assertion.
Add a comment too, while we are at it.
- #14441f9
DerivationGoal
inlinegaveUpOnSubstitution
lambda
We can shuffle around control flow so it's only called once. You'll definitely want to review this diff ignoring whitespace.
- #88275e5
DerivationGoal
slight cleanup of some impure drv logic - #7707d0a Get rid of
filterDrvOutputs
We don't need it any more, because we only used it in the
single-wanted-output DerivationGoal
.
- #766a52c
DerivationOutput
: RemoveoutputKnown
state
Now that DerivationGoal::checkPathValidity
is legible, we can see that
it only sets outputKnown
, and doesn't read it. Likewise, with
co-routines, we don't have tiny scopes that make local variables
difficult. Between these two things, we can simply have
checkPathValidity
return what it finds, rather than mutate some state,
and update everyting to use local variables.
The same transformation could probably be done to the other derivation
goal types (which currently, unfortunately, contain their own
checkPathValidity
s, though they are diverging, and we hope and believe
that they continue to diverge).
- #2324fe3
DerivationBuilder::checkPathValidity
: Big simplify
Store::queryPartialDerivationOutputMap
is nothing but checking
statically-known output paths, and then Store::queryRealisation
, and
we were doing both of those things already. Inline that and simplify,
again taking advantage of the fact that we only care about one output.
- #b6ca60c
DerivationBuilder::checkPathValidity
: SimplifyallValid
calc
Now that the loops is gone, we can just inline this mutation to a single simple expression.
- #2600391 Simplify
DerivationGoal
loop -> if
More taking advantage of single wanted output. Also auto *
not auto
for easy reading.
- #1a6f928 Don't use
InitialOutput
inDerivationGoal
We don't need the wanted
field. Just inline the other two fields.
- #14173d7 Simplify
DerivationGoal
by just storing a singularinitialOutput
We know we want exactly want output in DerivationGoal
now (since
recent refactors), so we can start simplifying things to take advantage
of this.
- #4b6edfc
DerivationBuildingGoal
: Check outputs beforehand
See the comment in the code for details. Some of the code is duplicated for now, but we'll be cleaning that up soon.
- On 18 Aug 2025, 14:37:31
- On 14 Aug 2025, 16:20:35
- π¬ Commented on #13743 Fix Git LFS SSH issues from NixOS/nix
- On 13 Aug 2025, 16:03:14