~ruther/guix-local

b37f86d7a31c654e894faf47c233503231b2c6eb — Ludovic Courtès 8 years ago 94b9abd
services: xorg: Document 'slim-configuration' and deprecate 'slim-service'.

* gnu/services/xorg.scm (<slim-configuration>): Provide default values
for all fields.
(slim-service-type)[default-value]: New field.
* doc/guix.texi (X Window): Remove 'slim-service' documentation.
Document 'slim-service-type' and 'slim-configuration'.
* gnu/services/desktop.scm (%desktop-services): Use 'slim-service-type'.
3 files changed, 91 insertions(+), 46 deletions(-)

M doc/guix.texi
M gnu/services/desktop.scm
M gnu/services/xorg.scm
M doc/guix.texi => doc/guix.texi +60 -36
@@ 11001,6 11001,65 @@ Xorg---is provided by the @code{(gnu services xorg)} module.  Note that
there is no @code{xorg-service} procedure.  Instead, the X server is
started by the @dfn{login manager}, currently SLiM.

@defvr {Scheme Variable} slim-service-type
This is the type for the SLiM graphical login manager for X11.

@cindex session types (X11)
@cindex X11 session types
SLiM looks for @dfn{session types} described by the @file{.desktop} files in
@file{/run/current-system/profile/share/xsessions} and allows users to
choose a session from the log-in screen using @kbd{F1}.  Packages such
as @code{xfce}, @code{sawfish}, and @code{ratpoison} provide
@file{.desktop} files; adding them to the system-wide set of packages
automatically makes them available at the log-in screen.

In addition, @file{~/.xsession} files are honored.  When available,
@file{~/.xsession} must be an executable that starts a window manager
and/or other X clients.
@end defvr

@deftp {Data Type} slim-configuration
Data type representing the configuration of @code{slim-service-type}.

