[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#58454] [PATCH 1/1] gnu: home: Add home-dbus-service-type.
From: |
( |
Subject: |
[bug#58454] [PATCH 1/1] gnu: home: Add home-dbus-service-type. |
Date: |
Tue, 11 Oct 2022 20:54:30 +0100 |
* 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 <ludo@gnu.org>
+;;; Copyright © 2022 ( <paren@disroot.org>
;;;
;;; 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>
+ home-dbus-configuration make-home-dbus-configuration
+ home-dbus-configuration?
+ (dbus home-dbus-dbus ;file-like
+ (default dbus))
+ (verbose? home-dbus-verbose? ;boolean
+ (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)))
+ (default-value (home-dbus-configuration))
+ (description
+ "Run the session-specific D-Bus inter-process message bus.")))
--
2.38.0
[bug#58454] [PATCH v2] gnu: home: Add home-dbus-service-type., (, 2022/10/12
[bug#58454] [PATCH] gnu: home: Add home-dbus-service-type., (, 2022/10/12
[bug#58454] [PATCH v3] gnu: home: Add home-dbus-service-type., (, 2022/10/12
[bug#58454] [PATCH 0/1] gnu: home: Add home-dbus-service-type., Ludovic Courtès, 2022/10/14