diff --git a/gnu/local.mk b/gnu/local.mk
index d0388126900..4cb60ade0ff 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1559,7 +1559,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/guile-lzlib-hurd64.patch			\
   %D%/packages/patches/guile-present-coding.patch		\
   %D%/packages/patches/guile-rsvg-pkgconfig.patch		\
-  %D%/packages/patches/guile-emacs-build-fixes.patch		\
   %D%/packages/patches/gtk2-fix-builder-test.patch		\
   %D%/packages/patches/gtk2-harden-list-store.patch		\
   %D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch	\
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index c5e671c6a98..fb72b275444 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2017, 2019, 2020, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2017, 2023, 2024, 2025 Janneke Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2018, 2023 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2018, 2019, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -69,6 +69,7 @@ (define-module (gnu packages emacs)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages lesstif)   ; motif
   #:use-module (gnu packages linux)     ; alsa-lib, gpm
   #:use-module (gnu packages mail)      ; for mailutils
@@ -639,8 +640,8 @@ (define-public emacs-next-tree-sitter
 
 (define-public guile-emacs
   (let ((upstream-version "31.0.50")
-        (commit "8f87cbc1dae6a9e77368afc5736df8c342e9153d")
-        (revision "0"))
+        (commit "f2d0459d6a4cda8b7c38b6fb12a55f1330ba50fa")
+        (revision "2"))
     (package
       (inherit emacs)
       (name "guile-emacs")
@@ -651,18 +652,25 @@ (define-public guile-emacs
                       (url "https://codeberg.org/lyrra/guilemacs")
                       (commit commit)))
                 (file-name (git-file-name name version))
-                (patches (search-patches "guile-emacs-build-fixes.patch"))
                 (sha256
                  (base32
-                  "1yhxy6d5i673y35i66d2x975zih3cw6p59ylsb8xk68wds6s7xrl"))))
+                  "0ry0dn9xrndpz54hs92dnnsw4xa4qn4lz898ldlh2rs47ah1f4wl"))))
       (native-inputs
        (modify-inputs (package-native-inputs emacs)
          (prepend autoconf automake guile-for-guile-emacs)))
+      (inputs
+       (modify-inputs (package-inputs emacs)
+         (prepend imagemagick)))
       (home-page "https://guile-emacs.org")
