Use flakes for source fetching

Currently we make use of standard nixpkgs fetchers to download sources. This is a standard approach but it does not allow for overriding in downstream consumers without writing an overlay. To this end, we should make fetchers use flakes for all packages.

I imagine something similar to fire, where we can match the input based on the name. We'll probably have a subflake with all inputs listed there and we can pull the version and outPath attributes from there.