
I'm writing a cabal package that provides bindings to a C library. I've written a shell script that will download and build this C library to a subdirectory of the user's HOME(~/.cabal-tmp/{lib,include}). Currently I have the following Setup.hs that automatically runs the script before installing: import Distribution.Simple import Distribution.Simple.Setup import Distribution.PackageDescription import System.Process main :: IO () main = defaultMainWithHooks simpleUserHooks { preConf = buildDeps } buildDeps :: Args -> ConfigFlags -> IO HookedBuildInfo buildDeps _ _ = do rawSystem "sh" ["./scripts/build-deps.sh"] return emptyHookedBuildInfo I've tried adding the following lines: extra-lib-dirs: ${HOME}/.cabal-tmp/lib include-dirs: ${HOME}/.cabal-tmp/include But it complains about syntax errors and I found no other way to expand the user's HOME directory in the .cabal file. If I use relative paths in the 'extra-lib-dirs' an error is reported(cabal 1.16). Full paths are also needed for linking against this package as ghc needs to know the linker flags for the native library. Obviously I cant know the full path the library will be installed in advance, as I dont know the HOME directory of the user installing the package until the Setup.hs script is running. My question: How can I use the Setup.hs hooks to update those two fields dynamically?