These dependencies need to be pulled from the same unstable commit that
cabal2nix is pulled from, otherwise changes to any of them will not be
in effect and possibly break the build.
The contribution guidelines require an unstable version to be leading
with a real version, or if none is available with `0-`.
This is because certain Nix operations split a package's full name into
name and version component starting with the first section starting with
a digit.
cabal2nix-unstable is mostly used for regenerating the Haskell package
set. Thus we should aim to make it quick to rebuild in case its hash
changes because of Haskell related changes.
- cabal2nix is not fussy about the Nix version it uses for nix-env(1)
and we can just assume it is already in PATH like we do for
maintainers/scripts/haskell/*.
- nix-prefetch-scripts causes the most trouble since its python
dependencies depend on pandoc, so many Haskell changes require
an additional Python rebuild when building cabal2nix-unstable.
nix-prefetch-scripts is most likely installed and not necessary in
many cases, e.g. hackage2nix doesn't need them which is the main use
we have for cabal2nix-unstable. For the update scripts that do need
them, we add them to the used nix-shell explicitly.
Based on the Nixpkgs used and the version of nixfmt-rfc-style in that
version, it's likely that not the correct version is used.
Update scripts should instead run within a Nixpkgs development shell
(`nix-shell`/`nix develop`/`direnv`), where the correct version of
`nixfmt` (although `treefmt` should be preferred) is always available.