diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,8 @@
+0.1.1.5
+-------
+* Relax dependency bounds for GHC 9.14.
+* Remove obsolete `deriving Typeable`.
+
 0.1.1.4
 -------
 * Drop support for GHC < 8.4.
diff --git a/hackage-repo-tool.cabal b/hackage-repo-tool.cabal
--- a/hackage-repo-tool.cabal
+++ b/hackage-repo-tool.cabal
@@ -1,6 +1,6 @@
-cabal-version:       1.12
+cabal-version:       1.18
 name:                hackage-repo-tool
-version:             0.1.1.4
+version:             0.1.1.5
 
 build-type:          Simple
 synopsis:            Manage secure file-based package repositories
@@ -23,9 +23,11 @@
 bug-reports:         https://github.com/haskell/hackage-security/issues
 
 tested-with:
-  GHC == 9.10.0
-  GHC == 9.8.2
-  GHC == 9.6.4
+  GHC == 9.14.1
+  GHC == 9.12.2
+  GHC == 9.10.2
+  GHC == 9.8.4
+  GHC == 9.6.7
   GHC == 9.4.8
   GHC == 9.2.8
   GHC == 9.0.2
@@ -34,8 +36,9 @@
   GHC == 8.6.5
   GHC == 8.4.4
 
-extra-source-files:
-  ChangeLog.md README.md
+extra-doc-files:
+  ChangeLog.md
+  README.md
 
 source-repository head
   type: git
@@ -57,25 +60,25 @@
 
   -- For boot libraries we try to accomodate the versions bundled with
   -- the respective GHC release
-  build-depends:       base                 >= 4.11     && < 4.21,
+  build-depends:       base                 >= 4.11     && < 4.23,
                        bytestring           >= 0.10.8.2 && < 0.13,
                        directory            >= 1.3.1.5  && < 1.4,
                        filepath             >= 1.4.2    && < 1.6,
                        network-uri          >= 2.6      && < 2.7,
                        network              >= 2.6      && < 3.3,
-                       time                 >= 1.8.0.2  && < 1.15
+                       time                 >= 1.8.0.2  && < 1.16
   if !os(windows)
     build-depends:     unix                 >= 2.7.2.2  && < 2.9
 
   build-depends:       microlens            >= 0.4.9.1  && < 0.5,
                          -- microlens-0.4.9.1 is the version in Stackage LTS-12.26 (GHC 8.4)
-                       optparse-applicative >= 0.13     && < 0.19,
-                       tar                  >= 0.5      && < 0.7,
+                       optparse-applicative >= 0.13     && < 0.20,
+                       tar                  >= 0.5      && < 0.8,
                        zlib                 >= 0.6      && < 0.8,
                        hackage-security     >= 0.6      && < 0.7
 
   if flag(Cabal-syntax)
-    build-depends: Cabal-syntax >= 3.7 && < 3.14
+    build-depends: Cabal-syntax >= 3.7 && < 3.18
   else
     build-depends: Cabal        >= 2.2.0.1 && < 2.6
                              || >= 3.0     && < 3.7,
@@ -83,8 +86,7 @@
 
 
   default-language:    Haskell2010
-  default-extensions:  DeriveDataTypeable
-                       FlexibleContexts
+  default-extensions:  FlexibleContexts
                        FlexibleInstances
                        NoMonomorphismRestriction
                        ScopedTypeVariables
diff --git a/src/Hackage/Security/RepoTool/Util/IO.hs b/src/Hackage/Security/RepoTool/Util/IO.hs
--- a/src/Hackage/Security/RepoTool/Util/IO.hs
+++ b/src/Hackage/Security/RepoTool/Util/IO.hs
@@ -17,7 +17,6 @@
 import qualified Codec.Compression.GZip            as GZip
 import           Control.Exception
 import qualified Data.ByteString.Lazy              as BS.L
-import           Data.Typeable
 import qualified System.Directory                  as Directory
 import           System.IO.Error
 
@@ -111,7 +110,6 @@
                 go es
 
 data TarGzError = TarGzError FilePath SomeException
-  deriving (Typeable)
 
 instance Exception TarGzError where
   displayException (TarGzError path e) = path ++ ": " ++ displayException e
