diff --git a/gnu/local.mk b/gnu/local.mk
index 997b7344ff..9dcc293e4f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1698,7 +1698,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/kobodeluxe-midicon-segmentation-fault.patch	\
   %D%/packages/patches/kobodeluxe-graphics-window-signed-char.patch	\
   %D%/packages/patches/kodi-set-libcurl-ssl-parameters.patch		\
-  %D%/packages/patches/kodi-mesa-eglchromium.patch		\
   %D%/packages/patches/krita-bump-sip-abi-version-to-12.8.patch	\
   %D%/packages/patches/kvmfr-linux-module-fix-build.patch	\
   %D%/packages/patches/kwin-unwrap-executable-name-for-dot-desktop-search.patch\
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index 103329a82b..938fa35e80 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
+;;; Copyright © 2025 André Batista <nandre@riseup.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -256,31 +257,31 @@ (define-public fstrcmp
 (define-public kodi
   (package
     (name "kodi")
-    (version "19.5")
+    (version "21.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/xbmc/xbmc")
-                    (commit (string-append version "-Matrix"))))
+                    (commit (string-append version "-Omega"))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1pfd1ajivr865h0fkpbv778626c4czrvq8650bzqv9aqzh8f36my"))
-              (patches (search-patches "kodi-set-libcurl-ssl-parameters.patch"
-                                       "kodi-mesa-eglchromium.patch"))
+                "1kq35hn7fl8fhsv5xvqb7snsh9lbzix56pafqz8flgc5mrrckm25"))
+              (patches (search-patches "kodi-set-libcurl-ssl-parameters.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
                   (use-modules (guix build utils))
                   (for-each delete-file-recursively
                             '("project/BuildDependencies/"
-                              "tools/codegenerator/groovy/commons-lang-2.6.jar"
-                              "tools/codegenerator/groovy/groovy-all-2.4.4.jar"
                               ;; Purge these sources:
                               ;; "tools/depend/native/JsonSchemaBuilder"
                               ;; "tools/depend/native/TexturePacker"
                               ;; "lib/libUPnP"
                               "lib/libUPnP/Neptune/ThirdParty"
+                              "lib/libUPnP/Platinum/ThirdParty"
+                              "lib/win32"
+                              "tools/android/packaging/gradle/wrapper/gradle-wrapper.jar"
                               "project/Win32BuildSetup/tools/7z"))))))
     (build-system cmake-build-system)
     (arguments
@@ -321,21 +322,45 @@ (define-public kodi
                 "COMMAND groovy")
                (("ARGS \\$\\{JAVA_OPEN_OPTS\\} -cp \"\\$\\{classpath\\}\" groovy.ui.GroovyMain")
                 "ARGS -cp \"${classpath}\" ")
-               (("classpath \\$\\{GROOVY_DIR\\}/groovy-all-\\$\\{GROOVY_VER\\}.jar")
-                "classpath ")
-               (("\\$\\{GROOVY_DIR\\}/commons-lang-\\$\\{COMMONS_VER\\}.jar")
-                (search-input-file inputs "/share/java/commons-lang-2.6.jar"))
+               (("classpath \\$\\{groovy_SOURCE_DIR\\}")
+                (string-append "classpath " (assoc-ref inputs "groovy")))
+               (("\\$\\{apache-commons-lang_SOURCE_DIR\\}")
+                (dirname
+                 (search-input-file
+                  inputs
+                  "/lib/m2/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar")))
+               (("\\$\\{apache-commons-text_SOURCE_DIR\\}")
+                (dirname
+                 (search-input-file
+                  inputs
+                  "/lib/m2/org/apache/commons/commons-text/1.9/commons-text-1.9.jar")))
+               (("FetchContent_MakeAvailable\\(groovy\\)")
+                (string-append "set(groovy_SOURCE_DIR " (assoc-ref inputs "groovy") ")"))
+               (("FetchContent_MakeAvailable\\(apache-commons-lang\\)")
+                (string-append "set(apache-commons-lang_SOURCE_DIR "
+                               (assoc-ref inputs "java-commons-lang3")
+                               "/lib/m2/org/apache/commons/commons-lang3/3.12.0)"))
+               (("FetchContent_MakeAvailable\\(apache-commons-text\\)")
+                (string-append "set(apache-commons-text_SOURCE_DIR "
+                               (assoc-ref inputs "java-commons-text")
+                               "/lib/m2/org/apache/commons/commons-text/1.9)"))
                (("^set\\(GROOVY_VER.*")
                 (string-append "set(GROOVY_VER 3.0.5)\n")))
 
              ;; Prevent the build scripts from calling autoreconf in the
              ;; build stage.  Otherwise, it would undo the bootstrapping
              ;; and shebang patching that we worked so hard for.
-             (substitute* "cmake/modules/FindLibDvd.cmake"
+             (substitute* "cmake/modules/FindLibDvdCSS.cmake"
                ;; The libdvd* sources that we bootstrapped separately are
                ;; unpacked in the build phase. This is our best opportunity
                ;; to make them writable before the build process starts.
-               (("autoreconf -vif") "chmod -R u+w ."))
+               (("\\$\\{AUTORECONF\\} -vif") "chmod -R u+w ."))
+
+             (substitute* "cmake/modules/FindLibDvdNav.cmake"
+               (("\\$\\{AUTORECONF\\} -vif") "chmod -R u+w ."))
+
+             (substitute* "cmake/modules/FindLibDvdRead.cmake"
+               (("\\$\\{AUTORECONF\\} -vif") "chmod -R u+w ."))
 
              (substitute* "xbmc/platform/posix/PosixTimezone.cpp"
                (("/usr/share/zoneinfo")
@@ -353,9 +378,7 @@ (define-public kodi
                (("TEST_F\\(TestSystemInfo, GetOsPrettyNameWithVersion\\)")
                 "TEST_F(TestSystemInfo, DISABLED_GetOsPrettyNameWithVersion)")
                (("TEST_F\\(TestSystemInfo, GetOsName\\)")
-                "TEST_F(TestSystemInfo, DISABLED_GetOsName)")
-               (("TEST_F\\(TestSystemInfo, GetOsVersion\\)")
-                "TEST_F(TestSystemInfo, DISABLED_GetOsVersion)"))
+                "TEST_F(TestSystemInfo, DISABLED_GetOsName)"))
              (substitute* "xbmc/utils/test/TestCPUInfo.cpp"
                (("TEST_F\\(TestCPUInfo, GetCPUFrequency\\)")
                 "TEST_F(TestCPUInfo, DISABLED_GetCPUFrequency)"))
