diff --git a/pkgs/applications/networking/remote/xrdp/default.nix b/pkgs/applications/networking/remote/xrdp/default.nix index 0fb74488f0bfb..c9072f1c0c46d 100644 --- a/pkgs/applications/networking/remote/xrdp/default.nix +++ b/pkgs/applications/networking/remote/xrdp/default.nix @@ -1,6 +1,19 @@ -{ lib, stdenv, fetchFromGitHub, pkg-config, which, perl, autoconf, automake, libtool, openssl, systemd, pam, fuse, libjpeg, libopus, nasm, xorg }: +{ lib, stdenv, fetchFromGitHub, applyPatches, pkg-config, which, perl, autoconf, automake, libtool, openssl, systemd, pam, fuse, libjpeg, libopus, nasm, xorg }: let + version = "0.9.22.1"; + patchedXrdpSrc = applyPatches { + patches = [ ./dynamic_config.patch ]; + name = "xrdp-patched-${version}"; + src = fetchFromGitHub { + owner = "neutrinolabs"; + repo = "xrdp"; + rev = "v${version}"; + fetchSubmodules = true; + hash = "sha256-8gAP4wOqSmar8JhKRt4qRRwh23coIn0Q8Tt9ClHQSt8="; + }; + }; + xorgxrdp = stdenv.mkDerivation rec { pname = "xorgxrdp"; version = "0.9.19"; @@ -28,80 +41,71 @@ let preConfigure = "./bootstrap"; - configureFlags = [ "XRDP_CFLAGS=-I${xrdp.src}/common" ]; + configureFlags = [ "XRDP_CFLAGS=-I${patchedXrdpSrc}/common" ]; enableParallelBuilding = true; }; +in stdenv.mkDerivation rec { + inherit version; + pname = "xrdp"; - xrdp = stdenv.mkDerivation rec { - version = "0.9.22.1"; - pname = "xrdp"; + src = patchedXrdpSrc; - src = fetchFromGitHub { - owner = "neutrinolabs"; - repo = "xrdp"; - rev = "v${version}"; - fetchSubmodules = true; - hash = "sha256-8gAP4wOqSmar8JhKRt4qRRwh23coIn0Q8Tt9ClHQSt8="; - }; - - nativeBuildInputs = [ pkg-config autoconf automake which libtool nasm perl ]; + nativeBuildInputs = [ pkg-config autoconf automake which libtool nasm perl ]; - buildInputs = [ openssl systemd pam fuse libjpeg libopus xorg.libX11 xorg.libXfixes xorg.libXrandr ]; + buildInputs = [ openssl systemd pam fuse libjpeg libopus xorg.libX11 xorg.libXfixes xorg.libXrandr ]; - patches = [ ./dynamic_config.patch ]; - postPatch = '' - substituteInPlace sesman/xauth.c --replace "xauth -q" "${xorg.xauth}/bin/xauth -q" - ''; + postPatch = '' + substituteInPlace sesman/xauth.c --replace "xauth -q" "${xorg.xauth}/bin/xauth -q" + ''; - preConfigure = '' - (cd librfxcodec && ./bootstrap && ./configure --prefix=$out --enable-static --disable-shared) - ./bootstrap - ''; - dontDisableStatic = true; - configureFlags = [ "--with-systemdsystemunitdir=/var/empty" "--enable-ipv6" "--enable-jpeg" "--enable-fuse" "--enable-rfxcodec" "--enable-opus" "--enable-pam-config=unix" ]; + preConfigure = '' + (cd librfxcodec && ./bootstrap && ./configure --prefix=$out --enable-static --disable-shared) + ./bootstrap + ''; + dontDisableStatic = true; + configureFlags = [ "--with-systemdsystemunitdir=/var/empty" "--enable-ipv6" "--enable-jpeg" "--enable-fuse" "--enable-rfxcodec" "--enable-opus" "--enable-pam-config=unix" ]; - installFlags = [ "DESTDIR=$(out)" "prefix=" ]; + installFlags = [ "DESTDIR=$(out)" "prefix=" ]; - postInstall = '' - # remove generated keys (as non-deterministic) - rm $out/etc/xrdp/{rsakeys.ini,key.pem,cert.pem} + postInstall = '' + # remove generated keys (as non-deterministic) + rm $out/etc/xrdp/{rsakeys.ini,key.pem,cert.pem} - cp $src/keygen/openssl.conf $out/share/xrdp/openssl.conf + cp $src/keygen/openssl.conf $out/share/xrdp/openssl.conf - substituteInPlace $out/etc/xrdp/sesman.ini --replace /etc/xrdp/pulse $out/etc/xrdp/pulse + substituteInPlace $out/etc/xrdp/sesman.ini --replace /etc/xrdp/pulse $out/etc/xrdp/pulse - # remove all session types except Xorg (they are not supported by this setup) - perl -i -ne 'print unless /\[(X11rdp|Xvnc|console|vnc-any|sesman-any|rdp-any|neutrinordp-any)\]/ .. /^$/' $out/etc/xrdp/xrdp.ini + # remove all session types except Xorg (they are not supported by this setup) + perl -i -ne 'print unless /\[(X11rdp|Xvnc|console|vnc-any|sesman-any|rdp-any|neutrinordp-any)\]/ .. /^$/' $out/etc/xrdp/xrdp.ini - # remove all session types and then add Xorg - perl -i -ne 'print unless /\[(X11rdp|Xvnc|Xorg)\]/ .. /^$/' $out/etc/xrdp/sesman.ini + # remove all session types and then add Xorg + perl -i -ne 'print unless /\[(X11rdp|Xvnc|Xorg)\]/ .. /^$/' $out/etc/xrdp/sesman.ini - cat >> $out/etc/xrdp/sesman.ini <> $out/etc/xrdp/sesman.ini <