summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/applications/window-managers/weston/default.nix10
-rw-r--r--pkgs/servers/x11/xorg/xwayland.nix41
-rw-r--r--pkgs/top-level/all-packages.nix3
3 files changed, 51 insertions, 3 deletions
diff --git a/pkgs/applications/window-managers/weston/default.nix b/pkgs/applications/window-managers/weston/default.nix
index 9a6708f1b14..c78f7d2d241 100644
--- a/pkgs/applications/window-managers/weston/default.nix
+++ b/pkgs/applications/window-managers/weston/default.nix
@@ -1,7 +1,8 @@
 { stdenv, fetchurl, pkgconfig, wayland, mesa, libxkbcommon, cairo, libxcb
 , libXcursor, x11, udev, libdrm, mtdev, libjpeg, pam, dbus, libinput
 , pango ? null, libunwind ? null, freerdp ? null, vaapi ? null, libva ? null
-, libwebp ? null
+, libwebp ? null, xwayland ? null
+# beware of null defaults, as the parameters *are* supplied by callPackage by default
 }:
 
 let version = "1.6.0"; in
@@ -21,7 +22,6 @@ stdenv.mkDerivation rec {
   ];
 
   configureFlags = [
-    "--enable-xwayland"
     "--enable-x11-compositor"
     "--enable-drm-compositor"
     "--enable-wayland-compositor"
@@ -32,7 +32,11 @@ stdenv.mkDerivation rec {
     "--enable-weston-launch"
     "--disable-setuid-install" # prevent install target to chown root weston-launch, which fails
   ] ++ stdenv.lib.optional (freerdp != null) "--enable-rdp-compositor"
-    ++ stdenv.lib.optional (vaapi != null) "--enabe-vaapi-recorder";
+    ++ stdenv.lib.optional (vaapi != null) "--enabe-vaapi-recorder"
+    ++ stdenv.lib.optionals (xwayland != null) [
+        "--enable-xwayland"
+        "--with-xserver-path=${xwayland}/bin/Xwayland"
+      ];
 
   meta = with stdenv.lib; {
     description = "Reference implementation of a Wayland compositor";
diff --git a/pkgs/servers/x11/xorg/xwayland.nix b/pkgs/servers/x11/xorg/xwayland.nix
new file mode 100644
index 00000000000..f43a9c67160
--- /dev/null
+++ b/pkgs/servers/x11/xorg/xwayland.nix
@@ -0,0 +1,41 @@
+
+{ stdenv, wayland, xorgserver, xkbcomp, xkeyboard_config, epoxy, libxslt, libunwind, makeWrapper }:
+
+with stdenv.lib;
+
+overrideDerivation xorgserver (oldAttrs: {
+
+  name = "xwayland-${xorgserver.version}";
+  propagatedNativeBuildInputs = oldAttrs.propagatedNativeBuildInputs
+    ++ [wayland epoxy libxslt makeWrapper libunwind];
+  configureFlags = [
+    "--disable-docs"
+    "--disable-devel-docs"
+    "--enable-xwayland"
+    "--disable-xorg"
+    "--disable-xvfb"
+    "--disable-xnest"
+    "--disable-xquartz"
+    "--disable-xwin"
+    "--with-default-font-path="
+    "--with-xkb-bin-directory=${xkbcomp}/bin"
+    "--with-xkb-path=${xkeyboard_config}/etc/X11/xkb"
+    "--with-xkb-output=$out/share/X11/xkb/compiled"
+  ];
+
+  postInstall = ''
+    rm -fr $out/share/X11/xkb/compiled
+    ln -s /var/tmp $out/share/X11/xkb/compiled
+  '';
+
+}) // {
+  meta = {
+    description = "An X server for interfacing X11 apps with the Wayland protocol";
+    homepage = http://wayland.freedesktop.org/xserver.html;
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+}
+
+
+
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index a2e87913768..a6d855538d5 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -7925,6 +7925,8 @@ let
 
   xorgVideoUnichrome = callPackage ../servers/x11/xorg/unichrome/default.nix { };
 
+  xwayland = with xorg; callPackage ../servers/x11/xorg/xwayland.nix { };
+
   yaws = callPackage ../servers/http/yaws { };
 
   zabbix = recurseIntoAttrs (import ../servers/monitoring/zabbix {
@@ -11154,6 +11156,7 @@ let
     vaapi = null;
     libva = null;
     libwebp = null;
+    xwayland = null;
   };
 
   weston = callPackage ../applications/window-managers/weston {