diff --git a/ci/config.sh b/ci/config.sh
index 6927f03a1df3ed375c83fe62e7cff9ff24fccee8..969807370659a2c461e07f0fc64ff32baa11a873 100644
--- a/ci/config.sh
+++ b/ci/config.sh
@@ -77,10 +77,14 @@ echo "Found GHC $version, commit $commit."
 case $version in
   9.2.*)
     #       package                   ticket
+    broken  linear-generics           22917
     ;;
 
   9.4.*)
     #       package                   ticket
+    broken  linear-generics           22546
+    broken  servant-conduit           22915
+    broken  servant-machines          22913
     ;;
 
   9.6.*)
@@ -115,10 +119,14 @@ extra_package mmark
 extra_package doctest 0.21.0
 extra_package tasty
 extra_package pandoc
+extra_package servant-conduit
+extra_package servant-machines
+extra_package linear-generics
 
 # Build-tool packages
 build_tool_package alex
 build_tool_package happy
+build_tool_package c2hs
 
 # $BUILD_MODE controls how head.hackage runs.
 # ===========================================
diff --git a/patches/freer-simple-1.2.1.2.patch b/patches/freer-simple-1.2.1.2.patch
new file mode 100644
index 0000000000000000000000000000000000000000..a5432f308958cb464992545b365ce66a86349e2b
--- /dev/null
+++ b/patches/freer-simple-1.2.1.2.patch
@@ -0,0 +1,13 @@
+diff --git a/src/Control/Monad/Freer/Internal.hs b/src/Control/Monad/Freer/Internal.hs
+index de96a4c..c298790 100644
+--- a/src/Control/Monad/Freer/Internal.hs
++++ b/src/Control/Monad/Freer/Internal.hs
+@@ -153,7 +153,7 @@ instance Monad (Eff effs) where
+   E u q >>= k = E u (q |> k)
+   {-# INLINE (>>=) #-}
+ 
+-instance (MonadBase b m, LastMember m effs) => MonadBase b (Eff effs) where
++instance (Monad b, MonadBase b m, LastMember m effs) => MonadBase b (Eff effs) where
+   liftBase = sendM . liftBase
+   {-# INLINE liftBase #-}
+ 
diff --git a/patches/servant-conduit-0.15.1.patch b/patches/servant-conduit-0.15.1.patch
new file mode 100644
index 0000000000000000000000000000000000000000..540ce0fd2630c141a107a523d3d1d0fdddebdd4a
--- /dev/null
+++ b/patches/servant-conduit-0.15.1.patch
@@ -0,0 +1,13 @@
+diff --git a/servant-conduit.cabal b/servant-conduit.cabal
+index 83a504f..d4e5a0d 100644
+--- a/servant-conduit.cabal
++++ b/servant-conduit.cabal
+@@ -39,7 +39,7 @@ library
+     , conduit       >=1.3.1    && <1.4
+     , mtl           >=2.2.2    && <2.3
+     , resourcet     >=1.2.2    && <1.3
+-    , servant       >=0.15     && <0.19
++    , servant       >=0.15     && <0.20
+     , unliftio-core >=0.1.2.0  && <0.3
+   hs-source-dirs:      src
+   default-language:    Haskell2010
diff --git a/patches/servant-machines-0.15.1.patch b/patches/servant-machines-0.15.1.patch
new file mode 100644
index 0000000000000000000000000000000000000000..65b6c929ade3b754cec5f3645d33c500cc6e8637
--- /dev/null
+++ b/patches/servant-machines-0.15.1.patch
@@ -0,0 +1,13 @@
+diff --git a/servant-machines.cabal b/servant-machines.cabal
+index 79401a1..b7aca6e 100644
+--- a/servant-machines.cabal
++++ b/servant-machines.cabal
+@@ -38,7 +38,7 @@ library
+     , bytestring    >=0.10.8.1 && <0.11
+     , machines      >=0.6.4    && <0.8
+     , mtl           >=2.2.2    && <2.3
+-    , servant       >=0.15     && <0.19
++    , servant       >=0.15     && <0.20
+   hs-source-dirs:      src
+   default-language:    Haskell2010
+   ghc-options: -Wall