Switch to a better system for guarding cabal version.
Remove the template haskell trick.