I think what would be nice would be if cabal could be the cabal project -> buck project translator.
That would allow any generic cabal project (e.g. ghc) to be buildable via buck.

I mean, that's pretty much what I've done :-) The Buck2 build system is based on https://hackage.haskell.org/package/cabal-buck2

The differences between a generic Cabal project and GHC amount to (currently) 1400 lines of extra stuff. I'd say most of this is to deal with stages, the RTS, and building a GHC libdir. I think that's quite reasonable, there's a limit to how much GHC-specific stuff you would want to move into Cabal.

I fully agree. None. Teach cabal about stages is worth it simply because it allows cabal to also work for cross compilers properly. (setup.hs, and similar need to be built by a differnt compiler than your actual library/executable). So this work is adding generic support, which then just happens making GHC buildable.

And that’s not some hypothetical. The GitHub.com/stable-haskell/ghc builds with a slightly modified cabal-install today. 

Yes there is some rejigging of the it’s, but it’s expressible and buildable with a cabal-install with dual compiler (build and host) support, today.

I’m trying to get Andrea to take interest in the cabal-buck2 project 😅