Infuse.nix: "deep" `override{Attrs}`, generalizes `pipe` and `recursiveUpdate`

infuse.nix is a “deep” version of both .override and .overrideAttrs. It generalizes both lib.pipe and recursiveUpdate. It can be used as a leaner, untyped alternative to lib.modules (if you want dynamic typechecking, it works well with yants)

There are two mirrors:

A tutorial will be added soon, along with the release of several projects downstream of this.

Short questions/bugs/help-requests can go to #six/hackint (but please keep in mind that I work asynchronously – I may only check once a day).

24 Likes

Replying here instead of continuing to hijack https://discourse.nixos.org/t/im-not-convinced-flake-inputs-should-exist/

Yes, but there’s nothing special about those specializations. You can omit them or use your own instead; there is no magic under the hood.

Please do! My projects are designed to prove that something is in fact possible. The whole goal is to get the ideas recycled into larger projects with more maintainers so I have time to move on to the next thing.

For major perspective shifts, this adoption strategy is more effective than submitting massive PRs.

5 Likes

This is really interesting, and I loved your examples.
I’ll for sure pin this for future usage, thanks!

1 Like

Is there any chance this ever gets merged into upstream?

Someone has to PR it, could be you if you want. Of course there will be additional feedback after the PR is created.

Also of course, be sure to respect the original license and credit appropriately, if you’re PRing literal code from this repo.