The cabal-dev package

cabal-dev is a tool for managing development builds of
Haskell projects. It supports maintaining sandboxed
cabal-install repositories, and sandboxed ghc package
databases.

By default, it uses a cabal-dev directory under
the current working directory as the sandbox.

For most packages, just use cabal-dev instead of
cabal, and you will get a sandboxed build that
will not install anything (even automatically installed
dependencies) into the user or global ghc package
databases.

If your build depends on patched or unreleased libraries,
you can add them to your sandboxed build environment so
they can be installed by cabal-dev or cabal. Just run:

cabal-dev add-source /path/to/source/code

cabal-dev add-source also supports importing tarballs
into a local cabal repository.