Using X without a Display Manager: Difference between revisions
imported>Samueldr m Changed warning to outdated template. |
imported>Giraffito rewrite entirely. xlaunch does not exist since 2016: https://github.com/NixOS/nixpkgs/commit/20fe51661dcea78682420767fb8afd1170b06781 and there is no need for additional setuid wrappers |
||
Line 1: | Line 1: | ||
'''''Please note''': this page is presently being rewritten by someone very new to nixOS, so do not use it as an example of best practices. The previous content of this page was 2 years out of date and factually incorrect.'' | |||
To run X11 as a regular user, ''without'' `services.xserver.enable = true;` in configuration.nix, do the following: | |||
First, '''install packages'''; you need X11 itself, some X11 input modules (e.g. xf86-input-evdev, xf86-input-synaptics, xf86-input-libinput), and possibly video modules as well (xf86-video-intel, xf86-video-ati, xf86-video-nouveau). | |||
== | You probably want to use '''DRI acceleration''' for X; enable it and OpenGL in /etc/nixos/configuration.nix: `hardware.opengl.enable = true;` and `hardware.opengl.driSupport = true;`. | ||
Then, it's just necessary to '''gather X configuration files''' into one directory and create a config file that also points X at the correct module paths. | |||
<syntaxhighlight lang=" | This script does that (though it hard-codes `pkgs` which should instead be computed from the current configuration): | ||
<syntaxhighlight lang="sh"> | |||
#!/bin/sh | |||
#generate unprivileged user xorg.conf for nixOS | |||
#TODO: obey XDG guidelines rather than assuming ~/.config | |||
mkdir -p ~/.config/xorg.conf.d | |||
cd ~/.config/xorg.conf.d | |||
#failed glob expansions become empty, not literal 'foo/*' | |||
shopt -s nullglob | |||
2. | #TODO: don't hard-code package names! | ||
pkgs=" | |||
i0r09miwjk8z9wd2261gh3a3mdzln4w4-xf86-input-evdev-2.10.5 | |||
av8542xr7kn44abja120hk3ppd2vp8l8-xf86-video-intel-2017-10-19 | |||
8vp93ci2lkcg9c5jh7csfz24npjcnhhx-xf86-input-synaptics-1.9.0 | |||
660q2zwjrn0cqkjj6cy861pkazs6yrs0-xorg-server-1.19.6 | |||
" | |||
echo 'Section "Files"' > 00-nix-module-paths | |||
for pkg in $pkgs; do | |||
for conf in /nix/store/"$pkg"/share/X11/xorg.conf.d/*; do | |||
ln -s "$conf" ./ | |||
done | |||
echo ' ModulePath "/nix/store/'"$pkg"'/lib/xorg/modules/"' >> 00-nix-module-paths.conf | |||
done | |||
echo 'EndSection' >> 00-nix-module-paths.conf | |||
</syntaxhighlight> | </syntaxhighlight> | ||
You can now '''start X11''' by running: | |||
<syntaxhighlight lang="sh"> | |||
startx -- :0 -configdir ~/.config/xorg.conf.d | |||
<syntaxhighlight lang=" | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 16:14, 16 March 2018
Please note: this page is presently being rewritten by someone very new to nixOS, so do not use it as an example of best practices. The previous content of this page was 2 years out of date and factually incorrect.
To run X11 as a regular user, without `services.xserver.enable = true;` in configuration.nix, do the following:
First, install packages; you need X11 itself, some X11 input modules (e.g. xf86-input-evdev, xf86-input-synaptics, xf86-input-libinput), and possibly video modules as well (xf86-video-intel, xf86-video-ati, xf86-video-nouveau).
You probably want to use DRI acceleration for X; enable it and OpenGL in /etc/nixos/configuration.nix: `hardware.opengl.enable = true;` and `hardware.opengl.driSupport = true;`.
Then, it's just necessary to gather X configuration files into one directory and create a config file that also points X at the correct module paths.
This script does that (though it hard-codes `pkgs` which should instead be computed from the current configuration):
#!/bin/sh
#generate unprivileged user xorg.conf for nixOS
#TODO: obey XDG guidelines rather than assuming ~/.config
mkdir -p ~/.config/xorg.conf.d
cd ~/.config/xorg.conf.d
#failed glob expansions become empty, not literal 'foo/*'
shopt -s nullglob
#TODO: don't hard-code package names!
pkgs="
i0r09miwjk8z9wd2261gh3a3mdzln4w4-xf86-input-evdev-2.10.5
av8542xr7kn44abja120hk3ppd2vp8l8-xf86-video-intel-2017-10-19
8vp93ci2lkcg9c5jh7csfz24npjcnhhx-xf86-input-synaptics-1.9.0
660q2zwjrn0cqkjj6cy861pkazs6yrs0-xorg-server-1.19.6
"
echo 'Section "Files"' > 00-nix-module-paths
for pkg in $pkgs; do
for conf in /nix/store/"$pkg"/share/X11/xorg.conf.d/*; do
ln -s "$conf" ./
done
echo ' ModulePath "/nix/store/'"$pkg"'/lib/xorg/modules/"' >> 00-nix-module-paths.conf
done
echo 'EndSection' >> 00-nix-module-paths.conf
You can now start X11 by running:
startx -- :0 -configdir ~/.config/xorg.conf.d