Subject: bug#52530: closed (Re: bug#52530: [PATCH core-updates-frozen] WIP: Add rust-gtk4 and dependencies)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 27 Jan 2024 03:16:02 +0000

Your bug report

#52530: [PATCH core-updates-frozen] WIP: Add rust-gtk4 and dependencies

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
52530: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52530
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#52530: [PATCH core-updates-frozen] WIP: Add rust-gtk4 and dependencies
From: Maxim Cournoyer <[email-masked]>
To: Herman Rimm <[email-masked]>
Cc: [email-masked]
Date: Fri, 26 Jan 2024 22:15:33 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi Herman,

Herman Rimm <[email-masked]> writes:

> Hi Maxim,
>
> Apologies, it seems rust-gtk4-rs and dependency packages were also
> written by Sergio Pastor Pérez and merged into rust-team. Aside from the
> descriptions and comments, the diff is:
>
> diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
> index 51f02788d3..6d419c0318 100644
> --- a/gnu/packages/crates-gtk.scm
> +++ b/gnu/packages/crates-gtk.scm
> @@ -2660,14 +2660,13 @@ (define-public rust-gtk4-macros-0.7
>                         ("rust-proc-macro2" ,rust-proc-macro2-1)
>                         ("rust-quick-xml" ,rust-quick-xml-0.30)
>                         ("rust-quote" ,rust-quote-1)
> -                       ("rust-gtk4" ,rust-gtk4-0.7)
>                         ("rust-syn" ,rust-syn-1))
>         #:cargo-development-inputs (("rust-futures-channel" ,rust-futures-channel-0.3)
>                                     ("rust-futures-util" ,rust-futures-util-0.3)
>                                     ("rust-gtk4" ,rust-gtk4-0.7)
>                                     ("rust-trybuild2" ,rust-trybuild2-1))))
>      (native-inputs (list pkg-config))
> -    (inputs (list gdk-pixbuf gtk))
> +    (inputs (list gtk))
>      (home-page "https://gtk-rs.org/")
>      (synopsis "Macros helpers for GTK 4 bindings")
>      (description "Macros helpers for GTK 4 bindings.")
>
> You can close this thread (or could I?).

Thanks for the heads-up.  I'm closing this thread by replying to
[email-masked] in CC.

-- 
Thanks,
Maxim

Subject: [PATCH core-updates-frozen] WIP: Add rust-gtk4 and dependencies
From: Nicholas von Klitzing <[email-masked]>
To: "[email-masked]" <[email-masked]>
Date: Wed, 15 Dec 2021 23:05:27 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello Guix!

These are my WIP patches to add the gtk4 crates. Several Gnome and Gtk applications depend on this crate (Authenticator, Fractal, Shortwave, etc).

I based the patches on c-u-f because the master branch isn't building on my machine for unrelated reasons I have yet to explore. Regardless, there should be no conflicts.

Several of the dependency package definitions are unedited from `guix import`, so please do let me know if you think I should change them.

Looking forward to your feedback!

Kind regards,
Nicholas von Klitzing

From 4ac3d999600df862ff3339127a495c4136b79c32 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:49:42 +0100
Subject: [PATCH 29/29] add copyright

---
 gnu/packages/crates-gtk.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 0d8f7e01a1..311a032c66 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2020, 2021 Efraim Flashner <[email-masked]>
 ;;; Copyright © 2020, 2021 Nicolas Goaziou <[email-masked]>
+;;; Copyright © 2021 Nicholas von Klitzing <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
-- 
2.34.0

From c2f6f6126a7660e1aed8b9906d35ab68ec131f80 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:49:01 +0100
Subject: [PATCH 27/29] gnu: Add rust-cairo-rs-0.14.

* gnu/packages/crates-gtk.scm (rust-cairo-rs-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 59f6f2897a..721ee2c5be 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1569,6 +1569,33 @@ (define-public rust-cairo-sys-rs-0.14
     (description "FFI bindings to libcairo")
     (license license:expat)))
 
