services: xorg: Allow extra config text to be added verbatim.

* gnu/services/xorg.scm (xorg-configuration-file): Add #:extra-config and
  honor it.
* doc/guix.texi (X Window): Adjust accordingly.
This commit is contained in:
Ludovic Courtès 2015-05-21 18:12:28 +02:00
parent d1cdd7ba7a
commit 12422c9d38
2 changed files with 18 additions and 6 deletions

View File

@ -5260,7 +5260,7 @@ Usually the X server is started by a login manager.
@end deffn @end deffn
@deffn {Monadic Procedure} xorg-configuration-file @ @deffn {Monadic Procedure} xorg-configuration-file @
[#:drivers '()] [#:resolutions '()] [#:drivers '()] [#:resolutions '()] [#:extra-config '()]
Return a configuration file for the Xorg server containing search paths for Return a configuration file for the Xorg server containing search paths for
all the common drivers. all the common drivers.
@ -5271,6 +5271,10 @@ this order---e.g., @code{(\"modesetting\" \"vesa\")}.
Likewise, when @var{resolutions} is the empty list, Xorg chooses an Likewise, when @var{resolutions} is the empty list, Xorg chooses an
appropriate screen resolution; otherwise, it must be a list of appropriate screen resolution; otherwise, it must be a list of
resolutions---e.g., @code{((1024 768) (640 480))}. resolutions---e.g., @code{((1024 768) (640 480))}.
Last, @var{extra-config} is a list of strings or objects appended to the
@code{text-file*} argument list. It is used to pass extra text to be added
verbatim to the configuration file.
@end deffn @end deffn
@node Desktop Services @node Desktop Services

View File

@ -49,7 +49,8 @@
;;; ;;;
;;; Code: ;;; Code:
(define* (xorg-configuration-file #:key (drivers '()) (resolutions '())) (define* (xorg-configuration-file #:key (drivers '()) (resolutions '())
(extra-config '()))
"Return a configuration file for the Xorg server containing search paths for "Return a configuration file for the Xorg server containing search paths for
all the common drivers. all the common drivers.
@ -59,7 +60,11 @@ this order---e.g., @code{(\"modesetting\" \"vesa\")}.
Likewise, when @var{resolutions} is the empty list, Xorg chooses an Likewise, when @var{resolutions} is the empty list, Xorg chooses an
appropriate screen resolution; otherwise, it must be a list of appropriate screen resolution; otherwise, it must be a list of
resolutions---e.g., @code{((1024 768) (640 480))}." resolutions---e.g., @code{((1024 768) (640 480))}.
Last, @var{extra-config} is a list of strings or objects appended to the
@code{text-file*} argument list. It is used to pass extra text to be added
verbatim to the configuration file."
(define (device-section driver) (define (device-section driver)
(string-append " (string-append "
Section \"Device\" Section \"Device\"
@ -82,7 +87,7 @@ Section \"Screen\"
EndSubSection EndSubSection
EndSection")) EndSection"))
(text-file* "xserver.conf" " (apply text-file* "xserver.conf" "
Section \"Files\" Section \"Files\"
FontPath \"" font-adobe75dpi "/share/fonts/X11/75dpi\" FontPath \"" font-adobe75dpi "/share/fonts/X11/75dpi\"
ModulePath \"" xf86-video-vesa "/lib/xorg/modules/drivers\" ModulePath \"" xf86-video-vesa "/lib/xorg/modules/drivers\"
@ -107,10 +112,13 @@ Section \"ServerFlags\"
Option \"AllowMouseOpenFail\" \"on\" Option \"AllowMouseOpenFail\" \"on\"
EndSection EndSection
" "
(string-join (map device-section drivers) "\n") (string-join (map device-section drivers) "\n") "\n"
(string-join (map (cut screen-section <> resolutions) (string-join (map (cut screen-section <> resolutions)
drivers) drivers)
"\n"))) "\n")
"\n"
extra-config))
(define* (xorg-start-command #:key (define* (xorg-start-command #:key
(guile (canonical-package guile-2.0)) (guile (canonical-package guile-2.0))