diff options
-rw-r--r-- | doc/guix.texi | 16 | ||||
-rw-r--r-- | gnu/services/xorg.scm | 33 |
2 files changed, 46 insertions, 3 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index e59827d2bb..77521a3542 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -23627,9 +23627,11 @@ Usually the X server is started by a login manager. Return a @code{startx} script in which the modules, fonts, etc. specified in @var{config} are available. The result should be used in place of @code{startx} and should be invoked by the user from a tty -after login. Unlike @code{xorg-start-command}, this script calls -xinit. Therefore it works well when executed from a tty. If you are -using a desktop environment, you are unlikely to need this procedure. +after login. Unlike @code{xorg-start-command}, this script calls xinit. +Therefore it works well when executed from a tty. This script can be +set up as @code{startx} using @code{startx-command-service-type}. If +you are using a desktop environment, you are unlikely to need this +procedure. @end deffn @@ -23691,6 +23693,14 @@ Whether to setup program as setuid binary. @end deftp +@defvar startx-command-service-type +Add @command{startx} to the system profile putting it onto @env{PATH}. + +The value for this service is a @code{<xorg-configuration>} object which +is passed to the @code{xorg-start-command-xinit} procedure producing the +@command{startx} used. Default value is @code{(xorg-configuration)}. +@end defvar + @node Printing Services @subsection Printing Services diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 0b9803c425..e7d8922d76 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -92,6 +92,7 @@ xorg-start-command-xinit xinitrc xorg-server-service-type + startx-command-service-type %default-slim-theme %default-slim-theme-name @@ -496,6 +497,38 @@ therefore it works well when executed from tty." (program-file "startx" exp)) +(define (startx-command-profile-service config) + ;; XXX: profile-service-type only accepts <package> objects. + (package + (name "startx-profile-package") + (version "0") + (source (xorg-start-command-xinit config)) + (build-system trivial-build-system) + (arguments + (list + #:modules '((guix build utils)) + #:builder + #~(begin + (use-modules (guix build utils)) + (let ((bin (string-append #$output "/bin"))) + (mkdir-p bin) + (symlink #$source (string-append bin "/startx")))))) + (home-page #f) + (synopsis #f) + (description #f) + (license #f))) + +(define startx-command-service-type + (service-type + (name 'startx-command) + (extensions + (list (service-extension profile-service-type + (compose list startx-command-profile-service)))) + (default-value (xorg-configuration)) + (description "Add @command{startx} to the system profile."))) + + + (define* (xinitrc #:key fallback-session) "Return a system-wide xinitrc script that starts the specified X session, which should be passed to this script as the first argument. If not, the |