Package: guix-patches;
Reported by: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Date: Sun, 26 Jan 2025 02:51:02 UTC
Severity: normal
Tags: patch
Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 75847 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>, Liliana Marie Prikler <liliana.prikler <at> gmail.com>, Maxim Cournoyer <maxim.cournoyer <at> gmail.com>, Vivien Kraus <vivien <at> planete-kraus.eu> Subject: [bug#75847] [PATCH 2/2] services/gnome: Reinstate auto-configuration for GNOME Boxes. Date: Sun, 26 Jan 2025 11:55:47 +0900
Previously to 4722496292 ("Remove gnome-boxes from default GNOME apps."), USB redirection for GNOME Boxes had been working out of the box. Reinstate the extensions that made that possible, so that simply adding the gnome-boxes package back to one of the gnome-desktop-configuration fields does the right thing. * gnu/services/desktop.scm (gnome-setuid-programs): New procedure. (gnome-desktop-service-type) [privileged-program-service-type]: Use it as an extension. * gnu/packages/gnome.scm (gnome-boxes): [inputs]: Move spice-gtk to... [propagated-inputs]: ... here. [description]: Document extra steps necessary to enable the USB redirection feature. Change-Id: If84e8a2e0c480ddd1d7cd294890fad1ae2a76987 --- gnu/packages/gnome.scm | 32 ++++++++++++++++++++++++-------- gnu/services/desktop.scm | 21 ++++++++++++++++++++- 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index c831d5ee0d..1225570c3c 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -39,7 +39,7 @@ ;;; Copyright © 2019, 2024, 2025 Giacomo Leidi <goodoldpaul <at> autistici.org> ;;; Copyright © 2019 Jelle Licht <jlicht <at> fsfe.org> ;;; Copyright © 2019 Jonathan Frederickson <jonathan <at> terracrypt.net> -;;; Copyright © 2019-2024 Maxim Cournoyer <maxim.cournoyer <at> gmail.com> +;;; Copyright © 2019-2025 Maxim Cournoyer <maxim.cournoyer <at> gmail.com> ;;; Copyright © 2019, 2020 Martin Becze <mjbecze <at> riseup.net> ;;; Copyright © 2019 David Wilson <david <at> daviwil.com> ;;; Copyright © 2019, 2020 Raghav Gururajan <raghavgururajan <at> disroot.org> @@ -12813,22 +12813,38 @@ (define-public gnome-boxes libxml2 qemu-minimal ;for qemu-img sparql-query - spice-gtk tracker vte webkitgtk-for-gtk3)) + (propagated-inputs + ;; Propagating spice-gtk is necessary so that the gnome-desktop-service + ;; type configures the polkit actions necessary for the USB redirection + ;; feature to work when gnome-boxes added as a extra GNOME package. + (list spice-gtk)) (home-page "https://wiki.gnome.org/Apps/Boxes") (synopsis "View, access, and manage remote and virtual systems") (description "GNOME Boxes is a simple application to view, access, and manage remote and virtual systems. Note that this application requires the @code{libvirt} and @code{virtlog} daemons to run. Use the command @command{info '(guix) Virtualization Services'} to learn how to configure -these services on the Guix System. If you do not use the -@code{gnome-desktop-service-type}, you will also want to extend the -@code{polkit-service-type} with the @code{spice-gtk} package, as well as -configure the @file{libexec/spice-client-glib-usb-acl-helper} executable of -@code{spice-gtk} as setuid, to make it possible to redirect USB devices as a -non-privileged user.") +these services on the Guix System. + +To make it possible to redirect USB devices as a non-privileged user, some +extra configuration is necessary: if you use the +@code{gnome-desktop-service-type}, you should add the @code{gnome-boxes} +package to the @code{extra-packages} field of the +@code{gnome-desktop-configuration}, for example: +@lisp +(service gnome-desktop-service-type + (gnome-desktop-configuration + (extra-packages (list gnome-boxes gnome-essential-extras)))) +@end lisp +If you do @emph{not} use the @code{gnome-desktop-service-type}, you will need +manually extend the @code{polkit-service-type} with the @code{spice-gtk} +package, as well as configure the +@file{libexec/spice-client-glib-usb-acl-helper} executable of @code{spice-gtk} +as setuid, to make it possible to redirect USB devices as a non-privileged +user.") (license (list ;; For data/icons/empty-boxes.png. license:cc-by2.0 diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index a214d5b6a2..abb8eee200 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2015 Andy Wingo <wingo <at> igalia.com> ;;; Copyright © 2015 Mark H Weaver <mhw <at> netris.org> ;;; Copyright © 2016 Sou Bunnbu <iyzsong <at> gmail.com> -;;; Copyright © 2017, 2020, 2022, 2023 Maxim Cournoyer <maxim.cournoyer <at> gmail.com> +;;; Copyright © 2017, 2020, 2022, 2023, 2025 Maxim Cournoyer <maxim.cournoyer <at> gmail.com> ;;; Copyright © 2017 Nikita <nikita <at> n0.is> ;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel <at> crazy-compilers.com> ;;; Copyright © 2018, 2020, 2022 Efraim Flashner <efraim <at> flashner.co.il> @@ -1605,6 +1605,23 @@ (define* (gnome-profile config #:key transitive?) gnome-packages)) gnome-packages)) +(define (gnome-setuid-programs config) + "Return the list of setuid programs found within the packages specified in +CONFIG, a <gnome-desktop-configuration> object." + ;; spice-gtk provides polkit actions for USB redirection in GNOME Boxes; set + ;; its usb-acl-helper script setuid automatically when the gnome-boxes or + ;; spice-gtk packages are added to one of the gnome-desktop-configuration + ;; fields. + (let* ((gnome-packages (gnome-profile config #:transitive? #t)) + (spice-gtk (find (compose (cut string=? "spice-gtk" <>) package-name) + gnome-packages)) + (files `(,@(if spice-gtk + (list (file-append + spice-gtk + "/libexec/spice-client-glib-usb-acl-helper")) + '())))) + (map file-like->setuid-program files))) + (define gnome-desktop-service-type (service-type (name 'gnome-desktop) @@ -1613,6 +1630,8 @@ (define gnome-desktop-service-type gnome-udev-configuration-files) (service-extension polkit-service-type gnome-polkit-settings) + (service-extension privileged-program-service-type + gnome-setuid-programs) (service-extension profile-service-type gnome-profile))) (default-value (gnome-desktop-configuration)) -- 2.47.1
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.