diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,8 @@
+0.1.1.2
+-------
+* Drop support for GHC < 8.4.
+* Drop flag `use-network-uri` and support for `network-2.5`.
+
 0.1.1.1
 -------
 * Add support for hackage-security-0.6
diff --git a/hackage-security-HTTP.cabal b/hackage-security-HTTP.cabal
--- a/hackage-security-HTTP.cabal
+++ b/hackage-security-HTTP.cabal
@@ -1,6 +1,7 @@
 cabal-version:       1.12
 name:                hackage-security-HTTP
-version:             0.1.1.1
+version:             0.1.1.2
+
 synopsis:            Hackage security bindings against the HTTP library
 description:         The hackage security library provides a 'HttpLib'
                      abstraction to allow to bind against different HTTP
@@ -15,9 +16,19 @@
 homepage:            https://github.com/haskell/hackage-security
 bug-reports:         https://github.com/haskell/hackage-security/issues
 build-type:          Simple
-tested-with:         GHC==8.10.1, GHC==8.8.3, GHC==8.6.5, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2,
-                     GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
 
+tested-with:
+  GHC == 9.10.0
+  GHC == 9.8.2
+  GHC == 9.6.4
+  GHC == 9.4.8
+  GHC == 9.2.8
+  GHC == 9.0.2
+  GHC == 8.10.7
+  GHC == 8.8.4
+  GHC == 8.6.5
+  GHC == 8.4.4
+
 extra-source-files:
   ChangeLog.md
 
@@ -25,17 +36,15 @@
   type: git
   location: https://github.com/haskell/hackage-security.git
 
-flag use-network-uri
-  description: Are we using network-uri?
-  manual: False
-
 library
   exposed-modules:     Hackage.Security.Client.Repository.HttpLib.HTTP
-  build-depends:       base             >= 4.5       && < 4.15,
-                       bytestring       >= 0.9       && < 0.11,
-                       HTTP             >= 4000.2.19 && < 4000.4,
-                       mtl              >= 2.1       && < 2.3,
-                       zlib             >= 0.5       && < 0.7,
+  build-depends:       base             >= 4.11      && < 4.21,
+                       bytestring       >= 0.10.8.2  && < 0.13,
+                       HTTP             >= 4000.2.19 && < 4000.5,
+                       mtl              >= 2.2.2     && < 2.4,
+                       network-uri      >= 2.6       && < 2.7,
+                       network          >= 2.6       && < 3.3,
+                       zlib             >= 0.5       && < 0.8,
                        hackage-security >= 0.5       && < 0.7
   hs-source-dirs:      src
   default-language:    Haskell2010
@@ -47,11 +56,3 @@
                        StandaloneDeriving
   other-extensions:    CPP
   ghc-options:         -Wall
-
-  -- See comments in hackage-security.cabal
-  if flag(use-network-uri)
-    build-depends: network-uri >= 2.6 && < 2.7,
-                   network     >= 2.6 && < 2.9
-                            || >= 3.0 && < 3.2
-  else
-    build-depends: network     >= 2.5 && < 2.6
diff --git a/src/Hackage/Security/Client/Repository/HttpLib/HTTP.hs b/src/Hackage/Security/Client/Repository/HttpLib/HTTP.hs
--- a/src/Hackage/Security/Client/Repository/HttpLib/HTTP.hs
+++ b/src/Hackage/Security/Client/Repository/HttpLib/HTTP.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 -- | Implementation of 'HttpClient' using the HTTP package
 module Hackage.Security.Client.Repository.HttpLib.HTTP (
     withClient
@@ -40,7 +39,7 @@
 --
 -- TODO: This currently uses the lazy bytestring API offered by the HTTP
 -- library. Unfortunately this provides no way of closing the connection when
--- the callback decides it doens't require any further input. It seems
+-- the callback decides it doesn't require any further input. It seems
 -- impossible however to implement a proper streaming API.
 -- See <https://github.com/haskell/HTTP/issues/86>.
 withClient :: (Browser -> HttpLib -> IO a) -> IO a
@@ -62,7 +61,7 @@
     -> IO a
 get browser reqHeaders uri callback = wrapCustomEx $ do
     response <- request browser
-      $ setRequestHeaders reqHeaders
+      $ addRequestHeaders reqHeaders
       -- avoid silly `Content-Length: 0` header inserted by `mkRequest`
       $ removeHeader HTTP.HdrContentLength
       $ HTTP.mkRequest HTTP.GET uri
@@ -78,7 +77,7 @@
 getRange browser reqHeaders uri (from, to) callback = wrapCustomEx $ do
     response <- request browser
       $ setRange from to
-      $ setRequestHeaders reqHeaders
+      $ addRequestHeaders reqHeaders
       -- avoid silly `Content-Length: 0` header inserted by `mkRequest`
       $ removeHeader HTTP.HdrContentLength
       $ HTTP.mkRequest HTTP.GET uri
@@ -133,17 +132,10 @@
 instance Pretty InvalidProxy where
   pretty (InvalidProxy p) = "Invalid proxy " ++ show p
 
-#if MIN_VERSION_base(4,8,0)
 deriving instance Show UnexpectedResponse
 deriving instance Show InvalidProxy
 instance Exception UnexpectedResponse where displayException = pretty
 instance Exception InvalidProxy where displayException = pretty
-#else
-instance Show UnexpectedResponse where show = pretty
-instance Show InvalidProxy where show = pretty
-instance Exception UnexpectedResponse
-instance Exception InvalidProxy
-#endif
 
 {-------------------------------------------------------------------------------
   Additional operations
@@ -234,8 +226,8 @@
     -- See <http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html>
     rangeHeader = "bytes=" ++ show from ++ "-" ++ show (to - 1)
 
-setRequestHeaders :: HTTP.HasHeaders a => [HttpRequestHeader] -> a -> a
-setRequestHeaders =
+addRequestHeaders :: HTTP.HasHeaders a => [HttpRequestHeader] -> a -> a
+addRequestHeaders =
     foldr (.) id . map (uncurry HTTP.insertHeader) . trOpt []
   where
     trOpt :: [(HTTP.HeaderName, [String])]
