~ruther/guix-local

e51a930c5c5a8609b8656bf997ec853cc04391e7 — Tomas Volf 1 year, 8 months ago 8db1d51
services: xorg: Add startx-command-service-type.

* gnu/services/xorg.scm (startx-command-profile-service,
startx-command-service-type): New variables.
* doc/guix.texi (X Window): Document startx-command-service-type.

Change-Id: Ia2a7c3b2d5ebf6bcfff40cb2640b17d3baf6eba0
Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
2 files changed, 46 insertions(+), 3 deletions(-)

M doc/guix.texi
M gnu/services/xorg.scm
M doc/guix.texi => doc/guix.texi +13 -3
@@ 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

M gnu/services/xorg.scm => gnu/services/xorg.scm +33 -0
@@ 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