@table @asis
@item @code{allow-empty-passwords?} (default: @code{#t})
Whether to allow logins with empty passwords.

@item @code{auto-login?} (default: @code{#f})
@itemx @code{default-user} (default: @code{""})
When @code{auto-login?} is false, SLiM presents a log-in screen.

When @code{auto-login?} is true, SLiM logs in directly as
@code{default-user}.

@item @code{theme} (default: @code{%default-slim-theme})
@itemx @code{theme-name} (default: @code{%default-slim-theme-name})
The graphical theme to use and its name.

@item @code{auto-login-session} (default: @code{windowmaker})
The default session to use when none is specified.

@item @code{startx} (default: @code{(xorg-start-command)})
The command used to start the X11 graphical server.

@item @code{xauth} (default: @code{xauth})
The XAuth package to use.

@item @code{shepherd} (default: @code{shepherd})
The Shepherd package used when invoking @command{halt} and
@command{reboot}.

@item @code{slim} (default: @code{slim})
The SLiM package to use.
@end table
@end deftp

@defvr {Scheme Variable} %default-theme
@defvrx {Scheme Variable} %default-theme-name
The default SLiM theme and its name.
@end defvr


@deftp {Data Type} sddm-configuration
This is the data type representing the sddm service configuration.



@@ 11094,6 11153,7 @@ Relogin after logout.
@end deftp

@cindex login manager
@cindex X11 login
@deffn {Scheme Procedure} sddm-service config
Return a service that spawns the SDDM graphical login manager for config of
type @code{<sddm-configuration>}.


@@ 11105,42 11165,6 @@ type @code{<sddm-configuration>}.
@end example
@end deffn

@deffn {Scheme Procedure} slim-service [#:allow-empty-passwords? #f] @
  [#:auto-login? #f] [#:default-user ""] [#:startx] @
  [#:theme @var{%default-slim-theme}] @
  [#:theme-name @var{%default-slim-theme-name}]
Return a service that spawns the SLiM graphical login manager, which in
turn starts the X display server with @var{startx}, a command as returned by
@code{xorg-start-command}.

@cindex X session

SLiM automatically looks for session types described by the @file{.desktop}
files in @file{/run/current-system/profile/share/xsessions} and allows users
to choose a session from the log-in screen using @kbd{F1}.  Packages such as
@var{xfce}, @var{sawfish}, and @var{ratpoison} provide @file{.desktop} files;
adding them to the system-wide set of packages automatically makes them
available at the log-in screen.

In addition, @file{~/.xsession} files are honored.  When available,
@file{~/.xsession} must be an executable that starts a window manager
and/or other X clients.

When @var{allow-empty-passwords?} is true, allow logins with an empty
password.  When @var{auto-login?} is true, log in automatically as
@var{default-user}.

If @var{theme} is @code{#f}, use the default log-in theme; otherwise
@var{theme} must be a gexp denoting the name of a directory containing the
theme to use.  In that case, @var{theme-name} specifies the name of the
theme.
@end deffn

@defvr {Scheme Variable} %default-theme
@defvrx {Scheme Variable} %default-theme-name
The G-Expression denoting the default SLiM theme and its name.
@end defvr

@deffn {Scheme Procedure} xorg-start-command [#:guile] @
  [#:modules %default-xorg-modules] @
  [#:fonts %default-xorg-fonts] @

M gnu/services/desktop.scm => gnu/services/desktop.scm +1 -1
@@ 854,7 854,7 @@ with the administrator's password."

(define %desktop-services
  ;; List of services typically useful for a "desktop" use case.
  (cons* (slim-service)
  (cons* (service slim-service-type)

         ;; Screen lockers are a pretty useful thing and these are small.
         (screen-locker-service slock)

M gnu/services/xorg.scm => gnu/services/xorg.scm +30 -9
@@ 52,7 52,20 @@

            %default-slim-theme
            %default-slim-theme-name

            slim-configuration
            slim-configuration?
            slim-configuration-slim
            slim-configuration-allow-empty-passwords?
            slim-configuration-auto-login?
            slim-configuration-default-user
            slim-configuration-theme
            slim-configuration-theme-name
            slim-configuration-xauth
            slim-configuration-shepherd
            slim-configuration-auto-login-session
            slim-configuration-startx

            slim-service-type
            slim-service



@@ 355,17 368,24 @@ which should be passed to this script as the first argument.  If not, the
  slim-configuration?
  (slim slim-configuration-slim
        (default slim))
  (allow-empty-passwords? slim-configuration-allow-empty-passwords?)
  (auto-login? slim-configuration-auto-login?)
  (default-user slim-configuration-default-user)
  (theme slim-configuration-theme)
  (theme-name slim-configuration-theme-name)
  (allow-empty-passwords? slim-configuration-allow-empty-passwords?
                          (default #t))
  (auto-login? slim-configuration-auto-login?
               (default #f))
  (default-user slim-configuration-default-user
                (default ""))
  (theme slim-configuration-theme
         (default %default-slim-theme))
  (theme-name slim-configuration-theme-name
              (default %default-slim-theme-name))
  (xauth slim-configuration-xauth
         (default xauth))
  (shepherd slim-configuration-shepherd
            (default shepherd))
  (auto-login-session slim-configuration-auto-login-session)
  (startx slim-configuration-startx))
  (auto-login-session slim-configuration-auto-login-session
                      (default (file-append windowmaker "/bin/wmaker")))
  (startx slim-configuration-startx
          (default (xorg-start-command))))

(define (slim-pam-service config)
  "Return a PAM service for @command{slim}."


@@ 440,9 460,10 @@ reboot_cmd " shepherd "/sbin/reboot\n"
                       ;; Unconditionally add xterm to the system profile, to
                       ;; avoid bad surprises.
                       (service-extension profile-service-type
                                          (const (list xterm)))))))
                                          (const (list xterm)))))
                (default-value (slim-configuration))))

(define* (slim-service #:key (slim slim)
(define* (slim-service #:key (slim slim)          ;deprecated
                       (allow-empty-passwords? #t) auto-login?
                       (default-user "")
                       (theme %default-slim-theme)