diff --git a/patches/persistent-2.14.5.1.patch b/patches/persistent-2.14.5.1.patch
new file mode 100644
index 0000000000000000000000000000000000000000..999c3f1ba8de462fd9ee51f63a9f1edec5b96dee
--- /dev/null
+++ b/patches/persistent-2.14.5.1.patch
@@ -0,0 +1,44 @@
+diff --git a/Database/Persist/TH.hs b/Database/Persist/TH.hs
+index 189261d..5ff719b 100644
+--- a/Database/Persist/TH.hs
++++ b/Database/Persist/TH.hs
+@@ -120,7 +120,7 @@ import Instances.TH.Lift ()
+ import Data.Foldable (asum, toList)
+ import qualified Data.Set as Set
+ import Language.Haskell.TH.Lib
+-       (appT, conE, conK, conT, litT, strTyLit, varE, varP, varT)
++       (appT, conE, conK, conT, litT, strTyLit, varE, varP, varT, plainTV)
+ import Language.Haskell.TH.Quote
+ import Language.Haskell.TH.Syntax
+ import Web.HttpApiData (FromHttpApiData(..), ToHttpApiData(..))
+@@ -2325,7 +2325,15 @@ mkLenses mps entityMap ent = fmap mconcat $ forM (getUnboundFieldDefs ent `zip`
+     where
+         fieldNames = fieldDefToRecordName mps ent <$> getUnboundFieldDefs ent
+ 
+-#if MIN_VERSION_template_haskell(2,17,0)
++#if __GLASGOW_HASKELL__ >= 907
++mkPlainTV
++    :: Name
++    -> TyVarBndr BndrVis
++mkPlainTV n = plainTV n
++
++mkForallTV :: Name -> TyVarBndr Specificity
++mkForallTV n = PlainTV n SpecifiedSpec
++#elif MIN_VERSION_template_haskell(2,17,0)
+ mkPlainTV
+     :: Name
+     -> TyVarBndr ()
+diff --git a/persistent.cabal b/persistent.cabal
+index 857cd8b..47f8775 100644
+--- a/persistent.cabal
++++ b/persistent.cabal
+@@ -17,7 +17,8 @@ extra-source-files: ChangeLog.md README.md
+ library
+     build-depends:   
+         base                     >= 4.11.1.0     && < 5
+-      , aeson                    >= 1.0 && < 2.2
++      , aeson                    >= 1.0 && < 2.3
++      , attoparsec-aeson
+       , attoparsec
+       , base64-bytestring
+       , blaze-html               >= 0.9