It is becoming increasingly clear that improvements to Nixpkgs will benefit
disproportionately the weapons industry. Consequently, my semi-regular
involvement in its development will come to an end (at least for now, but given
how long the situation has been ongoing, realistically this is going to be more
a resignation than an indefinite strike). Let me end with some dedications:
* To everyone who has already left because they realised the issue years ago.
You were right, and I failed you by not listening. If we ever cross paths
again, I hope we will be able to work with each other rather than against
like this time, because (only) together we are strong.
* To everyone working in the weapons industry. May God bless you with the
ability to put your skills to better use elsewhere. What is needed is more
welfare, less warfare.
* To everyone who has worked on, is working on, and will work on the free and
open-source software. Both for sharing something useful, and for offering
learning opportunities by working together. Great things can be achieved when
one works for all, and all work for one.
* To everyone who has been harmed, directly or indirectly, by the development
of Nixpkgs, including but not limited to by my own involvement. Striving to
not repeat this is imperative, but no excuse.
Unlike regular input-addressed or fixed-output derivations, floating and
deferred derivations do not have their store path available at evaluation time,
so their outPath is a placeholder. The following changes are needed for
replaceDependencies to continue working:
* Detect the placeholder and retrieve the store path using another IFD hack
when collecting the rewrite plan.
* Try to obtain the derivation name needed for replaceDirectDependencies from
the derivation arguments if a placeholder is detected.
* Move the length mismatch detection to build time, since the placeholder has a
fixed length which is unrelated to the store path.
The tests cannot be directly built by Hydra, because replaceDependencies relies
on IFD. Instead, they are put inside a NixOS test where they are built on the
guest.