By specifying your Cabal files in Haskell, you have the power of Haskell at
your disposal to reduce redundancy. You can also read in trees of module names
dynamically, which saves you from manually maintaining lists of module names.
See the documentation in the "Cartel" module for details.