diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 1.0.6 (2023-04-16)
+
+- Support GHC-8.6.5..GHC-9.10.1
+
 ## 1.0.5 (2021-05-03)
 
 - Add (Template Haskell) `Lift UUID` instance
diff --git a/src/Data/UUID/Types.hs b/src/Data/UUID/Types.hs
--- a/src/Data/UUID/Types.hs
+++ b/src/Data/UUID/Types.hs
@@ -1,8 +1,4 @@
-{-# LANGUAGE CPP         #-}
-
-#if __GLASGOW_HASKELL__ >= 702
 {-# LANGUAGE Trustworthy #-}
-#endif
 
 {- |
 Module      : Data.UUID.Types
diff --git a/src/Data/UUID/Types/Internal.hs b/src/Data/UUID/Types/Internal.hs
--- a/src/Data/UUID/Types/Internal.hs
+++ b/src/Data/UUID/Types/Internal.hs
@@ -2,14 +2,9 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE TypeFamilies       #-}
 {-# LANGUAGE ViewPatterns       #-}
-#if __GLASGOW_HASKELL__ >= 704
 {-# LANGUAGE Unsafe             #-}
-#endif
-#if __GLASGOW_HASKELL__ >=800
 {-# LANGUAGE DeriveLift         #-}
 {-# LANGUAGE StandaloneDeriving #-}
-#endif
-
 {-# OPTIONS_HADDOCK hide #-}
 
 -- |
@@ -76,19 +71,10 @@
 
 import           Data.UUID.Types.Internal.Builder
 
-#if MIN_VERSION_random(1,2,0)
 import           System.Random (Random (..), uniform)
 import           System.Random.Stateful (Uniform (..), uniformWord64)
-#else
-import           System.Random (Random (..), next)
-#endif
 
-#if __GLASGOW_HASKELL__ >=800
 import Language.Haskell.TH.Syntax (Lift)
-#else
-import Language.Haskell.TH (appE, varE)
-import Language.Haskell.TH.Syntax (Lift (..), mkNameG_v, Lit (IntegerL), Exp (LitE))
-#endif
 
 -- | Type representing <https://en.wikipedia.org/wiki/UUID Universally Unique Identifiers (UUID)> as specified in
 --  <http://tools.ietf.org/html/rfc4122 RFC 4122>.
@@ -471,23 +457,13 @@
 -- | Similar to `toASCIIBytes` except we produce a lazy `BL.ByteString`.
 toLazyASCIIBytes :: UUID -> BL.ByteString
 toLazyASCIIBytes =
-#if MIN_VERSION_bytestring(0,10,0)
     BL.fromStrict
-#else
-    BL.fromChunks . return
-#endif
     . toASCIIBytes
 
 -- | Similar to `fromASCIIBytes` except parses from a lazy `BL.ByteString`.
 fromLazyASCIIBytes :: BL.ByteString -> Maybe UUID
 fromLazyASCIIBytes bs =
-    if BL.length bs == 36 then fromASCIIBytes (
-#if MIN_VERSION_bytestring(0,10,0)
-        BL.toStrict bs
-#else
-        B.concat $ BL.toChunks bs
-#endif
-        ) else Nothing
+    if BL.length bs == 36 then fromASCIIBytes (BL.toStrict bs) else Nothing
 
 --
 -- Class Instances
@@ -495,7 +471,6 @@
 
 -- | This 'Random' instance produces __insecure__ version 4 UUIDs as
 -- specified in <http://tools.ietf.org/html/rfc4122 RFC 4122>.
-#if MIN_VERSION_random(1,2,0)
 instance Random UUID where
     random = uniform
     randomR _ = random -- range is ignored
@@ -506,30 +481,7 @@
         w0 <- uniformWord64 gen
         w1 <- uniformWord64 gen
         pure $ buildFromBytes 4 /-/ w0 /-/ w1
-#else
-instance Random UUID where
-    random g = (fromGenNext w0 w1 w2 w3 w4, g4)
-        where (w0, g0) = next g
-              (w1, g1) = next g0
-              (w2, g2) = next g1
-              (w3, g3) = next g2
-              (w4, g4) = next g3
-    randomR _ = random -- range is ignored
 
--- |Build a UUID from the results of five calls to next on a StdGen.
--- While next on StdGet returns an Int, it doesn't provide 32 bits of
--- randomness. This code relies on at last 28 bits of randomness in the
--- and optimizes its use so as to make only five random values, not six.
-fromGenNext :: Int -> Int -> Int -> Int -> Int -> UUID
-fromGenNext w0 w1 w2 w3 w4 =
-    buildFromBytes 4 /-/ (ThreeByte w0)
-                     /-/ (ThreeByte w1)
-                     /-/ w2    -- use all 4 bytes because we know the version
-                               -- field will "cover" the upper, non-random bits
-                     /-/ (ThreeByte w3)
-                     /-/ (ThreeByte w4)
-#endif
-
 -- |A ByteSource to extract only three bytes from an Int, since next on StdGet
 -- only returns 31 bits of randomness.
 type instance ByteSink ThreeByte g = Takes3Bytes g
@@ -622,27 +574,4 @@
 uuidType :: DataType
 uuidType =  mkNoRepType "Data.UUID.Types.UUID"
 
-#if !MIN_VERSION_base(4,5,0)
-unsafeShiftR, unsafeShiftL :: Bits w => w -> Int -> w
-{-# INLINE unsafeShiftR #-}
-unsafeShiftR = shiftR
-{-# INLINE unsafeShiftL #-}
-unsafeShiftL = shiftL
-#endif
-
-#if __GLASGOW_HASKELL__ >=800
 deriving instance Lift UUID
-#else
-instance Lift UUID where
-    lift (UUID w1 w2) = varE fromWords64Name `appE` liftW64 w1 `appE` liftW64 w2
-      where
-        fromWords64Name = mkNameG_v currentPackageKey "Data.UUID.Types.Internal" "fromWords64"
-        liftW64 x = return (LitE (IntegerL (fromIntegral x)))
-
-currentPackageKey :: String
-#ifdef CURRENT_PACKAGE_KEY
-currentPackageKey = CURRENT_PACKAGE_KEY
-#else
-currentPackageKey = "uuid-types-1.0.5"
-#endif
-#endif
diff --git a/src/Data/UUID/Types/Internal/Builder.hs b/src/Data/UUID/Types/Internal/Builder.hs
--- a/src/Data/UUID/Types/Internal/Builder.hs
+++ b/src/Data/UUID/Types/Internal/Builder.hs
@@ -1,8 +1,5 @@
-{-# LANGUAGE CPP          #-}
 {-# LANGUAGE TypeFamilies #-}
-#if __GLASGOW_HASKELL__ >= 704
 {-# LANGUAGE Unsafe       #-}
-#endif
 
 {-# OPTIONS_HADDOCK hide #-}
 
diff --git a/uuid-types.cabal b/uuid-types.cabal
--- a/uuid-types.cabal
+++ b/uuid-types.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.12
 name:               uuid-types
-version:            1.0.5.1
+version:            1.0.6
 copyright:
   (c) 2017-2018 Herbert Valerio Riedel
   (c) 2008-2014 Antoine Latter
@@ -12,21 +12,15 @@
 category:           Data
 build-type:         Simple
 tested-with:
-  GHC ==7.4.2
-   || ==7.6.3
-   || ==7.8.4
-   || ==7.10.3
-   || ==8.0.2
-   || ==8.2.2
-   || ==8.4.4
-   || ==8.6.4
+  GHC ==8.6.5
    || ==8.8.4
    || ==8.10.7
    || ==9.0.2
    || ==9.2.8
-   || ==9.4.7
-   || ==9.6.3
-   || ==9.8.1
+   || ==9.4.8
+   || ==9.6.5
+   || ==9.8.2
+   || ==9.10.1
 
 synopsis:           Type definitions for Universally Unique Identifiers
 description:
@@ -50,14 +44,14 @@
 
 library
   build-depends:
-      base              >=4.5     && <5
-    , binary            >=0.5.1.0 && <0.9
-    , bytestring        >=0.9.2.1 && <0.13
-    , deepseq           >=1.3.0.0 && <1.6
-    , hashable          >=1.2.7.0 && <1.5
-    , random            >=1.1     && <1.3
-    , template-haskell  >=2.7.0.0 && <2.22
-    , text              >=1.2.3.0 && <1.3  || >=2.0 && <2.2
+      base              >=4.12.0.0 && <5
+    , binary            >=0.8.6.0  && <0.9
+    , bytestring        >=0.10.8.2 && <0.13
+    , deepseq           >=1.4.4.0  && <1.6
+    , hashable          >=1.4.4.0  && <1.5
+    , random            >=1.2.1.2  && <1.3
+    , template-haskell  >=2.14.0.0 && <2.23
+    , text              >=1.2.3.0  && <1.3  || >=2.0 && <2.2
 
   exposed-modules:  Data.UUID.Types
 
