We don't need to nest `cleanCargoSource` and `path` just to populate a
default value for `name`. As they both ultimately delegate to
`builtins.path`, the nesting can lead to IFD in situations which are
otherwise avoidable
* i.e. if we neither set localSystem/crossSystem, nor add overlays, we
can directly utilize `nixpkgs.legacyPackages.${system}` directly and
avoid re-evaluating nixpkgs an additional time
* crates.io uses the sparse registry by default, and trying to
explicitly register a sparse registry for it results in errors
* Also set nixConfig to include binary cache
With Cargo 1.68.0, sparse registries were made stable. With sparse
registries, index metadata is stored in an HTTP api rather than in
a git repository.
As relevant to Crane, the relevant changes are mostly that registries
do not always start with `registry+` and mostly start with `registry+`
or `sparse+` depending on whether the registry is sparse or not.
This PR adjusts the core of Crane to differentiate between `registry`
and `sparse`, and adds a new sparse registry factory to make things
easy.
---------
Co-authored-by: Ivan Petkov <ivanppetkov@gmail.com>