Skip to content
View kip93's full-sized avatar
🍩
Me want doughnut
🍩
Me want doughnut

Block or report kip93

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
kip93/README.md

πŸ‘‹ Hello world! I'm @kip93

πŸ‘€ About me

I am a passionate self-taught backend software developer, and a strong advocate for libre software.

πŸ’¬ Some facts


πŸ“ˆ Stats

πŸ“š Most used languages

πŸ… Achievements

πŸ“° Recent activity

  • 🌟 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.

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 inline gaveUpOnSubstitution 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: Remove outputKnown 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 checkPathValiditys, 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: Simplify allValid 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 in DerivationGoal

We don't need the wanted field. Just inline the other two fields.

  • #14173d7 Simplify DerivationGoal by just storing a singular initialOutput

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.

Generated with lowlighter/metrics v3.34.0 πŸ› οΈ
Last updated @ 19 Aug 2025, 09:48:59 / All times UTC ⌚

Pinned Loading

  1. nixplusplus nixplusplus Public

    Read-only mirror of ssh://git.kip93.net/nix++

    Nix

  2. qmk-crkbd qmk-crkbd Public

    A custom firmware written for the Corne keyboard, and based on QMK.

    Nix 14

  3. resume resume Public

    My own spin on a LaTeX RΓ©sumΓ© template.

    TeX

  4. lamp lamp Public

    An LED lamp powered by an Arduino board

    C++

  5. e-ink-organiser e-ink-organiser Public

    An e-Paper weather forecast / task organiser

    Python