mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-11 13:49:23 -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
|
@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
|
@node Guix Home Services
|
||||||
@subsection Guix Home Services
|
@subsection Guix Home Services
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
|
||||||
|
;;; Copyright © 2022 ( <paren@disroot.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; 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)
|
||||||
#:use-module (gnu home services shepherd)
|
#:use-module (gnu home services shepherd)
|
||||||
#:use-module (gnu services configuration)
|
#:use-module (gnu services configuration)
|
||||||
|
#:autoload (gnu packages glib) (dbus)
|
||||||
#:autoload (gnu packages xdisorg) (redshift)
|
#:autoload (gnu packages xdisorg) (redshift)
|
||||||
#:use-module (guix records)
|
#:use-module (guix records)
|
||||||
#:use-module (guix gexp)
|
#:use-module (guix gexp)
|
||||||
|
@ -27,8 +29,10 @@ (define-module (gnu home services desktop)
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
#:export (home-redshift-configuration
|
#:export (home-redshift-configuration
|
||||||
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
|
(description
|
||||||
"Run Redshift, a program that adjusts the color temperature of display
|
"Run Redshift, a program that adjusts the color temperature of display
|
||||||
according to time of day.")))
|
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