diff --git a/gnu/local.mk b/gnu/local.mk
index c5c9ff48bb..0deb1ee071 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1731,8 +1731,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/mia-vtk92.patch				\
   %D%/packages/patches/mia-vtk-version.patch			\
   %D%/packages/patches/mingw-w64-6.0.0-gcc.patch		\
-  %D%/packages/patches/mingw-w64-dlltool-temp-prefix.patch	\
-  %D%/packages/patches/mingw-w64-reproducible-gendef.patch	\
   %D%/packages/patches/minisat-friend-declaration.patch		\
   %D%/packages/patches/minisat-install.patch			\
   %D%/packages/patches/miniz-for-pytorch.patch			\
diff --git a/gnu/packages/mingw.scm b/gnu/packages/mingw.scm
index 825a784e0d..e2fb84ce63 100644
--- a/gnu/packages/mingw.scm
+++ b/gnu/packages/mingw.scm
@@ -43,7 +43,7 @@ (define* (make-mingw-w64/implementation machine
     (package
       (name (string-append "mingw-w64" "-" machine
                            (if with-winpthreads? "-winpthreads" "")))
-      (version "11.0.1")
+      (version "12.0.0")
       (source
        (origin
          (method url-fetch)
@@ -51,11 +51,7 @@ (define* (make-mingw-w64/implementation machine
                "mirror://sourceforge/mingw-w64/mingw-w64/"
                "mingw-w64-release/mingw-w64-v" version ".tar.bz2"))
          (sha256
-          (base32 "047f4m37kxf7g8qj23qplrzfd9cirfkkv8d175sfv2zfd7hbqriz"))
-         (patches
-          (search-patches "mingw-w64-6.0.0-gcc.patch"
-                          "mingw-w64-dlltool-temp-prefix.patch"
-                          "mingw-w64-reproducible-gendef.patch"))))
+          (base32 "0bzdprdrb8jy5dhkl2j2yhnr2nsiv6wk2wzxrzaqsvjbmj58jhfc"))))
       (native-inputs `(("xgcc-core" ,(if xgcc xgcc (cross-gcc triplet)))
                        ("xbinutils" ,(if xbinutils xbinutils
                                          (cross-binutils triplet)))
@@ -84,7 +80,14 @@ (define* (make-mingw-w64/implementation machine
              #~(list #$(string-append "--host=" triplet)
                      #$@(if with-winpthreads?
                            #~("--with-libraries=winpthreads")
-                           #~()))
+                           #~())
+                     ;; The default msvcrt changed on 12.0.0 to use UCRT as the
+                     ;; default, this could cause problems with programs expecting
+                     ;; MSVCRT as the default.
+                     ;;
+                     ;; XXX: A new target to use UCRT can be introduced as
+                     ;; the MSYS2 project does, e.g: x86_64-w64-ucrt-mingw32.
+                     "--with-default-msvcrt=msvcrt")
              #:make-flags #~'("DEFS=-DHAVE_CONFIG_H -D__MINGW_HAS_DXSDK=1")
              #:phases
              #~(modify-phases %standard-phases
diff --git a/gnu/packages/patches/mingw-w64-6.0.0-gcc.patch b/gnu/packages/patches/mingw-w64-6.0.0-gcc.patch
deleted file mode 100644
index 036cf79f91..0000000000
--- a/gnu/packages/patches/mingw-w64-6.0.0-gcc.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-This patch includes
-
-   * mingw-w64-headers/include/winnt.h: compile fixes for1 gcc-4.9.3
-   * mingw-w64-headers/crt/math.h: Likewise
-   * mingw-w64-headers/crt/float.h (FLT_EPSILON,DBL_EPSILON,LDBL_EPSILON): Add
-   symbols.
-   * mingw-w64-headers/crt/stat.h (S_ISLNK,S_ISSOCK,S_ISUID,S_ISGID,S_ISLINK):
-   Add symbols.
-   (lstat): Add function.
-   * mingw-w64-headers/crt/_mingw_stat64.h: Likewise
-   * mingw-w64-headers/crt/stdlib.h (realpath): Add function.
-
-Needed for building with gcc-4.9.3 and using with cross-libtool-2.4.6.
-
-Upstream status: not yet presented upstream.
-
-diff --git a/mingw-w64-headers/crt/float.h b/mingw-w64-headers/crt/float.h
-index 5874f4e..bdf4ead 100644
---- a/mingw-w64-headers/crt/float.h
-+++ b/mingw-w64-headers/crt/float.h
-@@ -22,6 +22,15 @@
- #if (__GNUC__ < 4)
- #error Corrupt install of gcc-s internal headers, or search order was changed.
- #else
-+
-+        /* From gcc-4.9.3 float.h.  */
-+        #undef FLT_EPSILON
-+        #undef DBL_EPSILON
-+        #undef LDBL_EPSILON
-+        #define FLT_EPSILON	__FLT_EPSILON__
-+        #define DBL_EPSILON	__DBL_EPSILON__
-+        #define LDBL_EPSILON	__LDBL_EPSILON__
-+
- 	/* #include_next <float_ginclude.h> */
-
-    	/* Number of decimal digits, q, such that any floating-point number with q
-diff --git a/mingw-w64-headers/crt/math.h b/mingw-w64-headers/crt/math.h
-index 1e970f4..99a332f 100644
---- a/mingw-w64-headers/crt/math.h
-+++ b/mingw-w64-headers/crt/math.h
-@@ -216,6 +216,7 @@ extern "C" {
- #endif
-   }
-
-+#if 0
-   __CRT_INLINE long double __cdecl fabsl (long double x)
-   {
- #ifdef __arm__
-@@ -226,6 +227,7 @@ extern "C" {
-     return res;
- #endif
-   }
-+#endif
-
-   __CRT_INLINE double __cdecl fabs (double x)
-   {
-@@ -905,7 +907,7 @@ __mingw_choose_expr (                                         \
- /* 7.12.7.3  */
-   extern double __cdecl hypot (double, double) __MINGW_ATTRIB_DEPRECATED_MSVC2005; /* in libmoldname.a */
-   extern float __cdecl hypotf (float x, float y);
--#ifndef __CRT__NO_INLINE
-+#if 0 //ndef __CRT__NO_INLINE
-   __CRT_INLINE float __cdecl hypotf (float x, float y) { return (float) hypot ((double)x, (double)y);}
- #endif
-   extern long double __cdecl hypotl (long double, long double);
diff --git a/gnu/packages/patches/mingw-w64-dlltool-temp-prefix.patch b/gnu/packages/patches/mingw-w64-dlltool-temp-prefix.patch
deleted file mode 100644
index 432cafc162..0000000000
--- a/gnu/packages/patches/mingw-w64-dlltool-temp-prefix.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-This following patch was originally found at the debian mingw-w64 team's
-mingw-w64 repo located here:
-https://salsa.debian.org/mingw-w64-team/mingw-w64.git
-
-Invoke the following in the aforementioned repo to see the original patch:
-
-  $ git show 4974e2c:debian/patches/dlltool-temp-prefix.patch
-
-Description: Specify dlltool's temp prefix
-Author: Stephen Kitt <steve@sk2.org>
-
-By default dlltool uses its pid for the object files it generates.
-Enforcing its temp prefix allows the files it generates to be
-reproducible.
-
---- a/mingw-w64-crt/Makefile.am
-+++ b/mingw-w64-crt/Makefile.am
-@@ -36,7 +36,7 @@
-   DTDEF32=$(GENLIB) $(DLLTOOLFLAGS32) $(AM_DLLTOOLFLAGS)
-   DTDEF64=$(GENLIB) $(DLLTOOLFLAGS64) $(AM_DLLTOOLFLAGS)
- else
--  AM_DLLTOOLFLAGS=-k --as=$(AS) --output-lib $@
-+  AM_DLLTOOLFLAGS=-k --as=$(AS) --output-lib $@ --temp-prefix $$(basename $@ .a)
-   DLLTOOLFLAGSARM32=-m arm
-   DLLTOOLFLAGSARM64=-m arm64
-   DLLTOOLFLAGS32=--as-flags=--32 -m i386
diff --git a/gnu/packages/patches/mingw-w64-reproducible-gendef.patch b/gnu/packages/patches/mingw-w64-reproducible-gendef.patch
deleted file mode 100644
index 8dbea54ce9..0000000000
--- a/gnu/packages/patches/mingw-w64-reproducible-gendef.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-This following patch was originally found at the debian mingw-w64 team's
-mingw-w64 repo located here:
-https://salsa.debian.org/mingw-w64-team/mingw-w64.git
-
-Invoke the following in the aforementioned repo to see the original patch:
-
-  $ git show 9a33f50:debian/patches/reproducible-build.patch
-
-Description: Drop __DATE__ from gendef and genlib
-Author: Stephen Kitt <skitt@debian.org>
-
-This allows gendef and genlib to be built reproducibly.
-
---- a/mingw-w64-tools/gendef/src/gendef.c
-+++ b/mingw-w64-tools/gendef/src/gendef.c
-@@ -196,7 +196,6 @@
-                    "  By default, the output files are named after their DLL counterparts\n"
-                    "  gendef MYDLL.DLL     Produces MYDLL.def\n"
-                    "  gendef - MYDLL.DLL   Prints the exports to stdout\n");
--  fprintf (stderr, "\nBuilt on %s\n", __DATE__);
-   fprintf (stderr, "\nReport bugs to <mingw-w64-public@lists.sourceforge.net>\n");
-   exit (0);
- }
---- a/mingw-w64-tools/genlib/src/genlib.c
-+++ b/mingw-w64-tools/genlib/src/genlib.c
-@@ -123,7 +123,6 @@
- "Usage example:\n"
- "  By default, the output file is named after the DLL counterpart\n"
- "  genlib mydef.def    Produces libmydll.a\n"
--"\nBuilt on " __DATE__ "\n"
- "\nReport bugs to <martellmalone@gmail.com>\n"
- ;
-
