2014-08-24 19:18:18 +02:00
|
|
|
|
<chapter xmlns="http://docbook.org/ns/docbook"
|
|
|
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
|
|
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
|
|
|
version="5.0"
|
|
|
|
|
xml:id="sec-x11">
|
|
|
|
|
|
|
|
|
|
<title>X Window System</title>
|
2016-06-01 16:23:32 +02:00
|
|
|
|
|
2014-08-24 19:18:18 +02:00
|
|
|
|
<para>The X Window System (X11) provides the basis of NixOS’ graphical
|
|
|
|
|
user interface. It can be enabled as follows:
|
|
|
|
|
<programlisting>
|
|
|
|
|
services.xserver.enable = true;
|
|
|
|
|
</programlisting>
|
|
|
|
|
The X server will automatically detect and use the appropriate video
|
|
|
|
|
driver from a set of X.org drivers (such as <literal>vesa</literal>
|
|
|
|
|
and <literal>intel</literal>). You can also specify a driver
|
|
|
|
|
manually, e.g.
|
|
|
|
|
<programlisting>
|
|
|
|
|
services.xserver.videoDrivers = [ "r128" ];
|
|
|
|
|
</programlisting>
|
|
|
|
|
to enable X.org’s <literal>xf86-video-r128</literal> driver.</para>
|
|
|
|
|
|
|
|
|
|
<para>You also need to enable at least one desktop or window manager.
|
|
|
|
|
Otherwise, you can only log into a plain undecorated
|
|
|
|
|
<command>xterm</command> window. Thus you should pick one or more of
|
|
|
|
|
the following lines:
|
|
|
|
|
<programlisting>
|
2017-03-03 14:29:16 +01:00
|
|
|
|
services.xserver.desktopManager.plasma5.enable = true;
|
2014-08-24 19:18:18 +02:00
|
|
|
|
services.xserver.desktopManager.xfce.enable = true;
|
2017-02-21 14:56:26 +01:00
|
|
|
|
services.xserver.desktopManager.gnome3.enable = true;
|
2014-08-24 19:18:18 +02:00
|
|
|
|
services.xserver.windowManager.xmonad.enable = true;
|
|
|
|
|
services.xserver.windowManager.twm.enable = true;
|
|
|
|
|
services.xserver.windowManager.icewm.enable = true;
|
2017-02-21 14:56:26 +01:00
|
|
|
|
services.xserver.windowManager.i3.enable = true;
|
2014-08-24 19:18:18 +02:00
|
|
|
|
</programlisting>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>NixOS’s default <emphasis>display manager</emphasis> (the
|
|
|
|
|
program that provides a graphical login prompt and manages the X
|
2017-02-21 14:56:26 +01:00
|
|
|
|
server) is SLiM. You can select an alternative one by picking one
|
|
|
|
|
of the following lines:
|
2014-08-24 19:18:18 +02:00
|
|
|
|
<programlisting>
|
2017-02-10 03:25:03 +01:00
|
|
|
|
services.xserver.displayManager.sddm.enable = true;
|
2017-02-21 14:56:26 +01:00
|
|
|
|
services.xserver.displayManager.lightdm.enable = true;
|
2014-08-24 19:18:18 +02:00
|
|
|
|
</programlisting>
|
|
|
|
|
</para>
|
|
|
|
|
|
2017-06-17 21:37:25 +02:00
|
|
|
|
<para>You can set the keyboard layout (and optionally the layout variant):
|
|
|
|
|
<programlisting>
|
|
|
|
|
services.xserver.layout = "de";
|
|
|
|
|
services.xserver.xkbVariant = "neo";
|
|
|
|
|
</programlisting>
|
|
|
|
|
</para>
|
|
|
|
|
|
2014-08-24 19:18:18 +02:00
|
|
|
|
<para>The X server is started automatically at boot time. If you
|
|
|
|
|
don’t want this to happen, you can set:
|
|
|
|
|
<programlisting>
|
|
|
|
|
services.xserver.autorun = false;
|
|
|
|
|
</programlisting>
|
|
|
|
|
The X server can then be started manually:
|
|
|
|
|
<screen>
|
2016-06-01 16:23:32 +02:00
|
|
|
|
# systemctl start display-manager.service
|
2014-08-24 19:18:18 +02:00
|
|
|
|
</screen>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<simplesect><title>NVIDIA Graphics Cards</title>
|
|
|
|
|
|
|
|
|
|
<para>NVIDIA provides a proprietary driver for its graphics cards that
|
|
|
|
|
has better 3D performance than the X.org drivers. It is not enabled
|
|
|
|
|
by default because it’s not free software. You can enable it as follows:
|
|
|
|
|
<programlisting>
|
|
|
|
|
services.xserver.videoDrivers = [ "nvidia" ];
|
|
|
|
|
</programlisting>
|
2015-09-02 13:18:09 +02:00
|
|
|
|
Or if you have an older card, you may have to use one of the legacy drivers:
|
|
|
|
|
<programlisting>
|
|
|
|
|
services.xserver.videoDrivers = [ "nvidiaLegacy340" ];
|
|
|
|
|
services.xserver.videoDrivers = [ "nvidiaLegacy304" ];
|
|
|
|
|
services.xserver.videoDrivers = [ "nvidiaLegacy173" ];
|
|
|
|
|
</programlisting>
|
2014-08-24 19:18:18 +02:00
|
|
|
|
You may need to reboot after enabling this driver to prevent a clash
|
|
|
|
|
with other kernel modules.</para>
|
|
|
|
|
|
|
|
|
|
<para>On 64-bit systems, if you want full acceleration for 32-bit
|
|
|
|
|
programs such as Wine, you should also set the following:
|
|
|
|
|
<programlisting>
|
2014-09-07 04:14:44 +02:00
|
|
|
|
hardware.opengl.driSupport32Bit = true;
|
2014-08-24 19:18:18 +02:00
|
|
|
|
</programlisting>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
</simplesect>
|
|
|
|
|
|
2014-09-07 04:42:32 +02:00
|
|
|
|
<simplesect><title>AMD Graphics Cards</title>
|
|
|
|
|
|
|
|
|
|
<para>AMD provides a proprietary driver for its graphics cards that
|
|
|
|
|
has better 3D performance than the X.org drivers. It is not enabled
|
|
|
|
|
by default because it’s not free software. You can enable it as follows:
|
|
|
|
|
<programlisting>
|
|
|
|
|
services.xserver.videoDrivers = [ "ati_unfree" ];
|
|
|
|
|
</programlisting>
|
|
|
|
|
You will need to reboot after enabling this driver to prevent a clash
|
|
|
|
|
with other kernel modules.</para>
|
|
|
|
|
|
|
|
|
|
<para>On 64-bit systems, if you want full acceleration for 32-bit
|
|
|
|
|
programs such as Wine, you should also set the following:
|
|
|
|
|
<programlisting>
|
|
|
|
|
hardware.opengl.driSupport32Bit = true;
|
|
|
|
|
</programlisting>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
</simplesect>
|
2014-08-24 19:18:18 +02:00
|
|
|
|
|
|
|
|
|
<simplesect><title>Touchpads</title>
|
|
|
|
|
|
|
|
|
|
<para>Support for Synaptics touchpads (found in many laptops such as
|
|
|
|
|
the Dell Latitude series) can be enabled as follows:
|
|
|
|
|
<programlisting>
|
2017-11-28 13:55:19 +01:00
|
|
|
|
services.xserver.libinput.enable = true;
|
2014-08-24 19:18:18 +02:00
|
|
|
|
</programlisting>
|
|
|
|
|
The driver has many options (see <xref linkend="ch-options"/>). For
|
2017-11-28 13:55:19 +01:00
|
|
|
|
instance, the following disables tap-to-click behavior:
|
2014-08-24 19:18:18 +02:00
|
|
|
|
<programlisting>
|
2017-11-28 13:55:19 +01:00
|
|
|
|
services.xserver.libinput.tapping = false;
|
2014-08-24 19:18:18 +02:00
|
|
|
|
</programlisting>
|
2017-11-28 13:55:19 +01:00
|
|
|
|
Note: the use of <literal>services.xserver.synaptics</literal> is deprecated since NixOS 17.09.
|
2014-08-24 19:18:18 +02:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
</simplesect>
|
|
|
|
|
|
2016-06-03 18:23:17 +02:00
|
|
|
|
<simplesect><title>GTK/Qt themes</title>
|
2016-06-03 05:38:47 +02:00
|
|
|
|
|
|
|
|
|
<para>GTK themes can be installed either to user profile or system-wide (via
|
2017-12-20 02:16:08 +01:00
|
|
|
|
<literal>environment.systemPackages</literal>). To make Qt 5 applications look similar
|
2016-06-03 05:38:47 +02:00
|
|
|
|
to GTK2 ones, you can install <literal>qt5.qtbase.gtk</literal> package into your
|
|
|
|
|
system environment. It should work for all Qt 5 library versions.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
</simplesect>
|
2014-08-24 19:18:18 +02:00
|
|
|
|
|
|
|
|
|
</chapter>
|