@@ -363,7 +386,10 @@ (define-public kodi
                (("TEST_F\\(TestDateTime, TmOperators\\)")
                 "TEST_F(TestDateTime, DISABLED_TmOperators)")
                (("TEST_F\\(TestDateTime, GetAsTm\\)")
-                "TEST_F(TestDateTime, DISABLED_GetAsTm)"))))
+                "TEST_F(TestDateTime, DISABLED_GetAsTm)"))
+             (substitute* "xbmc/network/test/TestNetwork.cpp"
+               (("TEST_F\\(TestNetwork, PingHost\\)")
+                "TEST_F(TestNetwork, DISABLED_PingHost)"))))
          (add-before 'build 'set-build-environment
            (lambda _
              ;; Some bundled build scripts fall back to /bin/sh
@@ -383,7 +409,8 @@ (define-public kodi
            googletest
            groovy
            openjdk9                     ;like groovy
-           java-commons-lang
+           java-commons-lang3
+           java-commons-text
            libdvdcss/kodi
            libdvdnav/kodi
            libdvdread/kodi
@@ -400,7 +427,7 @@ (define-public kodi
            dcadec
            dbus
            eudev
-           ffmpeg-4
+           ffmpeg
            flac
            flatbuffers
            fmt
@@ -429,6 +456,7 @@ (define-public kodi
            libpng
            libssh
            libtiff
+           libudfread
            libva
            libvorbis
            libxcrypt
@@ -449,6 +477,7 @@ (define-public kodi
            sqlite
            taglib
            tinyxml
+           tinyxml2
            tzdata
            util-linux
            zip
diff --git a/gnu/packages/patches/kodi-mesa-eglchromium.patch b/gnu/packages/patches/kodi-mesa-eglchromium.patch
deleted file mode 100644
index 3324062274..0000000000
--- a/gnu/packages/patches/kodi-mesa-eglchromium.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From https://github.com/xbmc/xbmc/pull/22291/commits/5449652abf0bb9dddd0d796de4120e60f19f89a5
-
-From 5449652abf0bb9dddd0d796de4120e60f19f89a5 Mon Sep 17 00:00:00 2001
-From: Alan Swanson <reiver@improbability.net>
-Date: Mon, 19 Dec 2022 21:28:13 +0200
-Subject: [PATCH] Work around Mesa eglchromium.h removal
-
-I have polished Alan's snippet to buildable state and tested
-on Kodi from Debian sid.
-
-Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
----
- cmake/modules/FindEGL.cmake       | 6 ++++++
- xbmc/windowing/X11/GLContextEGL.h | 4 ++++
- 2 files changed, 10 insertions(+)
-
-diff --git a/cmake/modules/FindEGL.cmake b/cmake/modules/FindEGL.cmake
-index b00fe08a25f95..a68a8db901222 100644
---- a/cmake/modules/FindEGL.cmake
-+++ b/cmake/modules/FindEGL.cmake
-@@ -9,6 +9,7 @@
- # EGL_INCLUDE_DIRS - the EGL include directory
- # EGL_LIBRARIES - the EGL libraries
- # EGL_DEFINITIONS - the EGL definitions
-+# HAVE_EGLEXTANGLE - if eglext_angle.h exists else use eglextchromium.h
- #
- # and the following imported targets::
- #
-@@ -35,6 +36,11 @@ if(EGL_FOUND)
-   set(EGL_LIBRARIES ${EGL_LIBRARY})
-   set(EGL_INCLUDE_DIRS ${EGL_INCLUDE_DIR})
-   set(EGL_DEFINITIONS -DHAS_EGL=1)
-+  include(CheckIncludeFiles)
-+  check_include_files("EGL/egl.h;EGL/eglext.h;EGL/eglext_angle.h" HAVE_EGLEXTANGLE)
-+  if(HAVE_EGLEXTANGLE)
-+    list(APPEND EGL_DEFINITIONS "-DHAVE_EGLEXTANGLE=1")
-+  endif()
- 
-   if(NOT TARGET EGL::EGL)
-     add_library(EGL::EGL UNKNOWN IMPORTED)
-diff --git a/xbmc/windowing/X11/GLContextEGL.h b/xbmc/windowing/X11/GLContextEGL.h
-index 99a6a9024e8c6..afea0b7c43eac 100644
---- a/xbmc/windowing/X11/GLContextEGL.h
-+++ b/xbmc/windowing/X11/GLContextEGL.h
-@@ -13,7 +13,11 @@
- #include "threads/CriticalSection.h"
- 
- #include <EGL/eglext.h>
-+#ifdef HAVE_EGLEXTANGLE
-+#include <EGL/eglext_angle.h>
-+#else
- #include <EGL/eglextchromium.h>
-+#endif
- #include <X11/Xutil.h>
- 
- class CGLContextEGL : public CGLContext