+      (synopsis "Emacs text editor powered by Guile('s elisp implementation)")
+      (description
+       "Guile-Emacs brings Emacs and Guile together by providing a new Elisp
+implementation based on Guile's compiler technology, serving as the basis for
+a more expressive and extensible version of Elisp.
+
+Started in 2014 as a GSOC project, Guile-Emacs was resurrected in 2024.")
       (arguments
-       (substitute-keyword-arguments `(;; Tests aren't passing for now.
-                                       #:tests? #f
-                                       #:strip-binaries? #f
+       (substitute-keyword-arguments `(#:strip-binaries? #f
                                        ,@(package-arguments emacs))
          ((#:configure-flags flags ''())
           #~`("CFLAGS=-Og -ggdb3"
@@ -672,6 +680,7 @@ (define-public guile-emacs
               "--with-jpeg=no"
               "--without-cairo"
               "--without-tree-sitter"
+              "--with-imagemagick"
               ,@(fold delete #$flags '("--with-cairo"
                                        "--with-modules"
                                        "--with-native-compilation=aot"))))
diff --git a/gnu/packages/patches/guile-emacs-build-fixes.patch b/gnu/packages/patches/guile-emacs-build-fixes.patch
deleted file mode 100644
index 3fb173b4900..00000000000
--- a/gnu/packages/patches/guile-emacs-build-fixes.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 49e8725b66cb721931a9a5f0f35405e19ccee956 Mon Sep 17 00:00:00 2001
-From: Janneke Nieuwenhuizen <janneke@gnu.org>
-Date: Sat, 7 Dec 2024 20:52:04 +0100
-Subject: [PATCH 1/3] robin's patch.
-
----
- src/gtkutil.c | 4 ++--
- src/print.c   | 5 ++---
- 2 files changed, 4 insertions(+), 5 deletions(-)
-
-diff --git a/src/gtkutil.c b/src/gtkutil.c
-index b1471d56eb9..be72b50c9ef 100644
---- a/src/gtkutil.c
-+++ b/src/gtkutil.c
-@@ -241,13 +241,13 @@ xg_display_open (char *display_name, GdkDisplay **dpy)
- {
-   GdkDisplay *gdpy;
- 
--  unrequest_sigio ();  /* See comment in x_display_ok, xterm.c.  */
-+  // unrequest_sigio ();  /* See comment in x_display_ok, xterm.c.  */
- #ifndef HAVE_PGTK
-   gdpy = gdk_display_open (display_name);
- #else
-   gdpy = gdk_display_open (strlen (display_name) == 0 ? NULL : display_name);
- #endif
--  request_sigio ();
-+  // request_sigio ();
-   if (!gdpy_def && gdpy)
-     {
-       gdpy_def = gdpy;
-diff --git a/src/print.c b/src/print.c
-index 002274bd7da..e2c2251bf5c 100644
---- a/src/print.c
-+++ b/src/print.c
-@@ -2532,9 +2532,8 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag)
-         else
-           scm_write (obj, port);
-         scm_display (SCM_MAKE_CHAR ('>'), port);
--        //guilemacs: this looks wrong (size_byte = -1)
--        //strout (scm_to_locale_string (scm_get_output_string (port)),
--        //        -1, -1, printcharfun);
-+	char* str = scm_to_locale_string (scm_get_output_string (port));
-+	strout (str, strlen(str), strlen(str), printcharfun);
-         scm_close_port (port);
-       }
-       break;
--- 
-2.46.0
-
-From 325fc39906198c33d78e33895e385916099a283f Mon Sep 17 00:00:00 2001
-From: Janneke Nieuwenhuizen <janneke@gnu.org>
-Date: Sat, 7 Dec 2024 19:00:45 +0100
-Subject: [PATCH 2/3] src/xfns.c: Link fix.
-
----
- src/xfns.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/xfns.c b/src/xfns.c
-index 858402613b4..94fde4b9e84 100644
---- a/src/xfns.c
-+++ b/src/xfns.c
-@@ -8921,7 +8921,8 @@ x_hide_tip (bool delete)
-       else
- 	tip_frame = Qnil;
- 
--      return unbind_to (count, was_open);
-+      dynwind_end ();
-+      return was_open;
-     }
- #else /* not USE_GTK */
-   if (NILP (tip_frame)
--- 
-2.46.0
-
-From 7754d875df5c9cb8fefa44604061479108429bce Mon Sep 17 00:00:00 2001
-From: Janneke Nieuwenhuizen <janneke@gnu.org>
-Date: Sat, 7 Dec 2024 20:14:17 +0100
-Subject: [PATCH 3/3] dump fix: comment use of cl-function-documentation.
-
----
- lisp/simple.el | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lisp/simple.el b/lisp/simple.el
-index 15c790226b5..d1ceded84ae 100644
---- a/lisp/simple.el
-+++ b/lisp/simple.el
-@@ -2800,7 +2800,7 @@ command-completion--command-for-this-buffer-function
- '(cl-defmethod function-documentation ((function accessor))
-   (oclosure--accessor-docstring function)) ;; FIXME: η-reduce!
- 
--(cl-defmethod function-documentation ((f cconv--interactive-helper))
-+'(cl-defmethod function-documentation ((f cconv--interactive-helper))
-   (function-documentation (cconv--interactive-helper--fun f)))
- 
- ;; This should be in `oclosure.el' but that file is loaded before `cl-generic'.
--- 
-2.46.0
-
