diff --git a/plugins.cabal b/plugins.cabal
--- a/plugins.cabal
+++ b/plugins.cabal
@@ -1,5 +1,5 @@
 name:               plugins
-version:            1.5.5.0
+version:            1.5.6.0
 homepage:           http://hub.darcs.net/stepcut/plugins
 synopsis:           Dynamic linking for Haskell and C objects
 description:        Dynamic linking and runtime evaluation of Haskell,
@@ -20,12 +20,11 @@
 maintainer:         Jeremy Shaw <jeremy@seereason.com>
 cabal-version:      >= 1.6
 build-type:         Configure
-Tested-with:        GHC == 7.0.*
--- not working                  , GHC == 7.2.*
-                  , GHC == 7.4.*
+Tested-with:        GHC == 7.4.*
                   , GHC == 7.6.*
                   , GHC == 7.8.*
                   , GHC == 7.10.*
+                  , GHC == 8.0.*
 extra-source-files: config.guess, config.h.in, config.mk.in, config.sub,
                     configure, configure.ac, install.sh, Makefile,
                     testsuite/makewith/io/TestIO.conf.in,
diff --git a/src/System/Plugins/Env.hs b/src/System/Plugins/Env.hs
--- a/src/System/Plugins/Env.hs
+++ b/src/System/Plugins/Env.hs
@@ -323,7 +323,14 @@
 grabDefaultPkgConf :: IO PkgEnvs
 grabDefaultPkgConf = do
         pc <- configureAllKnownPrograms silent defaultProgramConfiguration
+#if MIN_VERSION_Cabal(1,24,0)
+        (compiler, _platform, _programConfiguration)
+           <- configure silent Nothing Nothing pc
+        pkgIndex <- getInstalledPackages silent compiler
+                        [GlobalPackageDB, UserPackageDB] pc
+#else
         pkgIndex <- getInstalledPackages silent [GlobalPackageDB, UserPackageDB] pc
+#endif
         return $ [] `union` allPackages pkgIndex
 
 --
@@ -332,7 +339,13 @@
 readPackageConf :: FilePath -> IO [PackageConfig]
 readPackageConf f = do
     pc <- configureAllKnownPrograms silent defaultProgramConfiguration
+#if MIN_VERSION_Cabal(1,24,0)
+    (compiler, _platform, _programConfiguration)
+       <- configure silent Nothing Nothing pc
+    pkgIndex <- getInstalledPackages silent compiler [GlobalPackageDB, UserPackageDB, SpecificPackageDB f] pc
+#else
     pkgIndex <- getInstalledPackages silent [GlobalPackageDB, UserPackageDB, SpecificPackageDB f] pc
+#endif
     return $ allPackages pkgIndex
 
 -- -----------------------------------------------------------
diff --git a/src/System/Plugins/Load.hs b/src/System/Plugins/Load.hs
--- a/src/System/Plugins/Load.hs
+++ b/src/System/Plugins/Load.hs
@@ -72,11 +72,16 @@
 -- import Language.Hi.Parser
 import BinIface
 import HscTypes
-#if MIN_VERSION_ghc(7,10,0)
-import Module (moduleName, moduleNameString, packageKeyString)
+
+import Module (moduleName, moduleNameString)
+#if MIN_VERSION_ghc(8,0,0)
+import Module (unitIdString)
+#elif MIN_VERSION_ghc(7,10,0)
+import Module (packageKeyString)
 #else
-import Module (moduleName, moduleNameString, packageIdString)
+import Module (packageIdString)
 #endif
+
 import HscMain (newHscEnv)
 import TcRnMonad (initTcRnIf)
 
@@ -705,7 +710,9 @@
 
                 -- and find some packages to load, as well.
                 let ps = dep_pkgs ds
-#if MIN_VERSION_ghc(7,10,0)
+#if MIN_VERSION_ghc(8,0,0)
+                ps' <- filterM loaded . map unitIdString . nub $ map fst ps
+#elif MIN_VERSION_ghc(7,10,0)
                 ps' <- filterM loaded . map packageKeyString . nub $ map fst ps
 #elif MIN_VERSION_ghc(7,2,0)
                 ps' <- filterM loaded . map packageIdString . nub $ map fst ps