+(define-public rust-cairo-rs-0.14
+  (package
+    (name "rust-cairo-rs")
+    (version "0.14.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cairo-rs" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "10ml7hxzj6w5k6yjdkcmxx0ds4mnrn9j3bdbk1nmh36vg5cp5d9k"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-bitflags" ,rust-bitflags-1)
+         ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.14)
+         ("rust-freetype" ,rust-freetype-0.7)
+         ("rust-glib" ,rust-glib-0.14)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-thiserror" ,rust-thiserror-1))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the Cairo library")
+    (description "Rust bindings for the Cairo library")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 89aed714c2990d74618c28605629350525572fee Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:48:47 +0100
Subject: [PATCH 25/29] gnu: Add rust-glib-sys-0.14.

* gnu/packages/crates-gtk.scm (rust-glib-sys-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 001bbff378..f017366ba2 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1520,6 +1520,29 @@ (define-public rust-system-deps-3
       "Discover and configure system dependencies from declarative dependencies in Cargo.toml")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-glib-sys-0.14
+  (package
+    (name "rust-glib-sys")
+    (version "0.14.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "glib-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "1bjlymn3fw4g8slij6iiggaipknf9072mr2qm3i4a91199an078w"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-libc" ,rust-libc-0.2)
+         ("rust-system-deps" ,rust-system-deps-3))))
+    (home-page "http://gtk-rs.org/")
+    (synopsis "FFI bindings to libglib-2.0")
+    (description "FFI bindings to libglib-2.0")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 7d4c882abe1080b7bab622ac5c74749d67e0f903 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:48:33 +0100
Subject: [PATCH 23/29] gnu: Add rust-cfg-expr-0.8.

* gnu/packages/crates-gtk.scm (rust-cfg-expr-0.8): New variable.
---
 gnu/packages/crates-gtk.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 9c5b6ff10e..b33b209020 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1463,6 +1463,30 @@ (define-public rust-target-lexicon-0.12
     (description "Targeting utilities for compilers and related tools")
     (license (list license:asl2.0))))
 
+(define-public rust-cfg-expr-0.8
+  (package
+    (name "rust-cfg-expr")
+    (version "0.8.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cfg-expr" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "03lgv8psc2qrr93hxgdfmfwbj1crpzghxd7qh6w2nz0l4qryh4ml"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-smallvec" ,rust-smallvec-1)
+         ("rust-target-lexicon" ,rust-target-lexicon-0.12))))
+    (home-page "https://github.com/EmbarkStudios/cfg-expr")
+    (synopsis "A parser and evaluator for Rust `cfg()` expressions.")
+    (description
+      "This package provides a parser and evaluator for Rust `cfg()` expressions.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From b5432a6de63382cf189a2368d17934bb48933932 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:47:58 +0100
Subject: [PATCH 19/29] gnu: Add rust-glib-macros-0.14.

* gnu/packages/crates-gtk.scm (rust-glib-macros-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 44794a50e5..42e5911db6 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1361,6 +1361,34 @@ (define-public rust-gobject-sys-0.14
     (description "FFI bindings to libgobject-2.0")
     (license license:expat)))
 
+(define-public rust-glib-macros-0.14
+  (package
+    (name "rust-glib-macros")
+    (version "0.14.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "glib-macros" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "0675i7m7pksg4cd9kfpzjnw0x5r3y4gcac7mfgy6nyb63wv6db9a"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-anyhow" ,rust-anyhow-1)
+         ("rust-heck" ,rust-heck-0.3)
+         ("rust-proc-macro-crate" ,rust-proc-macro-crate-1)
+         ("rust-proc-macro-error" ,rust-proc-macro-error-1)
+         ("rust-proc-macro2" ,rust-proc-macro2-1)
+         ("rust-quote" ,rust-quote-1)
+         ("rust-syn" ,rust-syn-1))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the GLib library, proc macros crate")
+    (description "Rust bindings for the GLib library, proc macros crate")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From f97c293ec15fb64c6a2e9292deed389c462f1591 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:47:19 +0100
Subject: [PATCH 15/29] gnu: Add rust-gdk-pixbuf-sys-0.14.

* gnu/packages/crates-gtk.scm (rust-gdk-pixbuf-sys-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 78971b3217..882b780092 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1263,6 +1263,32 @@ (define-public rust-gio-sys-0.14
     (description "FFI bindings to libgio-2.0")
     (license license:expat)))
 
+(define-public rust-gdk-pixbuf-sys-0.14
+  (package
+    (name "rust-gdk-pixbuf-sys")
+    (version "0.14.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gdk-pixbuf-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "14759y4z2najwv3hpvdqi2qqnz4lqrcdqqhpkkvciyq189qc15zh"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-gio-sys" ,rust-gio-sys-0.14)
+         ("rust-glib-sys" ,rust-glib-sys-0.14)
+         ("rust-gobject-sys" ,rust-gobject-sys-0.14)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-system-deps" ,rust-system-deps-3))))
+    (home-page "http://gtk-rs.org/")
+    (synopsis "FFI bindings to libgdk_pixbuf-2.0")
+    (description "FFI bindings to libgdk_pixbuf-2.0")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From e94f8c79b58da48461b609aa0f06a09a87a0a662 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:47:38 +0100
Subject: [PATCH 17/29] gnu: Add rust-field-offset-0.3.

* gnu/packages/crates-gtk.scm (rust-field-offset-0.3): New variable.
---
 gnu/packages/crates-gtk.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 06c8d81d8a..ce8c8da3c5 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1314,6 +1314,29 @@ (define-public rust-gdk-pixbuf-0.14
     (description "Rust bindings for the GdkPixbuf library")
     (license license:expat)))
 
+(define-public rust-field-offset-0.3
+  (package
+    (name "rust-field-offset")
+    (version "0.3.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "field-offset" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "14pvxz7yr0r3mlhaf65zva3r9d0kqid01wdw7ngx7jsh2jam870y"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-memoffset" ,rust-memoffset-0.6)
+         ("rust-rustc-version" ,rust-rustc-version-0.3))))
+    (home-page "https://github.com/Diggsey/rust-field-offset")
+    (synopsis "Safe pointer-to-member implementation")
+    (description "Safe pointer-to-member implementation")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From e84fa57dc0457fe1c3364237d7a30edf2b9df6e6 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:45:57 +0100
Subject: [PATCH 11/29] gnu: Add rust-gdk4-sys-0.3.

* gnu/packages/crates-gtk.scm (rust-gdk4-sys-0.3): New variable.
---
 gnu/packages/crates-gtk.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 81a8103847..9061532e8b 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1148,6 +1148,36 @@ (define-public rust-graphene-sys-0.14
     (description "FFI bindings to libgraphene-1.0")
     (license license:expat)))
 
+(define-public rust-gdk4-sys-0.3
+  (package
+    (name "rust-gdk4-sys")
+    (version "0.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gdk4-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "1mf6igl7ziy57qzdkimk42qwcfla60fzwk93wjj9dyv9d7hg964l"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.14)
+         ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.14)
+         ("rust-gio-sys" ,rust-gio-sys-0.14)
+         ("rust-glib-sys" ,rust-glib-sys-0.14)
+         ("rust-gobject-sys" ,rust-gobject-sys-0.14)
+         ("rust-graphene-sys" ,rust-graphene-sys-0.14)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-pango-sys" ,rust-pango-sys-0.14)
+         ("rust-system-deps" ,rust-system-deps-5))))
+    (home-page "http://gtk-rs.org/")
+    (synopsis "FFI bindings of GDK 4")
+    (description "FFI bindings of GDK 4")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 84ee4c8a3c24f3ec3cb6e3be4430fef35a6369b8 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:45:35 +0100
Subject: [PATCH 09/29] gnu: Add rust-pango-sys-0.14.

