Hi unmatched-paren! Thank you for the patch, it looks good and I think can be merged in the way it is right now, but I wrote a few minor notes/nitpicks below. On 2022-10-11 20:54, "\( via Guix-patches" via wrote: > * gnu/home/services/desktop.scm (home-dbus-service-type): New > variable. > (home-dbus-configuration): New record type. > * doc/guix.texi: Document them. > --- > doc/guix.texi | 17 ++++++++++++ > gnu/home/services/desktop.scm | 52 ++++++++++++++++++++++++++++++++++- > 2 files changed, 68 insertions(+), 1 deletion(-) > > diff --git a/doc/guix.texi b/doc/guix.texi > index 5867acb746..990113703b 100644 > --- a/doc/guix.texi > +++ b/doc/guix.texi > @@ -41262,6 +41262,23 @@ format. > > @end deftp > > +@defvr {Scheme Variable} home-dbus-service-type > +This is the service type for running a session-specific D-Bus, for > +unprivileged applications that require D-Bus to be running. > +@end defvr > + > +@deftp {Data Type} home-dbus-configuration > +The configuration record for @code{home-dbus-service-type}. > + > +@table @asis > +@item @code{dbus} (default: @code{dbus}) > +The package providing the @code{/bin/dbus-daemon} command. > + > +@item @code{verbose?} (default: @code{#f}) > +Whether to enable logging. > +@end table > +@end deftp > + > @node Guix Home Services > @subsection Guix Home Services > > diff --git a/gnu/home/services/desktop.scm b/gnu/home/services/desktop.scm > index b0f4d969b0..4cf151762d 100644 > --- a/gnu/home/services/desktop.scm > +++ b/gnu/home/services/desktop.scm > @@ -1,5 +1,6 @@ > ;;; GNU Guix --- Functional package management for GNU > ;;; Copyright © 2022 Ludovic Courtès > +;;; Copyright © 2022 ( > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -20,6 +21,7 @@ (define-module (gnu home services desktop) > #:use-module (gnu home services) > #:use-module (gnu home services shepherd) > #:use-module (gnu services configuration) > + #:autoload (gnu packages glib) (dbus) > #:autoload (gnu packages xdisorg) (redshift) > #:use-module (guix records) > #:use-module (guix gexp) > @@ -27,8 +29,10 @@ (define-module (gnu home services desktop) > #:use-module (ice-9 match) > #:export (home-redshift-configuration > home-redshift-configuration? > + home-redshift-service-type > > - home-redshift-service-type)) > + home-dbus-configuration > + home-dbus-service-type)) > > > ;;; > @@ -172,3 +176,49 @@ (define home-redshift-service-type > (description > "Run Redshift, a program that adjusts the color temperature of display > according to time of day."))) > + > + > +;;; > +;;; D-Bus. > +;;; > + > +(define-record-type* > + home-dbus-configuration make-home-dbus-configuration > + home-dbus-configuration? > + (dbus home-dbus-dbus ;file-like > + (default dbus)) > + (verbose? home-dbus-verbose? ;boolean Sounds a little missleading as it doesn't control the verbosity of logging, but the logging as a whole. Also, does logging to file work at all when --syslog-only option provided? > + (default #f))) > + > +(define (home-dbus-shepherd-services config) > + (list (shepherd-service > + (documentation "Run the D-Bus daemon in session-specific mode.") > + (provision '(dbus-session)) > + (start #~(make-forkexec-constructor > + (list #$(file-append (home-dbus-dbus config) > + "/bin/dbus-daemon") > + "--nofork" "--session" "--syslog-only" > + (format #f "--address=unix:path=~a/bus" > + (or (getenv "XDG_RUNTIME_DIR") > + (format #f "/run/user/~a" > + (getuid))))) > + #$@(if (home-dbus-verbose? config) > + (list #:environment-variables > + #~(list "DBUS_VERBOSE=1") > + #:log-file > + (format #f "~a/dbus-daemon.log" > + (or (getenv "XDG_LOG_HOME") > + (format #f "~a/.local/var/log" > + (getenv "HOME"))))) > + '()))) > + (stop #~(make-kill-destructor))))) > + > +(define home-dbus-service-type > + (service-type > + (name 'home-dbus) > + (extensions > + (list (service-extension home-shepherd-service-type > + home-dbus-shepherd-services))) Do we want to extend environment-variables with --8<---------------cut here---------------start------------->8--- '(("DBUS_SESSION_BUS_ADDRESS" . "unix:path=$XDG_RUNTIME_DIR/bus")) --8<---------------cut here---------------end--------------->8--- ? > + (default-value (home-dbus-configuration)) > + (description > + "Run the session-specific D-Bus inter-process message bus."))) -- Best regards, Andrew Tropin