···2525<command>xterm</command> window. Thus you should pick one or more of
2626the following lines:
2727<programlisting>
2828-services.xserver.desktopManager.kde4.enable = true;
2828+services.xserver.desktopManager.kde5.enable = true;
2929services.xserver.desktopManager.xfce.enable = true;
3030services.xserver.windowManager.xmonad.enable = true;
3131services.xserver.windowManager.twm.enable = true;
···35353636<para>NixOS’s default <emphasis>display manager</emphasis> (the
3737program that provides a graphical login prompt and manages the X
3838-server) is SLiM. You can select KDE’s <command>kdm</command> instead:
3838+server) is SLiM. You can select KDE’s <command>sddm</command> instead:
3939<programlisting>
4040-services.xserver.displayManager.kdm.enable = true;
4040+services.xserver.displayManager.sddm.enable = true;
4141</programlisting>
4242</para>
4343
+2-2
nixos/doc/manual/configuration/xfce.xml
···4141 (DM is the program that provides a graphical login prompt
4242 and manages the X server.)
4343 You can, for example, select KDE’s
4444- <command>kdm</command> instead:
4444+ <command>sddm</command> instead:
4545 <programlisting>
4646- services.xserver.displayManager.kdm.enable = true;
4646+ services.xserver.displayManager.sddm.enable = true;
4747 </programlisting>
4848 </para>
4949
···65656666</para>
67676868-<section xml:id="sec-option-declarations-eot"><title>Extensible Option
6868+<section xml:id="sec-option-declarations-eot"><title>Extensible Option
6969 Types</title>
70707171- <para>Extensible option types is a feature that allow to extend certain types
7171+ <para>Extensible option types is a feature that allow to extend certain types
7272 declaration through multiple module files.
7373- This feature only work with a restricted set of types, namely
7373+ This feature only work with a restricted set of types, namely
7474 <literal>enum</literal> and <literal>submodules</literal> and any composed
7575 forms of them.</para>
76767777- <para>Extensible option types can be used for <literal>enum</literal> options
7878- that affects multiple modules, or as an alternative to related
7777+ <para>Extensible option types can be used for <literal>enum</literal> options
7878+ that affects multiple modules, or as an alternative to related
7979 <literal>enable</literal> options.</para>
80808181 <para>As an example, we will take the case of display managers. There is a
8282 central display manager module for generic display manager options and a
8383- module file per display manager backend (slim, kdm, gdm ...).
8383+ module file per display manager backend (slim, sddm, gdm ...).
8484 </para>
85858686 <para>There are two approach to this module structure:
···9696 </para>
97979898 <para>Both approachs have problems.</para>
9999-9999+100100 <para>Making backends independent can quickly become hard to manage. For
101101 display managers, there can be only one enabled at a time, but the type
102102 system can not enforce this restriction as there is no relation between
···108108 central module will require to change the central module option every time
109109 a new backend is added or removed.</para>
110110111111- <para>By using extensible option types, it is possible to create a placeholder
112112- option in the central module (<xref linkend='ex-option-declaration-eot-service'
113113- />), and to extend it in each backend module (<xref
114114- linkend='ex-option-declaration-eot-backend-slim' />, <xref
115115- linkend='ex-option-declaration-eot-backend-kdm' />).</para>
116116-111111+ <para>By using extensible option types, it is possible to create a placeholder
112112+ option in the central module (<xref linkend='ex-option-declaration-eot-service'
113113+ />), and to extend it in each backend module (<xref
114114+ linkend='ex-option-declaration-eot-backend-slim' />, <xref
115115+ linkend='ex-option-declaration-eot-backend-sddm' />).</para>
116116+117117 <para>As a result, <literal>displayManager.enable</literal> option values can
118118 be added without changing the main service module file and the type system
119119 automatically enforce that there can only be a single display manager
120120 enabled.</para>
121121122122-<example xml:id='ex-option-declaration-eot-service'><title>Extensible type
122122+<example xml:id='ex-option-declaration-eot-service'><title>Extensible type
123123 placeholder in the service module</title>
124124<screen>
125125services.xserver.displayManager.enable = mkOption {
···127127 type = with types; nullOr (enum [ ]);
128128};</screen></example>
129129130130-<example xml:id='ex-option-declaration-eot-backend-slim'><title>Extending
131131- <literal>services.xserver.displayManager.enable</literal> in the
130130+<example xml:id='ex-option-declaration-eot-backend-slim'><title>Extending
131131+ <literal>services.xserver.displayManager.enable</literal> in the
132132 <literal>slim</literal> module</title>
133133<screen>
134134services.xserver.displayManager.enable = mkOption {
135135 type = with types; nullOr (enum [ "slim" ]);
136136};</screen></example>
137137138138-<example xml:id='ex-option-declaration-eot-backend-kdm'><title>Extending
139139- <literal>services.foo.backend</literal> in the <literal>kdm</literal>
138138+<example xml:id='ex-option-declaration-eot-backend-sdm'><title>Extending
139139+ <literal>services.foo.backend</literal> in the <literal>sdm</literal>
140140 module</title>
141141<screen>
142142services.xserver.displayManager.enable = mkOption {
143143- type = with types; nullOr (enum [ "kdm" ]);
143143+ type = with types; nullOr (enum [ "sddm" ]);
144144};</screen></example>
145145146146-<para>The placeholder declaration is a standard <literal>mkOption</literal>
147147- declaration, but it is important that extensible option declarations only use
146146+<para>The placeholder declaration is a standard <literal>mkOption</literal>
147147+ declaration, but it is important that extensible option declarations only use
148148 the <literal>type</literal> argument.</para>
149149150150-<para>Extensible option types work with any of the composed variants of
151151- <literal>enum</literal> such as
152152- <literal>with types; nullOr (enum [ "foo" "bar" ])</literal>
150150+<para>Extensible option types work with any of the composed variants of
151151+ <literal>enum</literal> such as
152152+ <literal>with types; nullOr (enum [ "foo" "bar" ])</literal>
153153 or <literal>with types; listOf (enum [ "foo" "bar" ])</literal>.</para>
154154155155</section>
···11# This module declares the options to define a *display manager*, the
22-# program responsible for handling X logins (such as xdm, kdm, gdb, or
22+# program responsible for handling X logins (such as xdm, gdb, or
33# SLiM). The display manager allows the user to select a *session
44# type*. When the user logs in, the display manager starts the
55# *session script* ("xsession" below) to launch the selected session
+2-12
nixos/modules/services/x11/terminal-server.nix
···1616 services.xserver.enable = true;
1717 services.xserver.videoDrivers = [];
18181919- # Enable KDM. Any display manager will do as long as it supports XDMCP.
2020- services.xserver.displayManager.kdm.enable = true;
2121- services.xserver.displayManager.kdm.enableXDMCP = true;
2222- services.xserver.displayManager.kdm.extraConfig =
2323- ''
2424- [General]
2525- # We're headless, so don't bother starting an X server.
2626- StaticServers=
2727-2828- [Xdmcp]
2929- Xaccess=${pkgs.writeText "Xaccess" "localhost"}
3030- '';
1919+ # Enable GDM. Any display manager will do as long as it supports XDMCP.
2020+ services.xserver.displayManager.gdm.enable = true;
31213222 systemd.sockets.terminal-server =
3323 { description = "Terminal Server Socket";