* gnu/packages/crates-gtk.scm (rust-pango-sys-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 6a05257c89..a3e96b07f3 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1098,6 +1098,31 @@ (define-public rust-system-deps-5
       "Discover and configure system dependencies from declarative dependencies in Cargo.toml")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-pango-sys-0.14
+  (package
+    (name "rust-pango-sys")
+    (version "0.14.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pango-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "1zj236n9kjldf47wwlxvhshwm5zhg589a0fml5mm8qg7lnf0jrr3"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-glib-sys" ,rust-glib-sys-0.14)
+         ("rust-gobject-sys" ,rust-gobject-sys-0.14)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-system-deps" ,rust-system-deps-3))))
+    (home-page "http://gtk-rs.org/")
+    (synopsis "FFI bindings to libpango-1.0")
+    (description "FFI bindings to libpango-1.0")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From fd07cb698b90e899d897d345f172dee41f918c02 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:49:30 +0100
Subject: [PATCH 28/29] gnu: Add rust-gtk4-0.3.

* gnu/packages/crates-gtk.scm (rust-gtk4-0.3): New variable.
---
 gnu/packages/crates-gtk.scm | 59 +++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 721ee2c5be..0d8f7e01a1 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -26,6 +26,7 @@ (define-module (gnu packages crates-gtk)
   #:use-module (gnu packages crates-io)
   #:use-module (gnu packages crates-graphics)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages gtk))
 
 ;;;
@@ -1596,6 +1597,64 @@ (define-public rust-cairo-rs-0.14
     (description "Rust bindings for the Cairo library")
     (license license:expat)))
 
+(define-public rust-gtk4-0.3
+  (package
+    (name "rust-gtk4")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "gtk4" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0gba39mjnd3am4wys8p6nida1g18b2gij8z7753vm18l3m14z82q"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cairo-rs" ,rust-cairo-rs-0.14)
+        ("rust-field-offset" ,rust-field-offset-0.3)
+        ("rust-futures-channel" ,rust-futures-channel-0.3)
+        ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.14)
+        ("rust-gdk4" ,rust-gdk4-0.3)
+        ("rust-gio" ,rust-gio-0.14)
+        ("rust-glib" ,rust-glib-0.14)
+        ("rust-graphene-rs" ,rust-graphene-rs-0.14)
+        ("rust-gsk4" ,rust-gsk4-0.3)
+        ("rust-gtk4-macros" ,rust-gtk4-macros-0.3)
+        ("rust-gtk4-sys" ,rust-gtk4-sys-0.3)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-once-cell" ,rust-once-cell-1)
+        ("rust-pango" ,rust-pango-0.14))
+       #:cargo-development-inputs
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'start-broadway
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "HOME" (getcwd))
+             (system (string-append
+                      (search-input-file inputs "/bin/gtk4-broadwayd") " :1 &"))
+             (setenv "GDK_BACKEND" "broadway")
+             (setenv "BROADWAY_DISPLAY" ":1")
+             ;; See https://github.com/gtk-rs/gtk4-rs/issues/759
+             (substitute* (find-files "." "Gir.toml")
+               (("^\\s*#.*") "")
+               (("^(.*\\S\\s)(#.*)" _ code comment) (string-append code "\n"))))))))
+    (native-inputs (list pkg-config))
+    (inputs
+     `(("glib" ,glib)
+       ("graphene" ,graphene)
+       ("cairo" ,cairo)
+       ("pango" ,pango)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("gtk" ,gtk)
+       ("gtk:bin" ,gtk "bin")))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings of the GTK 4 library")
+    (description "Rust bindings of the GTK 4 library")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 88fc015695e2bf9427ee699e76f3bfefa8be77e2 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:45:16 +0100
Subject: [PATCH 07/29] gnu: Add rust-cfg-expr-0.9.

* gnu/packages/crates-gtk.scm (rust-cfg-expr-0.9): New variable.
---
 gnu/packages/crates-gtk.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 8c2bf3ba15..5a2a75121e 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1046,6 +1046,30 @@ (define-public rust-pango-0.14
     (description "Rust bindings for the Pango library")
     (license license:expat)))
 
+(define-public rust-cfg-expr-0.9
+  (package
+    (name "rust-cfg-expr")
+    (version "0.9.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cfg-expr" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "0wbmpnf6mwda8iz4370sxilq9gxiv621gdv4glpy7z6i4nb0pbpd"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-smallvec" ,rust-smallvec-1)
+         ("rust-target-lexicon" ,rust-target-lexicon-0.12))))
+    (home-page "https://github.com/EmbarkStudios/cfg-expr")
+    (synopsis "A parser and evaluator for Rust `cfg()` expressions.")
+    (description
+      "This package provides a parser and evaluator for Rust `cfg()` expressions.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From d766bdb3a74c53d17039ce56d55877ef62fe5cd3 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:42:31 +0100
Subject: [PATCH 01/29] gnu: Add rust-gtk4-sys-0.3.

* gnu/packages/crates-gtk.scm (rust-gtk4-sys-0.3): New variable.
---
 gnu/packages/crates-gtk.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index b22905629f..9a060c37c5 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -877,6 +877,38 @@ (define-public rust-gobject-sys-0.9
        (("rust-shell-words" ,rust-shell-words-0.1)
         ("rust-tempfile" ,rust-tempfile-3))))))
 
+(define-public rust-gtk4-sys-0.3
+  (package
+    (name "rust-gtk4-sys")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "gtk4-sys" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "0j9vfcsi7iyn0dfzfc1mlhs7iyzj8w3i6k7h5y8gikyxy34682p2"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build?
+       #t
+       #:cargo-inputs
+       (("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.14)
+        ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.14)
+        ("rust-gdk4-sys" ,rust-gdk4-sys-0.3)
+        ("rust-gio-sys" ,rust-gio-sys-0.14)
+        ("rust-glib-sys" ,rust-glib-sys-0.14)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.14)
+        ("rust-graphene-sys" ,rust-graphene-sys-0.14)
+        ("rust-gsk4-sys" ,rust-gsk4-sys-0.3)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-pango-sys" ,rust-pango-sys-0.14)
+        ("rust-system-deps" ,rust-system-deps-5))))
+    (home-page "http://gtk-rs.org/")
+    (synopsis "FFI bindings of GTK 4")
+    (description "FFI bindings of GTK 4")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 77ce330ac3a0a0e115e4614ef25834fda9b88360 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:48:07 +0100
Subject: [PATCH 20/29] gnu: Add rust-glib-0.14.

* gnu/packages/crates-gtk.scm (rust-glib-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 42e5911db6..96cd8a468e 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1389,6 +1389,39 @@ (define-public rust-glib-macros-0.14
     (description "Rust bindings for the GLib library, proc macros crate")
     (license license:expat)))
 
+(define-public rust-glib-0.14
+  (package
+    (name "rust-glib")
+    (version "0.14.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "glib" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "194n6w5yy869lls3pr46x5nm049cn02qsljzcgv1w5dzc8g5ylbw"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-bitflags" ,rust-bitflags-1)
+         ("rust-futures-channel" ,rust-futures-channel-0.3)
+         ("rust-futures-core" ,rust-futures-core-0.3)
+         ("rust-futures-executor" ,rust-futures-executor-0.3)
+         ("rust-futures-task" ,rust-futures-task-0.3)
+         ("rust-glib-macros" ,rust-glib-macros-0.14)
+         ("rust-glib-sys" ,rust-glib-sys-0.14)
+         ("rust-gobject-sys" ,rust-gobject-sys-0.14)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-log" ,rust-log-0.4)
+         ("rust-once-cell" ,rust-once-cell-1)
+         ("rust-smallvec" ,rust-smallvec-1))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the GLib library")
+    (description "Rust bindings for the GLib library")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From aa481d402504249f2b5948796814e8b7bad66dcc Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:48:23 +0100
Subject: [PATCH 22/29] gnu: Add rust-target-lexicon-0.12.

* gnu/packages/crates-gtk.scm (rust-target-lexicon-0.12): New variable.
---
 gnu/packages/crates-gtk.scm | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index f1a2ca3ab5..9c5b6ff10e 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1445,6 +1445,24 @@ (define-public rust-freetype-0.7
     (description "Bindings for Freetype used by Servo")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-target-lexicon-0.12
+  (package
+    (name "rust-target-lexicon")
+    (version "0.12.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "target-lexicon" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "1zsvillq0zsggg3fb0mfmcia0f68wfclahaqc0zgln14pkfzrgyr"))))
+    (build-system cargo-build-system)
+    (arguments `(#:skip-build? #t))
+    (home-page "https://github.com/bytecodealliance/target-lexicon")
+    (synopsis "Targeting utilities for compilers and related tools")
+    (description "Targeting utilities for compilers and related tools")
+    (license (list license:asl2.0))))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From c8aa57dd7d33281f71438d0673afbbbf230c125f Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:46:45 +0100
Subject: [PATCH 14/29] gnu: Add rust-gio-sys-0.14.

