According to https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3101, glib now searches for the session bus socket in runstatedir. The dbus service must thus have its socket in /run/dbus. For interoperability with the dbus standard, /run/dbus is also symlinked to /var/run/dbus. * gnu/services/dbus.scm (dbus-activation): Symlink /run/dbus to /var/run/dbus. (%dbus-accounts): Run dbus in /run/dbus. (dbus-root-service-type): Save the pid file in /run/dbus. --- Le mercredi 04 octobre 2023 à 20:30 +0200, Liliana Marie Prikler a écrit : > Am Mittwoch, dem 04.10.2023 um 12:47 +0200 schrieb Vivien Kraus: > > * gnu/services/dbus.scm (dbus-activation): Symlink /var/run/dbus to > > /run/dbus. > > --- > > gnu/services/dbus.scm | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm > > index 5a0c634393..80968ac1a4 100644 > > --- a/gnu/services/dbus.scm > > +++ b/gnu/services/dbus.scm > > @@ -187,6 +187,7 @@ (define (dbus-activation config) > > ;; This directory contains the daemon's socket so it > > must > > be > > ;; world-readable. > > (mkdir-p/perms "/var/run/dbus" user #o755)) > > + (symlink "/var/run/dbus" "/run/dbus") > From [1]: > > As documented in the NEWS file in > > https://gitlab.freedesktop.org/dbus/dbus/-/merge_requests/209, it’s > > only valid to use /run – rather than /var/run – for D-Bus if the > > two > > paths are interoperable. i.e. /var/run should be a symlink to /run, > > and the D-Bus daemon should be configured to put its socket there. > > Thus, the order of the two ought to be reversed. Alternatively, we > could add '-Druntime_dir=/var/run' to glib. WDYT? > > [1]: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3101 Thank you for finding this information. I think we should follow glib, and have the socket in /run/dbus, with the symlink for standard interoperability. I’m still concerned about doing a symlink in the activation function. What if we activate a new system from an existing one? Won’t the symlink fail? I think we should preemptively delete /var/run/dbus and make a new symlink every time. But I could be wrong, maybe this is not needed. What do you think? Best regards, Vivien gnu/services/dbus.scm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm index 5a0c634393..53efa7adea 100644 --- a/gnu/services/dbus.scm +++ b/gnu/services/dbus.scm @@ -163,7 +163,7 @@ (define %dbus-accounts (group "messagebus") (system? #t) (comment "D-Bus system bus user") - (home-directory "/var/run/dbus") + (home-directory "/run/dbus") (shell (file-append shadow "/sbin/nologin"))))) (define dbus-setuid-programs @@ -186,7 +186,11 @@ (define (dbus-activation config) (let ((user (getpwnam "messagebus"))) ;; This directory contains the daemon's socket so it must be ;; world-readable. - (mkdir-p/perms "/var/run/dbus" user #o755)) + (mkdir-p/perms "/run/dbus" user #o755)) + + (when (file-exists? "/var/run/dbus") + (delete-file "/var/run/dbus")) + (symlink "/run/dbus" "/var/run/dbus") (unless (file-exists? "/etc/machine-id") (format #t "creating /etc/machine-id...~%") @@ -210,7 +214,7 @@ (define dbus-shepherd-service '(#:environment-variables '("DBUS_VERBOSE=1") #:log-file "/var/log/dbus-daemon.log") '()) - #:pid-file "/var/run/dbus/pid")) + #:pid-file "/run/dbus/pid")) (stop #~(make-kill-destructor))))))) (define dbus-root-service-type base-commit: b18b2d13488f2a92331ccad2dc8cbb54ee15582f -- 2.41.0