haskell dependencies need to be cached somehow
different packages have same dependencies with same versions, however when building those packages all their dependencies are redownloaded from hackage and rebuilt again, making the entire build process extremely slower than it can be, especially at low network bandwidth, and it can be quite costly if connection to network itself is metered
having a template that simply adds those dependencies to $source solves the problem of redownloading
packaging every dependency individually solves both the problem of redownloading and the problem of rebuilding, which is especially important at laptops and hardware with little RAM and weak CPU
whatever of those solutions is used it's easier to decide on versions of dependencies by taking a config from stackage which is appropriate for current ghc version, for ghc 9.0.2 that is https://www.stackage.org/lts-19.19/cabal.config