diff --git a/gnu/installer/services.scm b/gnu/installer/services.scm
index 640224688e40f07f4145d500c214c56525d3936f..1036b2107095e783e576b66238eae8373bf000dd 100644
--- a/gnu/installer/services.scm
+++ b/gnu/installer/services.scm
@@ -102,4 +102,13 @@ (define (system-services->configuration services)
                        '%base-services)))
     (if (null? snippets)
         `((services ,base))
-        `((services (cons* ,@snippets ,base))))))
+        `((services (cons* ,@snippets
+
+                           ,@(if desktop?
+                                 ;; XXX: Assume 'keyboard-layout' is in scope.
+                                 '((set-xorg-configuration
+                                    (xorg-configuration
+                                     (keyboard-layout keyboard-layout))))
+                                 '())
+
+                           ,base))))))
diff --git a/gnu/installer/steps.scm b/gnu/installer/steps.scm
index 96cfdd03d1984540e82f5256b924fb718a32f857..1483cdc3dbb6775f6d449da95f91794e3ad43ff1 100644
--- a/gnu/installer/steps.scm
+++ b/gnu/installer/steps.scm
@@ -215,7 +215,7 @@ (define (format-configuration steps results)
                   '())))
           steps))
         (modules '((use-modules (gnu))
-                   (use-service-modules desktop networking ssh))))
+                   (use-service-modules desktop networking ssh xorg))))
     `(,@modules
       ()
       (operating-system ,@configuration))))