diff --git a/patches/regex-pcre-0.94.4.patch b/patches/regex-pcre-0.94.4.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e3604bc5ee87e950040b36cf91cffa5b8d74b25a
--- /dev/null
+++ b/patches/regex-pcre-0.94.4.patch
@@ -0,0 +1,31 @@
+diff --git a/Text/Regex/PCRE/Wrap.hsc b/Text/Regex/PCRE/Wrap.hsc
+index 7201581..688801a 100644
+--- a/Text/Regex/PCRE/Wrap.hsc
++++ b/Text/Regex/PCRE/Wrap.hsc
+@@ -69,6 +69,8 @@ module Text.Regex.PCRE.Wrap(
+   retNoSubstring
+   ) where
+ 
++import qualified Control.Monad.Fail as Fail
++
+ #if defined(HAVE_PCRE_H)
+ import Control.Monad(when)
+ import Data.Array(Array,accumArray)
+@@ -140,7 +142,7 @@ configUTF8 :: Bool
+ 
+ (=~)  :: (RegexMaker Regex CompOption ExecOption source,RegexContext Regex source1 target)
+       => source1 -> source -> target
+-(=~~) :: (RegexMaker Regex CompOption ExecOption source,RegexContext Regex source1 target,Monad m)
++(=~~) :: (RegexMaker Regex CompOption ExecOption source,RegexContext Regex source1 target,Fail.MonadFail m)
+       => source1 -> source -> m target
+ 
+ #if defined(HAVE_PCRE_H)
+@@ -160,7 +162,7 @@ instance RegexOptions Regex CompOption ExecOption where
+                q = makeRegex r
+            in match q x
+ 
+--- (=~~) ::(RegexMaker Regex CompOption ExecOption source,RegexContext Regex source1 target,Monad m) => source1 -> source -> m target
++-- (=~~) ::(RegexMaker Regex CompOption ExecOption source,RegexContext Regex source1 target,Fail.MonadFail m) => source1 -> source -> m target
+ (=~~) x r = do (q :: Regex) <-  makeRegexM r
+                matchM q x
+