diff --git a/pkgs/applications/window-managers/weston/default.nix b/pkgs/applications/window-managers/weston/default.nix index 9a6708f1b140..c78f7d2d2415 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 000000000000..f43a9c671604 --- /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 a2e87913768a..a6d855538d5e 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 {