mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-11 05:39:41 -05:00
gnu: home: Add home-dbus-service-type.
* gnu/home/services/desktop.scm (home-dbus-service-type): New variable. (home-dbus-configuration): New record type. * doc/guix.texi: Document them. Signed-off-by: Andrew Tropin <andrew@trop.in>
This commit is contained in:
parent
4bc5383b3b
commit
4ab434958b
2 changed files with 67 additions and 1 deletions
|
@ -41262,6 +41262,20 @@ 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.
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
@node Guix Home Services
|
||||
@subsection Guix Home Services
|
||||
|
||||
|
|
|
@ -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,51 @@ (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)))
|
||||
|
||||
(define (home-dbus-shepherd-services config)
|
||||
(list (shepherd-service
|
||||
(documentation "Run the D-Bus daemon in session-specific mode.")
|
||||
(provision '(dbus))
|
||||
(start #~(make-forkexec-constructor
|
||||
(list #$(file-append (home-dbus-dbus config)
|
||||
"/bin/dbus-daemon")
|
||||
"--nofork" "--session"
|
||||
(format #f "--address=unix:path=~a/bus"
|
||||
(or (getenv "XDG_RUNTIME_DIR")
|
||||
(format #f "/run/user/~a"
|
||||
(getuid)))))
|
||||
#:environment-variables
|
||||
#~(list "DBUS_VERBOSE=1")
|
||||
#:log-file
|
||||
(format #f "~a/dbus.log"
|
||||
(or (getenv "XDG_LOG_HOME")
|
||||
(format #f "~a/.local/var/log"
|
||||
(getenv "HOME"))))))
|
||||
(stop #~(make-kill-destructor)))))
|
||||
|
||||
(define (home-dbus-environment-variables config)
|
||||
'(("DBUS_SESSION_BUS_ADDRESS"
|
||||
. "unix:path=${XDG_RUNTIME_DIR:-/run/user/$UID}/bus")))
|
||||
|
||||
(define home-dbus-service-type
|
||||
(service-type
|
||||
(name 'home-dbus)
|
||||
(extensions
|
||||
(list (service-extension home-shepherd-service-type
|
||||
home-dbus-shepherd-services)
|
||||
(service-extension home-environment-variables-service-type
|
||||
home-dbus-environment-variables)))
|
||||
(default-value (home-dbus-configuration))
|
||||
(description
|
||||
"Run the session-specific D-Bus inter-process message bus.")))
|
||||
|
|
Loading…
Reference in a new issue