diff --git a/nixos/doc/manual/release-notes/rl-1609.xml b/nixos/doc/manual/release-notes/rl-1609.xml
index b08688a6695..be175a54c23 100644
--- a/nixos/doc/manual/release-notes/rl-1609.xml
+++ b/nixos/doc/manual/release-notes/rl-1609.xml
@@ -16,6 +16,10 @@ has the following highlights:
See for documentation.
+
+ Xorg-server-1.18.*. If you choose "ati_unfree" driver,
+ 1.17.* is still used due to ABI incompatibility.
+
The following new services were added since the last release:
diff --git a/nixos/modules/hardware/video/ati.nix b/nixos/modules/hardware/video/ati.nix
index 033e49d2233..bf91bcf0776 100644
--- a/nixos/modules/hardware/video/ati.nix
+++ b/nixos/modules/hardware/video/ati.nix
@@ -18,6 +18,8 @@ in
config = mkIf enabled {
+ nixpkgs.config.xorg.fglrxCompat = true;
+
services.xserver.drivers = singleton
{ name = "fglrx"; modules = [ ati_x11 ]; libPath = [ "${ati_x11}/lib" ]; };
diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix
index 82d3e31e2a0..35816c3a16d 100644
--- a/nixos/modules/services/x11/xserver.nix
+++ b/nixos/modules/services/x11/xserver.nix
@@ -463,7 +463,14 @@ in
{ source = "${cfg.xkbDir}";
target = "X11/xkb";
}
- ]);
+ ])
+ # Needed since 1.18; see https://bugs.freedesktop.org/show_bug.cgi?id=89023#c5
+ ++ (let cfgPath = "/X11/xorg.conf.d/10-evdev.conf"; in
+ [{
+ source = xorg.xf86inputevdev.out + "/share" + cfgPath;
+ target = cfgPath;
+ }]
+ );
environment.systemPackages =
[ xorg.xorgserver.out
@@ -479,6 +486,7 @@ in
xorg.xauth
pkgs.xterm
pkgs.xdg_utils
+ xorg.xf86inputevdev.out # get evdev.4 man page
]
++ optional (elem "virtualbox" cfg.videoDrivers) xorg.xrefresh;
@@ -538,7 +546,7 @@ in
services.xserver.modules =
concatLists (catAttrs "modules" cfg.drivers) ++
[ xorg.xorgserver.out
- xorg.xf86inputevdev
+ xorg.xf86inputevdev.out
];
services.xserver.xkbDir = mkDefault "${pkgs.xkeyboard_config}/etc/X11/xkb";
diff --git a/pkgs/desktops/kde-5/plasma-5.6/plasma-desktop/default.nix b/pkgs/desktops/kde-5/plasma-5.6/plasma-desktop/default.nix
index e3d9176b816..ca09e15bc44 100644
--- a/pkgs/desktops/kde-5/plasma-5.6/plasma-desktop/default.nix
+++ b/pkgs/desktops/kde-5/plasma-5.6/plasma-desktop/default.nix
@@ -36,7 +36,7 @@ plasmaPackage rec {
];
NIX_CFLAGS_COMPILE = [ "-I${xorgserver.dev}/include/xorg" ];
cmakeFlags = [
- "-DEvdev_INCLUDE_DIRS=${xf86inputevdev}/include/xorg"
+ "-DEvdev_INCLUDE_DIRS=${xf86inputevdev.dev}/include/xorg"
"-DSynaptics_INCLUDE_DIRS=${xf86inputsynaptics}/include/xorg"
];
postInstall = ''
diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix
index 16fa2423a11..32303dac386 100644
--- a/pkgs/servers/x11/xorg/default.nix
+++ b/pkgs/servers/x11/xorg/default.nix
@@ -2339,11 +2339,11 @@ let
}) // {inherit ;};
xorgserver = (mkDerivation "xorgserver" {
- name = "xorg-server-1.17.4";
+ name = "xorg-server-1.18.3";
builder = ./builder.sh;
src = fetchurl {
- url = mirror://xorg/individual/xserver/xorg-server-1.17.4.tar.bz2;
- sha256 = "0mv4ilpqi5hpg182mzqn766frhi6rw48aba3xfbaj4m82v0lajqc";
+ url = mirror://xorg/individual/xserver/xorg-server-1.18.3.tar.bz2;
+ sha256 = "1ka206v4nbw6qz072gh0543aq44azq2zv9f0yysy5nvwa4i9qwza";
};
buildInputs = [pkgconfig dri2proto dri3proto renderproto libdrm openssl libX11 libXau libXaw libxcb xcbutil xcbutilwm xcbutilimage xcbutilkeysyms xcbutilrenderutil libXdmcp libXfixes libxkbfile libXmu libXpm libXrender libXres libXt ];
meta.platforms = stdenv.lib.platforms.unix;
diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix
index 74d95259163..99964bd77c3 100644
--- a/pkgs/servers/x11/xorg/overrides.nix
+++ b/pkgs/servers/x11/xorg/overrides.nix
@@ -286,6 +286,7 @@ in
};
xf86inputevdev = attrs: attrs // {
+ outputs = [ "dev" "out" ]; # to get rid of xorgserver.dev; man is tiny
preBuild = "sed -e '/motion_history_proc/d; /history_size/d;' -i src/*.c";
installFlags = "sdkdir=\${out}/include/xorg";
buildInputs = attrs.buildInputs ++ [ args.mtdev args.libevdev ];
@@ -364,7 +365,22 @@ in
'';
};
- xorgserver = with xorg; attrs: attrs //
+ xorgserver = with xorg; attrs_passed:
+ # exchange attrs if fglrxCompat is set
+ let
+ attrs = if !args.fglrxCompat then attrs_passed else
+ with args; {
+ name = "xorg-server-1.17.4";
+ builder = ./builder.sh;
+ src = fetchurl {
+ url = mirror://xorg/individual/xserver/xorg-server-1.17.4.tar.bz2;
+ sha256 = "0mv4ilpqi5hpg182mzqn766frhi6rw48aba3xfbaj4m82v0lajqc";
+ };
+ buildInputs = [pkgconfig dri2proto dri3proto renderproto libdrm openssl libX11 libXau libXaw libxcb xcbutil xcbutilwm xcbutilimage xcbutilkeysyms xcbutilrenderutil libXdmcp libXfixes libxkbfile libXmu libXpm libXrender libXres libXt ];
+ meta.platforms = stdenv.lib.platforms.unix;
+ };
+
+ in attrs //
(let
version = (builtins.parseDrvName attrs.name).version;
commonBuildInputs = attrs.buildInputs ++ [ xtrans ];
diff --git a/pkgs/servers/x11/xorg/tarballs-7.7.list b/pkgs/servers/x11/xorg/tarballs-7.7.list
index 2ebf31918b8..06a1699017f 100644
--- a/pkgs/servers/x11/xorg/tarballs-7.7.list
+++ b/pkgs/servers/x11/xorg/tarballs-7.7.list
@@ -183,7 +183,7 @@ mirror://xorg/individual/app/xlsfonts-1.0.5.tar.bz2
mirror://xorg/individual/app/xmag-1.0.6.tar.bz2
mirror://xorg/individual/app/xmodmap-1.0.9.tar.bz2
mirror://xorg/individual/doc/xorg-docs-1.7.1.tar.bz2
-mirror://xorg/individual/xserver/xorg-server-1.17.4.tar.bz2
+mirror://xorg/individual/xserver/xorg-server-1.18.3.tar.bz2
mirror://xorg/X11R7.7/src/everything/xorg-sgml-doctools-1.11.tar.bz2
mirror://xorg/X11R7.7/src/everything/xpr-1.0.4.tar.bz2
mirror://xorg/individual/app/xprop-1.2.2.tar.bz2
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 195dc363dbc..978148c4e55 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -10329,6 +10329,7 @@ in
mesa = mesa_noglu;
udev = if stdenv.isLinux then udev else null;
libdrm = if stdenv.isLinux then libdrm else null;
+ fglrxCompat = config.xorg.fglrxCompat or false; # `config` because we have no `xorg.override`
} // { inherit xlibsWrapper; } );
xwayland = callPackage ../servers/x11/xorg/xwayland.nix { };