diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index a414a9d9de217a3fa891db396b743916b3f80c82..662f511762773ebe8f5cd7df9e4df757cbaa1f65 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -73,7 +73,17 @@ (define dbus
                                ;; config.
                                ;; "--sysconfdir=/etc"
 
-                               "--with-session-socket-dir=/tmp")))
+                               "--with-session-socket-dir=/tmp")
+       #:phases (alist-cons-after
+                 'install 'post-install
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   ;; 'dbus-launch' bails out if the 'session.d' directory
+                   ;; below is missing, so create it along with its companion.
+                   (let ((out (assoc-ref outputs "out")))
+                     (mkdir (string-append out "/etc/dbus-1/session.d"))
+                     (mkdir (string-append out "/etc/dbus-1/system.d"))
+                     #t))
+                 %standard-phases)))
     (inputs
      `(("expat" ,expat)
        ("pkg-config" ,pkg-config)