diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+2.8.10
+---
+
+- Support GHC 9.12 (see [#257](https://github.com/GetShopTV/swagger2/pull/257)).
+
 2.8.9
 ---
 
diff --git a/swagger2.cabal b/swagger2.cabal
--- a/swagger2.cabal
+++ b/swagger2.cabal
@@ -1,6 +1,6 @@
 cabal-version:       >=1.10
 name:                swagger2
-version:             2.8.9
+version:             2.8.10
 
 synopsis:            Swagger 2.0 data model
 category:            Web, Swagger
@@ -30,11 +30,12 @@
    || ==9.2.8
    || ==9.6.4
    || ==9.8.1
+   || ==9.12.1
 
 custom-setup
   setup-depends:
-                base < 4.21
-              , Cabal < 3.13
+                base          >=4.9   &&< 4.22
+              , Cabal < 3.15
               , cabal-doctest >=1.0.6 && <1.1
 
 library
@@ -62,11 +63,11 @@
 
   -- GHC boot libraries
   build-depends:
-      base             >=4.9       && <4.21
+      base             >=4.9       && <4.22
     , bytestring       >=0.10.8.1  && <0.13
-    , containers       >=0.5.7.1   && <0.8
-    , template-haskell >=2.11.1.0  && <2.23
-    , time             >=1.6.0.1   && <1.14
+    , containers       >=0.5.7.1   && <0.9
+    , template-haskell >=2.11.1.0  && <2.24
+    , time             >=1.6.0.1   && <1.15
     , transformers     >=0.5.2.0   && <0.7
 
   build-depends:
@@ -104,7 +105,7 @@
   -- From library parat
  -- We need aeson's toEncoding for doctests too
   build-depends:
-      base
+      base                      >=4.9       && <4.22
     , swagger2
     , aeson
     , base-compat-batteries
@@ -144,7 +145,10 @@
 
 test-suite doctests
   -- See QuickCheck note in https://github.com/phadej/cabal-doctest#notes
-  build-depends:    base, doctest, Glob, QuickCheck
+  build-depends:    base                 >=4.9       && <4.22
+                  , doctest
+                  , Glob
+                  , QuickCheck
   default-language: Haskell2010
   hs-source-dirs:   test
   main-is:          doctests.hs
