diff --git a/shake-ext.cabal b/shake-ext.cabal
--- a/shake-ext.cabal
+++ b/shake-ext.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: shake-ext
-version: 2.7.0.4
+version: 2.7.0.5
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
@@ -42,11 +42,11 @@
     default-language: Haskell2010
     ghc-options: -Wall
     build-depends:
-        base >=4.10 && <5,
+        base >=4.11 && <5,
         shake -any,
         composition-prelude -any,
         directory -any,
-        Cabal >=2.0,
+        Cabal >=2.2,
         template-haskell -any
     
     if flag(development)
diff --git a/src/Development/Shake/C.hs b/src/Development/Shake/C.hs
--- a/src/Development/Shake/C.hs
+++ b/src/Development/Shake/C.hs
@@ -26,7 +26,6 @@
 
 import           Control.Monad
 import           Data.List                  (isPrefixOf, isSuffixOf)
-import           Data.Semigroup
 import           Development.Shake
 import           Development.Shake.FilePath
 import           System.Directory           (removeFile)
diff --git a/src/Development/Shake/CCJS.hs b/src/Development/Shake/CCJS.hs
--- a/src/Development/Shake/CCJS.hs
+++ b/src/Development/Shake/CCJS.hs
@@ -1,7 +1,6 @@
 module Development.Shake.CCJS ( ccjs
                               ) where
 
-import           Data.Semigroup
 import           Development.Shake
 import           Development.Shake.FilePath
 import           System.Directory           (createDirectoryIfMissing)
diff --git a/src/Development/Shake/Cabal.hs b/src/Development/Shake/Cabal.hs
--- a/src/Development/Shake/Cabal.hs
+++ b/src/Development/Shake/Cabal.hs
@@ -8,26 +8,26 @@
                                , platform
                                , hsCompiler
                                -- * Reëxports from "Distribution.Version"
-                               , showVersion
+                               , prettyShow
                                ) where
 
 import           Control.Arrow
 import           Control.Composition
 import           Control.Monad
-import           Data.Foldable                         (toList)
-import           Data.Maybe                            (catMaybes)
-import           Data.Semigroup
-import           Development.Shake                     hiding (doesFileExist)
-import qualified Development.Shake                     as Shake
+import           Data.Foldable                          (toList)
+import           Data.Maybe                             (catMaybes)
+import           Development.Shake                      hiding (doesFileExist)
+import qualified Development.Shake                      as Shake
 import           Distribution.ModuleName
 import           Distribution.PackageDescription
-import           Distribution.PackageDescription.Parse
+import           Distribution.PackageDescription.Parsec
+import           Distribution.Pretty
 import           Distribution.Types.CondTree
 import           Distribution.Types.PackageId
-import           Distribution.Verbosity                as Distribution
+import           Distribution.Verbosity                 as Distribution
 import           Distribution.Version
-import           System.Directory                      (doesFileExist)
-import           System.Info                           (arch, os)
+import           System.Directory                       (doesFileExist)
+import           System.Info                            (arch, os)
 
 data HsCompiler = GHC { _suff :: Maybe String -- ^ Compiler version
                       }
diff --git a/src/Development/Shake/Elm.hs b/src/Development/Shake/Elm.hs
--- a/src/Development/Shake/Elm.hs
+++ b/src/Development/Shake/Elm.hs
@@ -1,7 +1,6 @@
 module Development.Shake.Elm ( elmMake
                              ) where
 
-import           Data.Semigroup
 import           Development.Shake
 
 elmMake :: [FilePath] -- ^ Source files
diff --git a/src/Development/Shake/Version.hs b/src/Development/Shake/Version.hs
--- a/src/Development/Shake/Version.hs
+++ b/src/Development/Shake/Version.hs
@@ -6,6 +6,12 @@
                                  , pandocVersion
                                  ) where
 
+import           Development.Shake
 import           Development.Shake.TH
 
-$(mkVersions ["pandoc", "ghc", "cabal"])
+ghcVersion :: Action String
+ghcVersion = do
+    ~(Stdout o) <- command mempty "ghc" ["--numeric-version"]
+    pure o
+
+$(mkVersions ["pandoc", "cabal"])
