Hpack is a format for Haskell packages. It is a modern alternative to the Cabal package format and follows different design principles. The guiding design principles for Hpack are: * Don't require the user to state the obvious, make sensible assumptions by default * Give the user 100% control when needed * Don't require the user to repeat things, facilitate DRYness Hpack packages are described in a file named package.yaml. Both cabal2nix and stack support package.yaml natively. For other build tools the hpack executable can be used to generate a .cabal file from package.yaml.