summaryrefslogtreecommitdiff
path: root/gnu/home/services/desktop.scm
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2023-01-30 11:33:18 +0200
committerEfraim Flashner <efraim@flashner.co.il>2023-01-30 12:39:40 +0200
commit4cf1acc7f3033b50b0bf19e02c9f522d522d338c (patch)
tree9fd64956ee60304c15387eb394cd649e49f01467 /gnu/home/services/desktop.scm
parentedb8c09addd186d9538d43b12af74d6c7aeea082 (diff)
parent595b53b74e3ef57a1c0c96108ba86d38a170a241 (diff)
Merge remote-tracking branch 'origin/master' into core-updates
Conflicts: doc/guix.texi gnu/local.mk gnu/packages/admin.scm gnu/packages/base.scm gnu/packages/chromium.scm gnu/packages/compression.scm gnu/packages/databases.scm gnu/packages/diffoscope.scm gnu/packages/freedesktop.scm gnu/packages/gnome.scm gnu/packages/gnupg.scm gnu/packages/guile.scm gnu/packages/inkscape.scm gnu/packages/llvm.scm gnu/packages/openldap.scm gnu/packages/pciutils.scm gnu/packages/ruby.scm gnu/packages/samba.scm gnu/packages/sqlite.scm gnu/packages/statistics.scm gnu/packages/syndication.scm gnu/packages/tex.scm gnu/packages/tls.scm gnu/packages/version-control.scm gnu/packages/xml.scm guix/build-system/copy.scm guix/scripts/home.scm
Diffstat (limited to 'gnu/home/services/desktop.scm')
-rw-r--r--gnu/home/services/desktop.scm58
1 files changed, 56 insertions, 2 deletions
diff --git a/gnu/home/services/desktop.scm b/gnu/home/services/desktop.scm
index b0f4d969b0..cb25b03b64 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 @@
#: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 @@
#: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))
;;;
@@ -161,7 +165,8 @@ format."))
(start #~(make-forkexec-constructor
(list #$(file-append redshift "/bin/redshift")
"-c" #$config-file)))
- (stop #~(make-kill-destructor)))))
+ (stop #~(make-kill-destructor))
+ (actions (list (shepherd-configuration-action config-file))))))
(define home-redshift-service-type
(service-type
@@ -172,3 +177,52 @@ format."))
(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
+ (cons "DBUS_VERBOSE=1"
+ (default-environment-variables))
+ #: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.")))