diff --git a/doc/guix.texi b/doc/guix.texi
index 3432a5d604..41b23e4695 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -19438,6 +19438,26 @@ Base Services
 When set to a string, use this directory at the process's root
 directory.

+@item @code{shepherd-requirement}
+List of shepherd requirements.  Unless you know what you are doing, it
+is recommended to add to the default list instead of replacing.
+
+For example you can use this field when performing auto-login on a
+system with elogind to wait on @code{'dbus-system}.
+
+@lisp
+(modify-services %base-services
+  (mingetty-service-type config =>
+                         (mingetty-configuration
+                          (inherit config)
+                          ;; Automatically log in as "guest".
+                          (auto-login "guest")
+                          (shepherd-requirement
+                           (cons 'dbus-system
+                                 (mingetty-configuration-shepherd-requirement
+                                  config))))))
+@end lisp
+
 @item @code{mingetty} (default: @var{mingetty})
 The Mingetty package to use.

diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index f1995640f1..6a42496599 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -193,6 +193,7 @@ (define-module (gnu services base)
             mingetty-configuration-nice
             mingetty-configuration-working-directory
             mingetty-configuration-root-directory
+            mingetty-configuration-shepherd-requirement
             mingetty-configuration?
             mingetty-service  ; deprecated
             mingetty-service-type
@@ -1246,45 +1247,49 @@ (define-deprecated (agetty-service config)
 (define-record-type* <mingetty-configuration>
   mingetty-configuration make-mingetty-configuration
   mingetty-configuration?
-  (mingetty          mingetty-configuration-mingetty ;file-like
-                     (default mingetty))
-  (tty               mingetty-configuration-tty)       ;string
-  (auto-login        mingetty-configuration-auto-login ;string | #f
-                     (default #f))
-  (login-program     mingetty-configuration-login-program ;gexp
-                     (default #f))
-  (login-pause?      mingetty-configuration-login-pause? ;Boolean
-                     (default #f))
-  (clear-on-logout?  mingetty-configuration-clear-on-logout? ;Boolean
-                     (default #t))
-  (delay             mingetty-configuration-delay ;Integer | #f
-                     (default #f))
-  (print-issue       mingetty-configuration-print-issue ;Boolean | Symbol
-                     (default #t))
-  (print-hostname    mingetty-configuration-print-hostname ;Boolean | Symbol
-                     (default #t))
-  (nice              mingetty-configuration-nice ;Integer | #f
-                     (default #f))
-  (working-directory mingetty-configuration-working-directory ;String | #f
-                     (default #f))
-  (root-directory    mingetty-configuration-root-directory ;String | #f
-                     (default #f)))
+  (mingetty             mingetty-configuration-mingetty ;file-like
+                        (default mingetty))
+  (tty                  mingetty-configuration-tty)       ;string
+  (auto-login           mingetty-configuration-auto-login ;string | #f
+                        (default #f))
+  (login-program        mingetty-configuration-login-program ;gexp
+                        (default #f))
+  (login-pause?         mingetty-configuration-login-pause? ;Boolean
+                        (default #f))
+  (clear-on-logout?     mingetty-configuration-clear-on-logout? ;Boolean
+                        (default #t))
+  (delay                mingetty-configuration-delay ;Integer | #f
+                        (default #f))
+  (print-issue          mingetty-configuration-print-issue ;Boolean | Symbol
+                        (default #t))
+  (print-hostname       mingetty-configuration-print-hostname ;Boolean | Symbol
+                        (default #t))
+  (nice                 mingetty-configuration-nice ;Integer | #f
+                        (default #f))
+  (working-directory    mingetty-configuration-working-directory ;String | #f
+                        (default #f))
+  (root-directory       mingetty-configuration-root-directory ;String | #f
+                        (default #f))
+  (shepherd-requirement mingetty-configuration-shepherd-requirement
+                        ;; Since the login prompt shows the host name, wait
+                        ;; for the 'host-name' service to be done.  Also wait
+                        ;; for udev essentially so that the tty text is not
+                        ;; lost in the middle of kernel messages (XXX).
+                        (default '( user-processes host-name udev
+                                    virtual-terminal))))

 (define (mingetty-shepherd-service config)
   (match-record config <mingetty-configuration>
                 ( mingetty tty auto-login login-program
                   login-pause? clear-on-logout? delay
                   print-issue print-hostname nice
-                  working-directory root-directory)
+                  working-directory root-directory shepherd-requirement)
     (list
      (shepherd-service
       (documentation "Run mingetty on an tty.")
       (provision (list (symbol-append 'term- (string->symbol tty))))

-      ;; Since the login prompt shows the host name, wait for the 'host-name'
-      ;; service to be done.  Also wait for udev essentially so that the tty
-      ;; text is not lost in the middle of kernel messages (XXX).
-      (requirement '(user-processes host-name udev virtual-terminal))
+      (requirement shepherd-requirement)

       (start  #~(make-forkexec-constructor
                  (list #$(file-append mingetty "/sbin/mingetty")
