diff --git a/plugins.cabal b/plugins.cabal
--- a/plugins.cabal
+++ b/plugins.cabal
@@ -1,5 +1,5 @@
 name:               plugins
-version:            1.6.0
+version:            1.6.1
 homepage:           https://github.com/stepcut/plugins
 synopsis:           Dynamic linking for Haskell and C objects
 description:        Dynamic linking and runtime evaluation of Haskell,
@@ -18,7 +18,7 @@
 License-file:       LICENSE
 author:             Don Stewart 2004..2010
 maintainer:         Jeremy Shaw <jeremy@seereason.com>
-cabal-version:      >= 1.6
+cabal-version:      >= 1.10
 build-type:         Configure
 Tested-with:        GHC == 7.4.2
                   , GHC == 7.6.3
@@ -26,13 +26,16 @@
                   , GHC == 7.10.3
                   , GHC == 8.0.2
                   , GHC == 8.2.2
-                  , GHC == 8.6.4
+                  , GHC == 8.6.5
+                  , GHC == 8.8.3
+                  , GHC == 8.10.1
 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,
                     testsuite/makewith/unsafeio/Unsafe.conf.in
 
 library
+    default-language: Haskell2010
     exposed-modules:
             System.Eval,
             System.Eval.Haskell,
@@ -47,7 +50,7 @@
             System.Plugins.Process,
             System.Plugins.Utils
 
-    extensions:           CPP,
+    default-extensions:   CPP,
                           ForeignFunctionInterface
     ghc-options:          -Wall -funbox-strict-fields -fno-warn-missing-signatures
     hs-source-dirs:       src
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
@@ -331,14 +331,14 @@
         in foldr addOnePkg fm ps' : ls
     where
       -- we add each package with and without it's version number and with the full installedPackageId
-      addOnePkg p fm' = addToPkgEnvs (addToPkgEnvs (addToPkgEnvs fm' (display $ sourcePackageId p) p) (display $ installedPackageId p) p)
+      addOnePkg p fm' = addToPkgEnvs (addToPkgEnvs (addToPkgEnvs fm' (display $ sourcePackageId p) p) (display $ packageId p) p)
                                      (packageName p) p
 
       -- if no version number specified, pick the higher version
       addToPkgEnvs = addWithFM higherVersion
 
       higherVersion pkgconf1 pkgconf2
-        | installedPackageId pkgconf1 >= installedPackageId pkgconf2 = pkgconf1
+        | packageId pkgconf1 >= packageId pkgconf2 = pkgconf1
         | otherwise                                                  = pkgconf2
 
 --
@@ -350,7 +350,7 @@
 
 grabDefaultPkgConf :: IO PkgEnvs
 grabDefaultPkgConf = do
-        pc <- configureAllKnownPrograms silent defaultProgramConfiguration
+        pc <- configureAllKnownPrograms silent defaultProgramDb
 #if MIN_VERSION_Cabal(1,24,0)
         (compiler, _platform, _programConfiguration)
            <- configure silent Nothing Nothing pc
@@ -366,7 +366,7 @@
 --
 readPackageConf :: FilePath -> IO [PackageConfig]
 readPackageConf f = do
-    pc <- configureAllKnownPrograms silent defaultProgramConfiguration
+    pc <- configureAllKnownPrograms silent defaultProgramDb
 #if MIN_VERSION_Cabal(1,24,0)
     (compiler, _platform, _programConfiguration)
        <- configure silent Nothing Nothing pc
@@ -491,8 +491,13 @@
 #endif
                 -- If we're loading dynamic libs we need the cbits to appear before the
                 -- real packages.
+#if MIN_VERSION_ghc(8,8,1)
+                settings <- initSysTools (libdir)
+                llvmConfig <- initLlvmConfig (libdir)
+#else
                 settings <- initSysTools (Just libdir)
                 llvmConfig <- initLlvmConfig (Just libdir)
+#endif
                 dflags <- initDynFlags $ defaultDynFlags settings llvmConfig
                 libs <- mapM (findHSlib
 #if MIN_VERSION_ghc(7,8,0)
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
@@ -126,8 +126,13 @@
 readBinIface' hi_path = do
     -- kludgy as hell
 #if MIN_VERSION_ghc(7,2,0)
+#if MIN_VERSION_ghc(8,8,1)
+    mySettings <- initSysTools (libdir) -- how should we really set the top dir?
+    llvmConfig <- initLlvmConfig (libdir)
+#else
     mySettings <- initSysTools (Just libdir) -- how should we really set the top dir?
     llvmConfig <- initLlvmConfig (Just libdir)
+#endif
     dflags <- initDynFlags (defaultDynFlags mySettings llvmConfig)
     e <- newHscEnv dflags
 #else
