diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # ChangeLog for packdeps
 
+## 0.6.0.0
+
+* Switch to Cabal 3.2
+
 ## 0.5.0.0
 
 * Switch to Cabal 3.0
diff --git a/packdeps.cabal b/packdeps.cabal
--- a/packdeps.cabal
+++ b/packdeps.cabal
@@ -1,5 +1,5 @@
 name:            packdeps
-version:         0.5.0.0
+version:         0.6.0.0
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -19,12 +19,12 @@
 library
     default-language: Haskell2010
     hs-source-dirs: src
-    build-depends:   base                      >= 4.6      && < 5
+    build-depends:   base                      >= 4.14     && < 5
                    , tar                       >= 0.4      && < 0.6
                    , split                     >= 0.1.2.3
                    , bytestring                >= 0.9
                    , text                      >= 0.7
-                   , Cabal                     >= 3.0      && < 3.1
+                   , Cabal                     >= 3.2      && < 3.3
                    , time                      >= 1.1.4
                    , containers                >= 0.2
                    , directory                 >= 1.0
@@ -39,13 +39,14 @@
 
     ghc-options:       -Wall -rtsopts
 
-    build-depends:   base                      >= 4        && < 5
+    build-depends:   base                      >= 4.14     && < 5
                    , Cabal
                    , optparse-applicative      >=0.14 && <0.16
                    , containers
                    , semigroups
                    , process
                    , packdeps
+                   , text
 
 source-repository head
   type:     git
diff --git a/src/Distribution/PackDeps.hs b/src/Distribution/PackDeps.hs
--- a/src/Distribution/PackDeps.hs
+++ b/src/Distribution/PackDeps.hs
@@ -48,6 +48,8 @@
 import Distribution.Parsec.FieldLineStream (fieldLineStreamFromBS)
 import Distribution.Types.CondTree
 import Distribution.Version
+import Distribution.Utils.ShortText
+import qualified Distribution.Utils.ShortText as ShortText
 import qualified Distribution.Fields as F
 import qualified Distribution.Fields.Field as F
 import qualified Distribution.Simple.Utils as U
@@ -204,19 +206,22 @@
 
 -- | Information on a single package.
 data DescInfo = DescInfo
-    { diHaystack :: String
+    { diHaystack :: ShortText
     , diDeps     :: [Dependency]
     , diLibDeps  :: [Dependency]
     , diPackage  :: PackageIdentifier
     , diRevision :: Int
-    , diSynopsis :: String
+    , diSynopsis :: ShortText
     }
     deriving (Show, Read)
 
 -- | Return revision and DescInfo
 getDescInfo :: GenericPackageDescription -> DescInfo
 getDescInfo gpd = DescInfo
-    { diHaystack = map toLower $ author p ++ maintainer p ++ name
+    { diHaystack = ShortText.toShortText $
+                   map toLower $
+                   ShortText.fromShortText $
+                   author p <> maintainer p <> ShortText.toShortText name
     , diDeps     = getDeps gpd
     , diLibDeps  = getLibDeps gpd
     , diPackage  = pi'
@@ -329,8 +334,8 @@
   where
     needle' = map toLower needle
     go PackInfo { piDesc = Just desc } =
-        if needle' `isInfixOf` diHaystack desc &&
-           not ("(deprecated)" `isInfixOf` diSynopsis desc)
+        if needle' `isInfixOf` ShortText.fromShortText (diHaystack desc) &&
+           not ("(deprecated)" `isInfixOf` ShortText.fromShortText (diSynopsis desc))
             then Just desc
             else Nothing
     go _ = Nothing
diff --git a/tools/packdeps-cli.hs b/tools/packdeps-cli.hs
--- a/tools/packdeps-cli.hs
+++ b/tools/packdeps-cli.hs
@@ -4,7 +4,6 @@
 import Control.Monad (liftM)
 import Data.Char (isSpace)
 import Data.List (foldl')
-import Data.Semigroup ((<>))
 import Distribution.PackDeps
 import Distribution.Package (PackageIdentifier (pkgName, pkgVersion), PackageName, unPackageName)
 import Distribution.Text (display)
@@ -12,6 +11,8 @@
 import qualified Distribution.InstalledPackageInfo as IPI
 import System.Exit (exitFailure, exitSuccess)
 import System.Process (readProcess)
+import qualified Data.Text as T
+import Data.Text.Encoding (encodeUtf8)
 
 import qualified Data.Map as Map
 import qualified Options.Applicative as O
@@ -77,7 +78,9 @@
 updateWithGhcPkg newest = do
     output <- readProcess "ghc-pkg" ["dump"] ""
     ipis <- either (fail . show) (return . map snd) $
-        traverse IPI.parseInstalledPackageInfo $ splitPkgs output
+        traverse IPI.parseInstalledPackageInfo $
+        map (encodeUtf8 . T.pack) $
+        splitPkgs output
     return $ foldl' apply newest $ map toPackInfo ipis
   where
     apply :: Newest -> (PackageName, PackInfo) -> Newest
