If you go the source dependencies way, you cannot add a public method to any of your types, ever. Because that breaks backward source compatibility. Yes, binary compatibility is hard. But source compatibility is *impossible*.
That's my fault, though! All I've done is one talk announcing it so far... I don't know Nix well, but I think Fury is different enough and simple enough not to be just a wrapper around Nix.