For some reason, the overlay at nix/overlay.nix doesn't appear to be respected
(or, maybe `defaultCrateOverrides` isn't being respected). Either way, this is
necessary for darwin builds to succeed.
Nixpkgs recently gained the ability to fetch cargo dependencies based on
the Cargo.lock file which means we can get rid of all the generated Nix
expressions. The only downside to that is that we are now building
everything in one go and do not have the semi-incremental builds as we
had before.
This required the introduction of an overlay file since ofBorg still
requires openssl 1.0.2. Updating to newer version of openssl also
requires updating the amqp library which requires some more involved
changes.
The php code is only updated to php 7.2 and not 7.3 (the default in
nixpkgs) since there seem to been a few syntax changes that aren't yet
compatible with composer2nix.
In previous versions of the rust infrastructure within nixpkgs we would
have been able to override all crates during the invocation of the
target crate. That `override` feature was removed as it caused a huge
eval overhead for larger projects. We did end up with (n^2)
instantiations of dependencies since they were being overriden on every
invocation of every dependency on every level further down the chain.
The current understanding is that the build tooling that each project is
using (e.g. crate2nix, crate2nix, …) that is driving the actual build
could easily reintroduce that feature without the overhead.
pin to php72