As a developer not of this, but of dynamic derivations in Nix itself, let me put it this way:

A long term end goal is that if you don't change headers and only change is single C/C++, anywhere in the build graph for your entire system you should get a quick recompile of just that file + relink just the executables/shared libraries the output object file is built in.

This will require boiling an oceans, to get all the packages' build systems using Ninja or similar like this. But that's hopefully

- less boiling that rewriting the whole world of open source in Bazel/Buck2.

- a far more incremental, crowd-source-able project, as you could convert packages one-by-one, starting with big builds like LLVM and Chromium as Edgar says.