diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index c812ed3b7e..32daf19599 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -33,6 +33,7 @@ (define-module (gnu packages fpga)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
@@ -40,15 +41,18 @@ (define-module (gnu packages fpga)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages build-tools)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages elf)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gdb)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages glib)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
@@ -65,7 +69,6 @@ (define-module (gnu packages fpga)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
-  #:use-module (gnu packages tcl)
   #:use-module (gnu packages version-control))
 
 (define-public abc
@@ -355,38 +358,35 @@ (define-public arachne-pnr
     (license license:gpl2))))
 
 (define-public gtkwave
-  (package
-    (name "gtkwave")
-    (version "3.3.121")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (list (string-append "mirror://sourceforge/gtkwave/"
-                                 "gtkwave-" version "/"
-                                 "gtkwave-" version ".tar.gz")
-                  (string-append "https://gtkwave.sourceforge.net/"
-                                 "gtkwave-" version ".tar.gz")))
-       (sha256
-        (base32 "15w3x3zx5klqg1vjkakixw9zwfnkib7gf376knf5sryakd3bc1av"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     (list gperf pkg-config))
-    (inputs
-     (list tcl tk gtk+-2))
-    (arguments
-     (list #:configure-flags
-           #~(list (string-append "--with-tcl="
-                                  (assoc-ref %build-inputs "tcl")
-                                  "/lib")
-                   (string-append "--with-tk="
-                                  (assoc-ref %build-inputs "tk")
-                                  "/lib"))))
-    (synopsis "Waveform viewer for FPGA simulator trace files")
-    (description "This package is a waveform viewer for FPGA
+  (let ((commit "0a800de96255f7fb11beadb6729fdf670da76ecb")
+        (revision "0"))
+    (package
+      (name "gtkwave")
+      (version (git-version "3.4.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/gtkwave/gtkwave")
+               (commit commit)))
+         (sha256
+          (base32 "113psdcv6a1npfv40gs1cjf9ck342fp31pf4y8msvc2dhcr72l1b"))))
+      (build-system meson-build-system)
+      (native-inputs (list cmake-minimal
+                           desktop-file-utils
+                           flex
+                           `(,glib "bin")
+                           gobject-introspection
+                           gperf
+                           pkg-config))
+      (inputs (list gtk+ gtk
+                    `(,gtk+ "bin")))
+      (synopsis "Waveform viewer for FPGA simulator trace files")
+      (description "This package is a waveform viewer for FPGA
 simulator trace files (@dfn{FST}).")
-    (home-page "https://gtkwave.sourceforge.net/")
-    ;; Exception against free government use in tcl_np.c and tcl_np.h.
-    (license (list license:gpl2+ license:expat license:tcl/tk))))
+      (home-page "https://github.com/gtkwave/gtkwave")
+      ;; Exception against free government use in tcl_np.c and tcl_np.h.
+      (license (list license:gpl2+ license:expat license:tcl/tk)))))
 
 (define-public python-migen
   (package
