diff --git a/changelog.txt b/changelog.txt
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,33 +1,37 @@
+2018-05-12 v0.3.0.2 Christian Marie <christian@ponies.io>
+        * compatibility: GHC 8.4.2
+        * plugins: cabal plugin only works with Cabal >=2.2, now optional via the cabal flag
+
 2018-05-12 v0.3.0.1 Christian Marie <christian@ponies.io>
-	* tests: update unit tests
+        * tests: update unit tests
 
 2018-05-12 v0.3.0.0 Christian Marie <christian@ponies.io>
-	* plugins: disable ghc-mod until it builds with ghc 8.x, only latest
-	           stack LTS and beyond will be supported
-	* misc: Setup.hs ported to cabal 2, greatly simplifying things
+        * plugins: disable ghc-mod until it builds with ghc 8.x, only latest
+                   stack LTS and beyond will be supported
+        * misc: Setup.hs ported to cabal 2, greatly simplifying things
 2017-08-25 v0.2.2.2 Christian Marie <christian@ponies.io>
-	* plugins: cabal plugin ignores dubious warning about AllRightsReserved
-	           license
-	* plugins: hlint plugin now exits with correct codes
+        * plugins: cabal plugin ignores dubious warning about AllRightsReserved
+                   license
+        * plugins: hlint plugin now exits with correct codes
 
 2017-08-14 v0.2.2.1 Christian Marie <christian@ponies.io>
-	* dependencies: Bump ghc-mod, hlint and stylish-haskell to be inline
-	                with latest stack-9.0 lts
+        * dependencies: Bump ghc-mod, hlint and stylish-haskell to be inline
+                        with latest stack-9.0 lts
         * plugins: ghc-mod will only work with >=5.8 now due CPP allergy
-	* plugins: packunused plugin now vacuously succeeds if binary not found
+        * plugins: packunused plugin now vacuously succeeds if binary not found
 
 2015-01-30 v0.2.0.1 Christian Marie <christian@ponies.io>
-	* dependencies: Drop list-tries dependency
+        * dependencies: Drop list-tries dependency
 
 2015-01-21 v0.2.0.0 Christian Marie <christian@ponies.io>
-	* plugins: All plugins now support multiple repositories
-	* plugins: Output is formatted and streamed as it is generated
-	* git-vogue: Provide interface for plugin enabling/disabling
-	* git-vogue: Modular VCS architecture introduced
-	* git-vogue: Allow checking of a single file via git-vogue check file
+        * plugins: All plugins now support multiple repositories
+        * plugins: Output is formatted and streamed as it is generated
+        * git-vogue: Provide interface for plugin enabling/disabling
+        * git-vogue: Modular VCS architecture introduced
+        * git-vogue: Allow checking of a single file via git-vogue check file
 
 2015-01-05 v0.1.0.4 Christian Marie <christian@ponies.io>
-	* plugins: Allow disabling of plugins via git config
+        * plugins: Allow disabling of plugins via git config
 
 2015-01-05 v0.1.0.3 Christian Marie <christian@ponies.io>
-	* Initial public release
+        * Initial public release
diff --git a/git-vogue.cabal b/git-vogue.cabal
--- a/git-vogue.cabal
+++ b/git-vogue.cabal
@@ -1,5 +1,5 @@
 name:                git-vogue
-version:             0.3.0.1
+version:             0.3.0.2
 synopsis:            A framework for pre-commit checks.
 description:         Make your Haskell git repositories fashionable.
 homepage:            https://github.com/christian-marie/git-vogue
@@ -57,14 +57,23 @@
                      , optparse-applicative
                      , text
 
+-- Cabal made breaking changes between 2.0 and 2.2, and is going to keep
+-- changing I presume
+Flag cabal
+  Description: build cabal plugin
+  Default: False
+
 executable git-vogue-cabal
+  if flag(cabal)
+    build-depends:       base
+                       , Cabal >= 2.2
+                       , git-vogue
+  else
+    buildable: False
   default-language:    Haskell2010
   scope:               private
   hs-source-dirs:      src
   main-is:             git-vogue-cabal.hs
-  build-depends:       base
-                     , Cabal
-                     , git-vogue
 
 executable git-vogue-hlint
   default-language:    Haskell2010
diff --git a/lib/Git/Vogue/Types.hs b/lib/Git/Vogue/Types.hs
--- a/lib/Git/Vogue/Types.hs
+++ b/lib/Git/Vogue/Types.hs
@@ -16,6 +16,7 @@
 import           Data.Function
 import           Data.Monoid
 import           Data.Ord
+import           Data.Semigroup (Semigroup)
 import           Data.String
 import           Data.Text.Lazy (Text)
 import qualified Data.Text.Lazy as T
@@ -84,7 +85,7 @@
 
 newtype PluginName = PluginName {
     unPluginName :: Text
-} deriving (Show, Ord, Eq, IsString, Monoid)
+} deriving (Show, Ord, Eq, IsString, Semigroup, Monoid)
 
 -- | We want the flexibility of just checking changed files, or maybe checking
 -- all of them.
diff --git a/src/git-vogue-cabal.hs b/src/git-vogue-cabal.hs
--- a/src/git-vogue-cabal.hs
+++ b/src/git-vogue-cabal.hs
@@ -16,9 +16,8 @@
 import           Data.Monoid
 import           Distribution.PackageDescription.Check
 import           Distribution.PackageDescription.Configuration (flattenPackageDescription)
-import           Distribution.PackageDescription.Parse         (readGenericPackageDescription)
+import           Distribution.PackageDescription.Parsec        (readGenericPackageDescription)
 import           Distribution.Simple.Utils                     (defaultPackageDesc,
-                                                                toUTF8,
                                                                 wrapText)
 import           Distribution.Verbosity                        (silent)
 import           Git.Vogue.PluginCommon
@@ -85,4 +84,7 @@
     goodCheck _ = True
 
     printCheckMessages = mapM_ (outputBad . format . explanation)
-    format = toUTF8 . wrapText . ("* "++)
+    -- XXX Cabal changed this between 2.2 and 2, add some formatting again at
+    -- some point.
+    -- format = toUTF8 . wrapText . ("* "++)
+    format = wrapText . ("* "++)