* gnu/packages/crates-gtk.scm (rust-gio-sys-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index b82e255f91..78971b3217 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1237,6 +1237,32 @@ (define-public rust-gio-0.14
     (description "Rust bindings for the Gio library")
     (license license:expat)))
 
+(define-public rust-gio-sys-0.14
+  (package
+    (name "rust-gio-sys")
+    (version "0.14.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gio-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "1yj8dx2rna07av3jwyd93s832kw8dg14zxxwqj3w5z2pdvv1v960"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-glib-sys" ,rust-glib-sys-0.14)
+         ("rust-gobject-sys" ,rust-gobject-sys-0.14)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-system-deps" ,rust-system-deps-3)
+         ("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "http://gtk-rs.org/")
+    (synopsis "FFI bindings to libgio-2.0")
+    (description "FFI bindings to libgio-2.0")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 74a257aae5211b1d56e4686cdbdf7fe172ac1332 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:45:05 +0100
Subject: [PATCH 06/29] gnu: Add rust-pango-0.14.

* gnu/packages/crates-gtk.scm (rust-pango-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 16cb156f9f..8c2bf3ba15 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1019,6 +1019,33 @@ (define-public rust-graphene-rs-0.14
     (synopsis "Rust bindings for the Graphene library")
     (description "Rust bindings for the Graphene library")
     (license license:expat)))
+
+(define-public rust-pango-0.14
+  (package
+    (name "rust-pango")
+    (version "0.14.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pango" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "10c5q8wl9gkjh323whq6pg9yfvr2vmz00f98z1d77jp506cdavsl"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-bitflags" ,rust-bitflags-1)
+         ("rust-glib" ,rust-glib-0.14)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-once-cell" ,rust-once-cell-1)
+         ("rust-pango-sys" ,rust-pango-sys-0.14))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the Pango library")
+    (description "Rust bindings for the Pango library")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 081a1fe667b15ea0a5b199f4b7d80b0d3e136dbd Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:44:41 +0100
Subject: [PATCH 04/29] gnu: Add rust-gsk4-0.3.

* gnu/packages/crates-gtk.scm (rust-gsk4-0.3): New variable.
---
 gnu/packages/crates-gtk.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index fe0d5c755e..b2bddc9e4c 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -967,6 +967,35 @@ (define-public rust-gsk4-sys-0.3
     (description "FFI bindings of GSK 4")
     (license license:expat)))
 
+(define-public rust-gsk4-0.3
+  (package
+    (name "rust-gsk4")
+    (version "0.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gsk4" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "0r6pdygqylz8qbi14k62z2a6wjzaf457ghx0sxzhiiagdjj9rxgg"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-bitflags" ,rust-bitflags-1)
+         ("rust-cairo-rs" ,rust-cairo-rs-0.14)
+         ("rust-gdk4" ,rust-gdk4-0.3)
+         ("rust-glib" ,rust-glib-0.14)
+         ("rust-graphene-rs" ,rust-graphene-rs-0.14)
+         ("rust-gsk4-sys" ,rust-gsk4-sys-0.3)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-pango" ,rust-pango-0.14))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings of the GSK 4 library")
+    (description "Rust bindings of the GSK 4 library")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From b466ee0dc606d611fface68a8f0c3bb87661865a Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:43:26 +0100
Subject: [PATCH 02/29] gnu: Add rust-gtk4-macros-0.3.

* gnu/packages/crates-gtk.scm (rust-gtk4-macros-0.3): New variable.
---
 gnu/packages/crates-gtk.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 9a060c37c5..c8e411c481 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -909,6 +909,34 @@ (define-public rust-gtk4-sys-0.3
     (description "FFI bindings of GTK 4")
     (license license:expat)))
 
+(define-public rust-gtk4-macros-0.3
+  (package
+    (name "rust-gtk4-macros")
+    (version "0.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gtk4-macros" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "18dlwa5w17gqhjndqg173vhqma8a209wdbc78vs5897h98sx8s2h"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-anyhow" ,rust-anyhow-1)
+         ("rust-heck" ,rust-heck-0.3)
+         ("rust-itertools" ,rust-itertools-0.10)
+         ("rust-proc-macro-crate" ,rust-proc-macro-crate-1)
+         ("rust-proc-macro-error" ,rust-proc-macro-error-1)
+         ("rust-proc-macro2" ,rust-proc-macro2-1)
+         ("rust-quote" ,rust-quote-1)
+         ("rust-syn" ,rust-syn-1))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Macros helpers for GTK 4 bindings")
+    (description "Macros helpers for GTK 4 bindings")
+    (license license:expat)))
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From c3ab48791bf56965b4f4d4459aaa9ad95109e6aa Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:48:16 +0100
Subject: [PATCH 21/29] gnu: Add rust-freetype-0.7.

* gnu/packages/crates-gtk.scm (rust-freetype-0.7): New variable.
---
 gnu/packages/crates-gtk.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 96cd8a468e..f1a2ca3ab5 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1422,6 +1422,29 @@ (define-public rust-glib-0.14
     (description "Rust bindings for the GLib library")
     (license license:expat)))
 
+(define-public rust-freetype-0.7
+  (package
+    (name "rust-freetype")
+    (version "0.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "freetype" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "1ijxyd8isq0w7qkbhp7p1y536xg3d8b8vy5ljg31rnz3m5w87qxy"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-freetype-sys" ,rust-freetype-sys-0.13)
+         ("rust-libc" ,rust-libc-0.2))))
+    (home-page "https://github.com/servo/rust-freetype")
+    (synopsis "Bindings for Freetype used by Servo")
+    (description "Bindings for Freetype used by Servo")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 56bff75a869b6db7240aba10aafe7127e0b01ccc Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:46:26 +0100
Subject: [PATCH 13/29] gnu: Add rust-gio-0.14.

* gnu/packages/crates-gtk.scm (rust-gio-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 435212c666..b82e255f91 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1207,6 +1207,36 @@ (define-public rust-gdk4-0.3
     (description "Rust bindings of the GDK 4 library")
     (license license:expat)))
 
+(define-public rust-gio-0.14
+  (package
+    (name "rust-gio")
+    (version "0.14.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gio" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "1c2w47mznpplr3mmhgs4m4nlkv8gs4c182cwi9brbl7bncr3c73i"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-bitflags" ,rust-bitflags-1)
+         ("rust-futures-channel" ,rust-futures-channel-0.3)
+         ("rust-futures-core" ,rust-futures-core-0.3)
+         ("rust-futures-io" ,rust-futures-io-0.3)
+         ("rust-gio-sys" ,rust-gio-sys-0.14)
+         ("rust-glib" ,rust-glib-0.14)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-once-cell" ,rust-once-cell-1)
+         ("rust-thiserror" ,rust-thiserror-1))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the Gio library")
+    (description "Rust bindings for the Gio library")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From dbff67d0e67b1ab30158c084d1bd4b38430972be Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:44:03 +0100
Subject: [PATCH 03/29] gnu: Add rust-gsk4-sys-0.3.

* gnu/packages/crates-gtk.scm (rust-gsk4-sys-0.3): New variable.
---
 gnu/packages/crates-gtk.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index c8e411c481..fe0d5c755e 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -937,6 +937,36 @@ (define-public rust-gtk4-macros-0.3
     (synopsis "Macros helpers for GTK 4 bindings")
     (description "Macros helpers for GTK 4 bindings")
     (license license:expat)))
+
+(define-public rust-gsk4-sys-0.3
+  (package
+    (name "rust-gsk4-sys")
+    (version "0.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gsk4-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "1da56n3zydbpw557mx588vbm7f2sinc9scslk4ps0k93f3757ahk"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.14)
+         ("rust-gdk4-sys" ,rust-gdk4-sys-0.3)
+         ("rust-glib-sys" ,rust-glib-sys-0.14)
+         ("rust-gobject-sys" ,rust-gobject-sys-0.14)
+         ("rust-graphene-sys" ,rust-graphene-sys-0.14)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-pango-sys" ,rust-pango-sys-0.14)
+         ("rust-system-deps" ,rust-system-deps-5))))
+    (home-page "http://gtk-rs.org/")
+    (synopsis "FFI bindings of GSK 4")
+    (description "FFI bindings of GSK 4")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 5b0f72dab0dec8322ad93d745a979344d01e38c7 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:44:54 +0100
Subject: [PATCH 05/29] gnu: Add rust-graphene-rs-0.14.

* gnu/packages/crates-gtk.scm (rust-graphene-rs-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index b2bddc9e4c..16cb156f9f 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -996,6 +996,29 @@ (define-public rust-gsk4-0.3
     (description "Rust bindings of the GSK 4 library")
     (license license:expat)))
 
+(define-public rust-graphene-rs-0.14
+  (package
+    (name "rust-graphene-rs")
+    (version "0.14.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "graphene-rs" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "0qx52x0rfal29wlj0bc995gam403wf0c3fm2w2wrxvrh4l9hyf73"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-glib" ,rust-glib-0.14)
+         ("rust-graphene-sys" ,rust-graphene-sys-0.14)
+         ("rust-libc" ,rust-libc-0.2))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the Graphene library")
+    (description "Rust bindings for the Graphene library")
+    (license license:expat)))
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 61f337b422f2ab4c37e168dae6657c0780ce75ed Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:48:54 +0100
Subject: [PATCH 26/29] gnu: Add rust-cairo-sys-rs-0.14.

* gnu/packages/crates-gtk.scm (rust-cairo-sys-rs-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index f017366ba2..59f6f2897a 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1543,6 +1543,32 @@ (define-public rust-glib-sys-0.14
     (description "FFI bindings to libglib-2.0")
     (license license:expat)))
 
+(define-public rust-cairo-sys-rs-0.14
+  (package
+    (name "rust-cairo-sys-rs")
+    (version "0.14.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cairo-sys-rs" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "0w3md4xk87ign30wb3rqfmmj0q6pvg5arbm35flgsd08jxvbhj5l"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-glib-sys" ,rust-glib-sys-0.14)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-system-deps" ,rust-system-deps-3)
+         ("rust-winapi" ,rust-winapi-0.3)
+         ("rust-x11" ,rust-x11-2))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "FFI bindings to libcairo")
+    (description "FFI bindings to libcairo")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From b87cd5648085b278a65a42b84ba1bc1f7f125d03 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:48:40 +0100
Subject: [PATCH 24/29] gnu: Add rust-system-deps-3.

* gnu/packages/crates-gtk.scm (rust-system-deps-3): New variable.
---
 gnu/packages/crates-gtk.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index b33b209020..001bbff378 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1487,6 +1487,39 @@ (define-public rust-cfg-expr-0.8
       "This package provides a parser and evaluator for Rust `cfg()` expressions.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-system-deps-3
+  (package
+    (name "rust-system-deps")
+    (version "3.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "system-deps" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "19ig3hxgyq9d7qy8cwpl74l75ay2w0y0a4rginqb68h7hygjc328"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-anyhow" ,rust-anyhow-1)
+         ("rust-cfg-expr" ,rust-cfg-expr-0.8)
+         ("rust-heck" ,rust-heck-0.3)
+         ("rust-itertools" ,rust-itertools-0.10)
+         ("rust-pkg-config" ,rust-pkg-config-0.3)
+         ("rust-strum" ,rust-strum-0.21)
+         ("rust-strum-macros" ,rust-strum-macros-0.21)
+         ("rust-thiserror" ,rust-thiserror-1)
+         ("rust-toml" ,rust-toml-0.5)
+         ("rust-version-compare" ,rust-version-compare-0.0))))
+    (home-page "https://github.com/gdesmott/system-deps")
+    (synopsis
+      "Discover and configure system dependencies from declarative dependencies in Cargo.toml")
+    (description
+      "Discover and configure system dependencies from declarative dependencies in Cargo.toml")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 51dd700561d71db4ac8633bbb072fa9a1a89b506 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:47:27 +0100
Subject: [PATCH 16/29] gnu: Add rust-gdk-pixbuf-0.14.

* gnu/packages/crates-gtk.scm (rust-gdk-pixbuf-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 882b780092..06c8d81d8a 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1289,6 +1289,31 @@ (define-public rust-gdk-pixbuf-sys-0.14
     (description "FFI bindings to libgdk_pixbuf-2.0")
     (license license:expat)))
 
+(define-public rust-gdk-pixbuf-0.14
+  (package
+    (name "rust-gdk-pixbuf")
+    (version "0.14.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gdk-pixbuf" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "03xi6pi0h9jwkxvja18k75x5pblsiym4p39cmf7ypnh1iz5r4hak"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.14)
+         ("rust-gio" ,rust-gio-0.14)
+         ("rust-glib" ,rust-glib-0.14)
+         ("rust-libc" ,rust-libc-0.2))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the GdkPixbuf library")
+    (description "Rust bindings for the GdkPixbuf library")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 035165db507e5267026abaea52ff792e24865255 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:47:48 +0100
Subject: [PATCH 18/29] gnu: Add rust-gobject-sys-0.14.

* gnu/packages/crates-gtk.scm (rust-gobject-sys-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index ce8c8da3c5..44794a50e5 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1337,6 +1337,30 @@ (define-public rust-field-offset-0.3
     (description "Safe pointer-to-member implementation")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-gobject-sys-0.14
+  (package
+    (name "rust-gobject-sys")
+    (version "0.14.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gobject-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "1xf3jiwzrjingq8jr15bjkbv6m5dypzp67cjnm5f7njrjzicm4ma"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-glib-sys" ,rust-glib-sys-0.14)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-system-deps" ,rust-system-deps-3))))
+    (home-page "http://gtk-rs.org/")
+    (synopsis "FFI bindings to libgobject-2.0")
+    (description "FFI bindings to libgobject-2.0")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 0adecaed2f173aa5f1c8fa18dd083f673ba75d9d Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:46:04 +0100
Subject: [PATCH 12/29] gnu: Add rust-gdk4-0.3.

* gnu/packages/crates-gtk.scm (rust-gdk4-0.3): New variable.
---
 gnu/packages/crates-gtk.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 9061532e8b..435212c666 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1178,6 +1178,35 @@ (define-public rust-gdk4-sys-0.3
     (description "FFI bindings of GDK 4")
     (license license:expat)))
 
+(define-public rust-gdk4-0.3
+  (package
+    (name "rust-gdk4")
+    (version "0.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gdk4" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "03yg3qji71d6y325fw4js5yndcd0aqqnhgxgh7wink912wn1cypr"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-bitflags" ,rust-bitflags-1)
+         ("rust-cairo-rs" ,rust-cairo-rs-0.14)
+         ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.14)
+         ("rust-gdk4-sys" ,rust-gdk4-sys-0.3)
+         ("rust-gio" ,rust-gio-0.14)
+         ("rust-glib" ,rust-glib-0.14)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-pango" ,rust-pango-0.14))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings of the GDK 4 library")
+    (description "Rust bindings of the GDK 4 library")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 63ed287a11944ccb4c111d974d119939ee15215c Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:45:47 +0100
Subject: [PATCH 10/29] gnu: Add rust-graphene-sys-0.14.

* gnu/packages/crates-gtk.scm (rust-graphene-sys-0.14): New variable.
---
 gnu/packages/crates-gtk.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index a3e96b07f3..81a8103847 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1123,6 +1123,31 @@ (define-public rust-pango-sys-0.14
     (description "FFI bindings to libpango-1.0")
     (license license:expat)))
 
+(define-public rust-graphene-sys-0.14
+  (package
+    (name "rust-graphene-sys")
+    (version "0.14.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "graphene-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "0cjkd2jhf6z5lilm3yqkvqcy9vd242ch4g1sa690ga1s1d2wg6ls"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-glib-sys" ,rust-glib-sys-0.14)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-pkg-config" ,rust-pkg-config-0.3)
+         ("rust-system-deps" ,rust-system-deps-3))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "FFI bindings to libgraphene-1.0")
+    (description "FFI bindings to libgraphene-1.0")
+    (license license:expat)))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0

From 1b5b51a56b49e73580e8bf8b625872bb4c3f34d5 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <[email-masked]>
Date: Wed, 15 Dec 2021 23:45:26 +0100
Subject: [PATCH 08/29] gnu: Add rust-system-deps-5.

* gnu/packages/crates-gtk.scm (rust-system-deps-5): New variable.
---
 gnu/packages/crates-gtk.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 5a2a75121e..6a05257c89 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -1070,6 +1070,34 @@ (define-public rust-cfg-expr-0.9
       "This package provides a parser and evaluator for Rust `cfg()` expressions.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-system-deps-5
+  (package
+    (name "rust-system-deps")
+    (version "5.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "system-deps" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32 "0zkrf58z96y3f5ggglqirc97iy9rvyippkq67vkx0yyvaiaqbnqq"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:skip-build?
+        #t
+        #:cargo-inputs
+        (("rust-cfg-expr" ,rust-cfg-expr-0.9)
+         ("rust-heck" ,rust-heck-0.3)
+         ("rust-pkg-config" ,rust-pkg-config-0.3)
+         ("rust-toml" ,rust-toml-0.5)
+         ("rust-version-compare" ,rust-version-compare-0.0))))
+    (home-page "https://github.com/gdesmott/system-deps")
+    (synopsis
+      "Discover and configure system dependencies from declarative dependencies in Cargo.toml")
+    (description
+      "Discover and configure system dependencies from declarative dependencies in Cargo.toml")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-gtk-0.8
   (package
     (name "rust-gtk")
-- 
2.34.0