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

OpenSubmitted by Nicholas von Klitzing.
Details
2 participants
  • Maxim Cournoyer
  • Nicholas von Klitzing
Owner
unassigned
Severity
normal
N
N
Nicholas von Klitzing wrote on 16 Dec 2021 00:05
(name . guix-patches@gnu.org)(address . guix-patches@gnu.org)
l4lPDuK3_trOISY7LCmf-1NqZ-GeWRd7c9xDauGMVqv2folgXCevIOlDHYGdXHKe22OekRnwzdfb1qAbpS7d9hRsMoJQVgSCnQesHmL2g7o=@protonmail.ch
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 <nicholas@nvk.pm>
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(+)

Toggle diff (14 lines)
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 <efraim@flashner.co.il>
 ;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2021 Nicholas von Klitzing <nicholas@nvk.pm>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
-- 
2.34.0
From c2f6f6126a7660e1aed8b9906d35ab68ec131f80 Mon Sep 17 00:00:00 2001
From: Nicholas von Klitzing <nicholas@nvk.pm>
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(+)

Toggle diff (40 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (36 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (37 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (41 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (39 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (36 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (43 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (38 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (79 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (37 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (45 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (46 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (31 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (39 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (40 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (42 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (41 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (36 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (43 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (43 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (36 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (39 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (46 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (38 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (37 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (42 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (38 lines)
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 <nicholas@nvk.pm>
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(+)

Toggle diff (41 lines)
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
M
M
Maxim Cournoyer wrote on 19 Dec 2021 05:42
(name . Nicholas von Klitzing)(address . nicholas@nvk.pm)(address . 52530@debbugs.gnu.org)
87fsqp433v.fsf@gmail.com
Hi Nicholas,

Nicholas von Klitzing <nicholas@nvk.pm> writes:

Toggle quote (8 lines)
> 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.

Yes, the packages need a proper synopsis and description (stylized with
Texinfo) for inclusion. Make sure 'guix lint' is happy with them as
well, and have a read at info '(guix)Contributing', particularly the
'Synopses andDescriptions' subsection.

Thank you!

Maxim
N
N
Nicholas von Klitzing wrote on 8 Jan 10:10 +0100
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 52530@debbugs.gnu.org)
v-4Offhbb0Hj4ZsM8U1M8sbbeTMf9rNItsVxTkeZD5IVh4Reh-2j4Rqks-tsFkeQXW4HAsra0_FnjkOgiYFFMwqMQ89xAiT2hAUTXcvn5Ko=@nvk.pm
Hi Maxim,

I was looking reading through the Guix Contributing guide and found that several of the recommendations are not being used by many packages.

For example, many of the packaged rust crates only have a one-line synopsis and a one-line description, where the description is basically just the synopsis with a few extra verbs added.

Is the style mentioned above acceptable or would you recommend I do something else?

Best,
Nicholas

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Sunday, December 19th, 2021 at 4:42 AM, Maxim Cournoyer <maxim.cournoyer@gmail.com> wrote:

Toggle quote (23 lines)
> Hi Nicholas,
>
> Nicholas von Klitzing nicholas@nvk.pm writes:
>
> > 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.
>
> Yes, the packages need a proper synopsis and description (stylized with
>
> Texinfo) for inclusion. Make sure 'guix lint' is happy with them as
>
> well, and have a read at info '(guix)Contributing', particularly the
>
> 'Synopses andDescriptions' subsection.
>
> Thank you!
>
> Maxim
?