diff --git a/cabal-toolkit.cabal b/cabal-toolkit.cabal
--- a/cabal-toolkit.cabal
+++ b/cabal-toolkit.cabal
@@ -1,10 +1,17 @@
--- This file has been generated from package.yaml by hpack version 0.17.1.
+-- This file has been generated from package.yaml by hpack version 0.20.0.
 --
 -- see: https://github.com/sol/hpack
+--
+-- hash: bbfe5abf3fb2315c5b297aa754349297649bad1bc491dd3fea8b8b0ee224a4a8
 
 name:           cabal-toolkit
-version:        0.0.3
+version:        0.0.4
 synopsis:       Helper functions for writing custom Setup.hs scripts.
+description:    Helper functions for writing custom Setup.hs scripts.
+                .
+                This is useful to access configuration parameters of a @Cabal@-based project
+                at runtime, e.g. when you want to supply the right
+                @GHC_PACKAGE_PATH@ to @ghc@ oder @ghci@.
 category:       Distribution
 stability:      alpha
 homepage:       https://github.com/TerrorJack/cabal-toolkit#readme
@@ -31,13 +38,15 @@
   other-extensions: TemplateHaskell
   ghc-options: -Wall
   build-depends:
-      base >= 4.10 && < 5
+      Cabal >=1.24 && <2.2
+    , base >=4.9 && <5
     , binary
     , bytestring
     , containers
-    , Cabal >= 2.0 && < 2.2
     , ghc
     , template-haskell
   exposed-modules:
       Distribution.Simple.Toolkit
+  other-modules:
+      Paths_cabal_toolkit
   default-language: Haskell2010
diff --git a/src/Distribution/Simple/Toolkit.hs b/src/Distribution/Simple/Toolkit.hs
--- a/src/Distribution/Simple/Toolkit.hs
+++ b/src/Distribution/Simple/Toolkit.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# OPTIONS_GHC -Wno-deprecations #-}
 {-# OPTIONS_HADDOCK show-extensions #-}
@@ -45,9 +46,11 @@
 import Distribution.Simple.LocalBuildInfo
 import Distribution.Simple.Program
 import Distribution.Simple.Setup
+#if !MIN_VERSION_Cabal(2,0,0)
+import qualified Distribution.Simple.InstallDirs as InstallDirs
+#endif
 import Distribution.System
-import Distribution.Types.BuildInfo
-import Distribution.Types.PackageDescription
+import Distribution.PackageDescription
 import Distribution.Verbosity
 import DynFlags
 import Language.Haskell.TH.Syntax
@@ -103,6 +106,23 @@
 localBuildInfoTypedQ :: Q (TExp LocalBuildInfo)
 localBuildInfoTypedQ = unsafeTExpCoerce localBuildInfoQ
 
+#if !MIN_VERSION_Cabal(2,0,0)
+-- | As defined in @Cabal-2.0.0.2@. See 'Distribution.Simple.InstallDirs.absoluteInstallDirs'.
+absoluteComponentInstallDirs 
+  :: PackageDescription -> LocalBuildInfo
+  -> UnitId
+  -> CopyDest
+  -> InstallDirs FilePath
+absoluteComponentInstallDirs pkg lbi uid copydest =
+  InstallDirs.absoluteInstallDirs
+  (packageId pkg)
+  uid
+  (Distribution.Simple.compilerInfo (compiler lbi))
+  copydest
+  (hostPlatform lbi)
+  (installDirTemplates lbi)
+#endif
+
 {-|
 Retrieve the 'InstallDirs' corresponding to a 'ComponentName', assuming that component does exist and is unique.
 -}
@@ -151,8 +171,11 @@
     prog
     (withPrograms lbi)
 
+
+#if MIN_VERSION_Cabal(2,0,0)
 {-|
-Extract 'PackageDBFlag's from 'LocalBuildInfo' to put into the 'packageDBFlags' field of 'DynFlags'. This is useful to ensure the invocation of GHC API shares the same package databases (e.g. a @stack@ snapshot)
+Extract 'PackageDBFlag's from 'LocalBuildInfo' to put into the 'packageDBFlags' field of 'DynFlags'. 
+This is useful to ensure the invocation of GHC API shares the same package databases (e.g. a @stack@ snapshot)
 -}
 getGHCPackageDBFlags :: LocalBuildInfo -> [PackageDBFlag]
 getGHCPackageDBFlags lbi =
@@ -169,6 +192,21 @@
     single UserPackageDB = PackageDB UserPkgConf
     isSpecific (SpecificPackageDB _) = True
     isSpecific _ = False
+#else
+-- 'PackageDBFlag' is a new wrapper around 'PkgConfRef' introduced in ghc-8.2.1 and Cabal-2.
+-- ghc-8.0.2/Cabal-1.24 has a similar mechanism around 'extraPkgConfs' which was superseded
+-- by 'packageDBFlags'.
+{-|
+Extract 'PkgConfRef's from 'LocalBuildInfo' to be prepended to the 'extraPkgConfs' field of 'DynFlags'. 
+This is useful to ensure the invocation of GHC API shares the same package databases (e.g. a @stack@ snapshot)
+-}
+getGHCPackageDBFlags :: LocalBuildInfo -> [PkgConfRef]
+getGHCPackageDBFlags = reverse . fmap toPkgConfRef . withPackageDB
+  where
+    toPkgConfRef (SpecificPackageDB db) = PkgConfFile db
+    toPkgConfRef GlobalPackageDB = GlobalPkgConf
+    toPkgConfRef UserPackageDB = UserPkgConf
+#endif
 
 endOfFirstLineVersion :: Verbosity -> FilePath -> IO (Maybe Version)
 endOfFirstLineVersion =
