diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for patch
 
+## 0.0.8.4
+
+* Support for GHC 9.12
+
 ## 0.0.8.3
 
 * Add support for GHC 9.8 and 9.10
diff --git a/patch.cabal b/patch.cabal
--- a/patch.cabal
+++ b/patch.cabal
@@ -1,13 +1,13 @@
 cabal-version:      >=1.10
 name:               patch
-version:            0.0.8.3
+version:            0.0.8.4
 license:            BSD3
 license-file:       LICENSE
 maintainer:         maintainer@obsidian.systems
 author:             Ryan Trinkle
 stability:          Experimental
 tested-with:
-    ghc ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.1 || ==9.2.5 || ==9.4.5 || ==9.6.1 || ==9.8.2 || ==9.10.1
+    ghc ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.1 || ==9.2.5 || ==9.4.5 || ==9.6.1 || ==9.8.2 || ==9.10.1 || ==9.12.1
     ghcjs ==8.6 || ==8.10
 
 homepage:           https://obsidian.systems
@@ -58,7 +58,7 @@
     default-extensions: PolyKinds
     ghc-options:        -Wall -fwarn-redundant-constraints -fwarn-tabs
     build-depends:
-        base >=4.9 && <=4.21,
+        base >=4.9 && <=4.22,
         constraints-extras >=0.3 && <0.5,
         commutative-semigroups >=0.0 && <0.3,
         containers >=0.6 && <0.8,
@@ -108,7 +108,8 @@
         base,
         directory,
         filepath,
-        filemanip
+        filemanip,
+        patch
 
     if impl(ghc >=9.6)
         buildable: False
diff --git a/src/Data/Functor/Misc.hs b/src/Data/Functor/Misc.hs
--- a/src/Data/Functor/Misc.hs
+++ b/src/Data/Functor/Misc.hs
@@ -55,7 +55,6 @@
 import Data.Some (Some, mkSome)
 import Data.These
 import Data.Type.Equality ((:~:)(Refl))
-import Data.Typeable hiding (Refl)
 
 --------------------------------------------------------------------------------
 -- Const2
@@ -66,7 +65,6 @@
 -- parameter
 data Const2 :: Type -> x -> x -> Type where
   Const2 :: k -> Const2 k v v
-  deriving (Typeable)
 
 -- | Extract the value from a Const2
 unConst2 :: Const2 k v v' -> k
@@ -188,7 +186,6 @@
 data EitherTag l r a where
   LeftTag :: EitherTag l r l
   RightTag :: EitherTag l r r
-  deriving (Typeable)
 
 deriving instance Show (EitherTag l r a)
 deriving instance Eq (EitherTag l r a)
diff --git a/src/Data/Patch.hs b/src/Data/Patch.hs
--- a/src/Data/Patch.hs
+++ b/src/Data/Patch.hs
@@ -30,7 +30,7 @@
 
 -- N.B. Intentionally reexporting `Additive`, the deprecated alias, as
 -- this is a reexport for backwards compatibility.
-import qualified Data.Semigroup.Additive as X
+import Data.Semigroup.Additive as X
 import Data.Patch.Class as X
 import Data.Patch.DMap as X hiding (getDeletions)
 import Data.Patch.DMapWithMove as X
