diff options
author | Mx Kookie <kookie@spacekookie.de> | 2020-10-31 19:35:09 +0100 |
---|---|---|
committer | Mx Kookie <kookie@spacekookie.de> | 2020-10-31 19:35:09 +0100 |
commit | c4625b175f8200f643fd6e11010932ea44c78433 (patch) | |
tree | bce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/pkgs/applications/networking/remote | |
parent | 49f735974dd103039ddc4cb576bb76555164a9e7 (diff) | |
parent | d661aa56a8843e991261510c1bb28fdc2f6975ae (diff) |
Add 'infra/libkookie/' from commit 'd661aa56a8843e991261510c1bb28fdc2f6975ae'
git-subtree-dir: infra/libkookie
git-subtree-mainline: 49f735974dd103039ddc4cb576bb76555164a9e7
git-subtree-split: d661aa56a8843e991261510c1bb28fdc2f6975ae
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/networking/remote')
15 files changed, 1097 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/anydesk/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/anydesk/default.nix new file mode 100644 index 000000000000..643efd0f0f27 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/anydesk/default.nix @@ -0,0 +1,89 @@ +{ stdenv, fetchurl, makeWrapper, makeDesktopItem +, atk, cairo, gdk-pixbuf, glib, gnome2, gtk2, libGLU, libGL, pango, xorg +, lsb-release, freetype, fontconfig, polkit, polkit_gnome +, pulseaudio }: + +let + sha256 = { + x86_64-linux = "19751ygq1ng79aniqx91qawc0cw07cwdjdjd88azc9ww6z6nv0mp"; + i386-linux = "0dwc7v4p1dz51444zwn0kds23yi87r4h2d3isfj9xwkn90pxb7in"; + }.${stdenv.hostPlatform.system} or (throw "system ${stdenv.hostPlatform.system} not supported"); + + arch = { + x86_64-linux = "amd64"; + i386-linux = "i386"; + }.${stdenv.hostPlatform.system} or (throw "system ${stdenv.hostPlatform.system} not supported"); + + description = "Desktop sharing application, providing remote support and online meetings"; + + desktopItem = makeDesktopItem { + name = "AnyDesk"; + exec = "@out@/bin/anydesk"; + icon = "anydesk"; + desktopName = "AnyDesk"; + genericName = description; + categories = "Network;"; + startupNotify = "false"; + }; + +in stdenv.mkDerivation rec { + pname = "anydesk"; + version = "6.0.1"; + + src = fetchurl { + urls = [ + "https://download.anydesk.com/linux/${pname}-${version}-${arch}.tar.gz" + "https://download.anydesk.com/linux/generic-linux/${pname}-${version}-${arch}.tar.gz" + ]; + inherit sha256; + }; + + buildInputs = [ + atk cairo gdk-pixbuf glib gtk2 stdenv.cc.cc pango + gnome2.gtkglext libGLU libGL freetype fontconfig + polkit polkit_gnome pulseaudio + ] ++ (with xorg; [ + libxcb libxkbfile libX11 libXdamage libXext libXfixes libXi libXmu + libXrandr libXtst libXt libICE libSM libXrender + ]); + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin $out/share/{applications,doc/anydesk,icons/hicolor} + install -m755 anydesk $out/bin/anydesk + cp copyright README $out/share/doc/anydesk + cp -r icons/hicolor/* $out/share/icons/hicolor/ + cp ${desktopItem}/share/applications/*.desktop $out/share/applications + + runHook postInstall + ''; + + postFixup = '' + patchelf \ + --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + --set-rpath "${stdenv.lib.makeLibraryPath buildInputs}" \ + $out/bin/anydesk + + # pangox is not actually necessary (it was only added as a part of gtkglext) + patchelf \ + --remove-needed libpangox-1.0.so.0 \ + $out/bin/anydesk + + wrapProgram $out/bin/anydesk \ + --prefix PATH : ${stdenv.lib.makeBinPath [ lsb-release ]} + + substituteInPlace $out/share/applications/*.desktop \ + --subst-var out + ''; + + meta = with stdenv.lib; { + inherit description; + homepage = "https://www.anydesk.com"; + license = licenses.unfree; + platforms = platforms.linux; + maintainers = with maintainers; [ shyim ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix new file mode 100644 index 000000000000..3a6054db3543 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix @@ -0,0 +1,25 @@ +{ lib, callPackage }: + +# For detailed information about the Citrix source-tarball, please refer to the OEM +# reference guide: https://developer-docs.citrix.com/projects/workspace-app-for-linux-oem-guide/en/latest/ + +let + inherit (callPackage ./sources.nix { }) supportedVersions unsupportedVersions; + mkCitrix = callPackage ./generic.nix { }; + + toAttrName = x: "citrix_workspace_${builtins.replaceStrings [ "." ] [ "_" ] x}"; + + unsupported = lib.listToAttrs ( + map (x: lib.nameValuePair (toAttrName x) (throw '' + Citrix Workspace at version ${x} is not supported anymore! + + Actively supported releases are listed here: + https://www.citrix.com/en-gb/support/product-lifecycle/milestones/receiver.html + '')) unsupportedVersions + ); + + supported = lib.mapAttrs' ( + attr: versionInfo: lib.nameValuePair (toAttrName attr) (callPackage ./generic.nix versionInfo) + ) supportedVersions; +in + supported // unsupported diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/generic.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/generic.nix new file mode 100644 index 000000000000..a2ad8b8129a6 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/generic.nix @@ -0,0 +1,207 @@ +{ stdenv, requireFile, makeWrapper, autoPatchelfHook, wrapGAppsHook, which, more +, file, atk, alsaLib, cairo, fontconfig, gdk-pixbuf, glib, gnome3, gtk2-x11, gtk3 +, heimdal, krb5, libsoup, libvorbis, speex, openssl, zlib, xorg, pango, gtk2 +, gnome2, nss, nspr, gtk_engines, freetype, dconf, libpng12, libxml2 +, libjpeg, libredirect, tzdata, cacert, systemd, libcxxabi, libcxx, e2fsprogs, symlinkJoin + +, homepage, version, prefix, hash + +, extraCerts ? [] +}: + +let + inherit (stdenv) lib; + + openssl' = symlinkJoin { + name = "openssl-backwards-compat"; + nativeBuildInputs = [ makeWrapper ]; + paths = [ openssl.out ]; + postBuild = '' + ln -sf $out/lib/libcrypto.so $out/lib/libcrypto.so.1.0.0 + ln -sf $out/lib/libssl.so $out/lib/libssl.so.1.0.0 + ''; + }; +in + +stdenv.mkDerivation rec { + pname = "citrix-workspace"; + inherit version; + + src = requireFile rec { + name = "${prefix}-${version}.tar.gz"; + sha256 = hash; + + message = '' + In order to use Citrix Workspace, you need to comply with the Citrix EULA and download + the ${if stdenv.is64bit then "64-bit" else "32-bit"} binaries, .tar.gz from: + + ${homepage} + + (if you do not find version ${version} there, try at + https://www.citrix.com/downloads/workspace-app/ + + Once you have downloaded the file, please use the following command and re-run the + installation: + + nix-prefetch-url file://\$PWD/${name} + ''; + }; + + dontBuild = true; + dontConfigure = true; + sourceRoot = "."; + preferLocalBuild = true; + passthru.icaroot = "${placeholder "out"}/opt/citrix-icaclient"; + + nativeBuildInputs = [ + autoPatchelfHook + file + makeWrapper + more + which + wrapGAppsHook + ]; + + buildInputs = [ + alsaLib + atk + cairo + dconf + fontconfig + freetype + gdk-pixbuf + gnome2.gtkglext + gnome3.webkitgtk + gtk2 + gtk2-x11 + gtk3 + gtk_engines + heimdal + krb5 + libcxx + libcxxabi + libjpeg + libpng12 + libsoup + libvorbis + libxml2 + nspr + nss + openssl' + pango + speex + (lib.getLib systemd) + stdenv.cc.cc + xorg.libXaw + xorg.libXmu + xorg.libXScrnSaver + xorg.libXtst + zlib + ] ++ lib.optional (lib.versionOlder version "20.04") e2fsprogs; + + runtimeDependencies = [ + glib + + xorg.libX11 + xorg.libXScrnSaver + xorg.libXext + xorg.libXfixes + xorg.libXinerama + xorg.libXmu + xorg.libXrender + xorg.libXtst + xorg.libxcb + ]; + + installPhase = let + icaFlag = program: + if (builtins.match "selfservice(.*)" program) != null then "--icaroot" + else "-icaroot"; + wrap = program: '' + wrapProgram $out/opt/citrix-icaclient/${program} \ + --add-flags "${icaFlag program} $ICAInstDir" \ + --set ICAROOT "$ICAInstDir" \ + --prefix LD_LIBRARY_PATH : "$ICAInstDir:$ICAInstDir/lib" \ + --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ + --set NIX_REDIRECTS "/usr/share/zoneinfo=${tzdata}/share/zoneinfo:/etc/zoneinfo=${tzdata}/share/zoneinfo:/etc/timezone=$ICAInstDir/timezone" + ''; + wrapLink = program: '' + ${wrap program} + ln -sf $out/opt/citrix-icaclient/${program} $out/bin/${baseNameOf program} + ''; + + copyCert = path: '' + cp -v ${path} $out/opt/citrix-icaclient/keystore/cacerts/${baseNameOf path} + ''; + + mkWrappers = lib.concatMapStringsSep "\n"; + + toWrap = [ "wfica" "selfservice" "util/configmgr" "util/conncenter" "util/ctx_rehash" ] + ++ lib.optional (lib.versionOlder version "20.06") "selfservice_old"; + in '' + runHook preInstall + + mkdir -p $out/{bin,share/applications} + export ICAInstDir="$out/opt/citrix-icaclient" + export HOME=$(mktemp -d) + + # Run upstream installer in the store-path. + sed -i -e 's,^ANSWER="",ANSWER="$INSTALLER_YES",g' -e 's,/bin/true,true,g' ./linuxx64/hinst + ${stdenv.shell} linuxx64/hinst CDROM "$(pwd)" + + if [ -f "$ICAInstDir/util/setlog" ]; then + chmod +x "$ICAInstDir/util/setlog" + ln -sf "$ICAInstDir/util/setlog" "$out/bin/citrix-setlog" + fi + ${mkWrappers wrapLink toWrap} + ${mkWrappers wrap [ "PrimaryAuthManager" "ServiceRecord" "AuthManagerDaemon" "util/ctxwebhelper" ]} + + ln -sf $ICAInstDir/util/storebrowse $out/bin/storebrowse + + # As explained in https://wiki.archlinux.org/index.php/Citrix#Security_Certificates + echo "Expanding certificates..." + pushd "$ICAInstDir/keystore/cacerts" + awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "cert." c ".pem"}' \ + < ${cacert}/etc/ssl/certs/ca-bundle.crt + popd + + ${mkWrappers copyCert extraCerts} + + # See https://developer-docs.citrix.com/projects/workspace-app-for-linux-oem-guide/en/latest/reference-information/#library-files + # Those files are fallbacks to support older libwekit.so and libjpeg.so + rm $out/opt/citrix-icaclient/lib/ctxjpeg_fb_8.so + rm $out/opt/citrix-icaclient/lib/UIDialogLibWebKit.so + + # We support only Gstreamer 1.0 + rm $ICAInstDir/util/{gst_aud_{play,read},gst_*0.10,libgstflatstm0.10.so} + ln -sf $ICAInstDir/util/gst_play1.0 $ICAInstDir/util/gst_play + ln -sf $ICAInstDir/util/gst_read1.0 $ICAInstDir/util/gst_read + + echo "We arbitrarily set the timezone to UTC. No known consequences at this point." + echo UTC > "$ICAInstDir/timezone" + + echo "Copy .desktop files." + cp $out/opt/citrix-icaclient/desktop/* $out/share/applications/ + + # We introduce a dependency on the source file so that it need not be redownloaded everytime + echo $src >> "$out/share/workspace_dependencies.pin" + + runHook postInstall + ''; + + # Make sure that `autoPatchelfHook` is executed before + # running `ctx_rehash`. + dontAutoPatchelf = true; + postFixup = '' + autoPatchelf -- "$out" + $out/opt/citrix-icaclient/util/ctx_rehash + ''; + + meta = with lib; { + license = licenses.unfree; + description = "Citrix Workspace"; + platforms = platforms.linux; + maintainers = with maintainers; [ ma27 ]; + inherit homepage; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/sources.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/sources.nix new file mode 100644 index 000000000000..abdd54f4af6e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/sources.nix @@ -0,0 +1,58 @@ +{ stdenv, lib }: + +let + mkVersionInfo = _: { major, minor, patch, x64hash, x86hash, x64suffix, x86suffix, homepage }: + { inherit homepage; + version = "${major}.${minor}.${patch}.${if stdenv.is64bit then x64suffix else x86suffix}"; + prefix = "linuxx${if stdenv.is64bit then "64" else "86"}"; + hash = if stdenv.is64bit then x64hash else x86hash; + }; + + # Attribute-set with all actively supported versions of the Citrix workspace app + # for Linux. + # + # The latest versions can be found at https://www.citrix.com/de-de/downloads/workspace-app/linux/ + supportedVersions = lib.mapAttrs mkVersionInfo { + "20.04.0" = { + major = "20"; + minor = "04"; + patch = "0"; + x64hash = "E923592216F9541173846F932784E6C062CB09C9E8858219C7489607BF82A0FB"; + x86hash = "A2E2E1882723DA6796E68916B3BB2B44DD575A83DEB03CA90A262F6C81B1A53F"; + x64suffix = "21"; + x86suffix = "21"; + homepage = "https://www.citrix.com/de-de/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-2004.html"; + }; + + "20.06.0" = { + major = "20"; + minor = "06"; + patch = "0"; + x64hash = "1kpfcfg95mpprlca6cccnjlsqbj3xvv77cn3fc5msd304nsi9x1v"; + x86hash = "1di29hrimbw3myjnf2nn26a14klidhdwvjqla6yxhwd3s6lil194"; + x64suffix = "15"; + x86suffix = "15"; + homepage = "https://www.citrix.com/de-de/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-2006.html"; + }; + + "20.09.0" = { + major = "20"; + minor = "9"; + patch = "0"; + x64hash = "15gjq1vk1y76c39p72xnam9h9rnr0632i4n11l6xbjnfnad8d4pr"; + x86hash = "1b4gdmnnpa61ydiv2fnmap8cnfhskrq6swcs6i1nqrp5zvvkqrv4"; + x64suffix = "15"; + x86suffix = "15"; + homepage = "https://www.citrix.com/de-de/downloads/workspace-app/linux/workspace-app-for-linux-latest.html"; + }; + }; + + # Retain attribute-names for abandoned versions of Citrix workspace to + # provide a meaningful error-message if it's attempted to use such an old one. + # + # The lifespans of Citrix products can be found here: + # https://www.citrix.com/support/product-lifecycle/milestones/receiver.html + unsupportedVersions = [ "19.6.0" "19.8.0" "19.10.0" "19.12.0" ]; +in { + inherit supportedVersions unsupportedVersions; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/freerdp/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/freerdp/default.nix new file mode 100644 index 000000000000..52f8decf170f --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/freerdp/default.nix @@ -0,0 +1,109 @@ +{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig, alsaLib, ffmpeg_3, glib, openssl +, pcre, zlib, libX11, libXcursor, libXdamage, libXext, libXi, libXinerama +, libXrandr, libXrender, libXv, libXtst, libxkbcommon, libxkbfile, wayland +, gstreamer, gst-plugins-base, gst-plugins-good, libunwind, orc, libxslt +, libusb1, libpulseaudio ? null, cups ? null, pcsclite ? null, systemd ? null +, buildServer ? true, nocaps ? false }: + +let + cmFlag = flag: if flag then "ON" else "OFF"; + disabledTests = [ + # this one is probably due to our sandbox + { + dir = "libfreerdp/crypto/test"; + file = "Test_x509_cert_info.c"; + } + ]; + +in stdenv.mkDerivation rec { + pname = "freerdp"; + version = "2.2.0"; + + src = fetchFromGitHub { + owner = "FreeRDP"; + repo = "FreeRDP"; + rev = version; + sha256 = "02zlg5r704zbryx09a5rjjf7q137kj16i9qh25dw9q1y69ri619n"; + }; + + postPatch = '' + export HOME=$TMP + + # failing test(s) + ${lib.concatMapStringsSep "\n" (e: '' + substituteInPlace ${e.dir}/CMakeLists.txt \ + --replace ${e.file} "" + rm ${e.dir}/${e.file} + '') disabledTests} + + substituteInPlace "libfreerdp/freerdp.pc.in" \ + --replace "Requires:" "Requires: @WINPR_PKG_CONFIG_FILENAME@" + '' + lib.optionalString (pcsclite != null) '' + substituteInPlace "winpr/libwinpr/smartcard/smartcard_pcsc.c" \ + --replace "libpcsclite.so" "${lib.getLib pcsclite}/lib/libpcsclite.so" + '' + lib.optionalString nocaps '' + substituteInPlace "libfreerdp/locale/keyboard_xkbfile.c" \ + --replace "RDP_SCANCODE_CAPSLOCK" "RDP_SCANCODE_LCONTROL" + ''; + + buildInputs = with lib; + [ + alsaLib + cups + ffmpeg_3 + glib + gst-plugins-base + gst-plugins-good + gstreamer + libX11 + libXcursor + libXdamage + libXext + libXi + libXinerama + libXrandr + libXrender + libXtst + libXv + libpulseaudio + libunwind + libusb1 + libxkbcommon + libxkbfile + libxslt + openssl + orc + pcre + pcsclite + wayland + zlib + ] ++ optional stdenv.isLinux systemd; + + nativeBuildInputs = [ cmake pkgconfig ]; + + doCheck = true; + + cmakeFlags = [ "-DCMAKE_INSTALL_LIBDIR=lib" ] + ++ lib.mapAttrsToList (k: v: "-D${k}=${if v then "ON" else "OFF"}") { + BUILD_TESTING = doCheck; + WITH_CUNIT = doCheck; + WITH_CUPS = (cups != null); + WITH_OSS = false; + WITH_PCSC = (pcsclite != null); + WITH_PULSE = (libpulseaudio != null); + WITH_SERVER = buildServer; + WITH_SSE2 = stdenv.isx86_64; + }; + + meta = with lib; { + description = "A Remote Desktop Protocol Client"; + longDescription = '' + FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP) + following the Microsoft Open Specifications. + ''; + homepage = "https://www.freerdp.com/"; + license = licenses.asl20; + maintainers = with maintainers; [ peterhoeg lheckemann ]; + platforms = platforms.unix; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/putty/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/putty/default.nix new file mode 100644 index 000000000000..61e82726f353 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/putty/default.nix @@ -0,0 +1,55 @@ +{ stdenv, lib, fetchurl, autoconf, automake, pkgconfig, libtool +, gtk2, halibut, ncurses, perl, darwin +}: + +stdenv.mkDerivation rec { + version = "0.74"; + pname = "putty"; + + src = fetchurl { + urls = [ + "https://the.earth.li/~sgtatham/putty/${version}/${pname}-${version}.tar.gz" + "ftp://ftp.wayne.edu/putty/putty-website-mirror/${version}/${pname}-${version}.tar.gz" + ]; + sha256 = "0zc43g8ycyf712cdrja4k8ih5s3agw1k0nq0jkifdn8xwn4d7mfx"; + }; + + # glib-2.62 deprecations + NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS"; + + preConfigure = lib.optionalString stdenv.hostPlatform.isUnix '' + perl mkfiles.pl + ( cd doc ; make ); + ./mkauto.sh + cd unix + '' + lib.optionalString stdenv.hostPlatform.isWindows '' + cd windows + ''; + + TOOLPATH = stdenv.cc.targetPrefix; + makefile = if stdenv.hostPlatform.isWindows then "Makefile.mgw" else null; + + installPhase = if stdenv.hostPlatform.isWindows then '' + for exe in *.exe; do + install -D $exe $out/bin/$exe + done + '' else null; + + nativeBuildInputs = [ autoconf automake halibut libtool perl pkgconfig ]; + buildInputs = lib.optionals stdenv.hostPlatform.isUnix [ + gtk2 ncurses + ] ++ lib.optional stdenv.isDarwin darwin.apple_sdk.libs.utmp; + enableParallelBuilding = true; + + meta = with lib; { + description = "A Free Telnet/SSH Client"; + longDescription = '' + PuTTY is a free implementation of Telnet and SSH for Windows and Unix + platforms, along with an xterm terminal emulator. + It is written and maintained primarily by Simon Tatham. + ''; + homepage = "https://www.chiark.greenend.org.uk/~sgtatham/putty/"; + license = licenses.mit; + platforms = platforms.unix ++ platforms.windows; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/rdesktop/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/rdesktop/default.nix new file mode 100644 index 000000000000..4c67105dafc2 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/rdesktop/default.nix @@ -0,0 +1,32 @@ +{stdenv, fetchFromGitHub, openssl, libX11, krb5, libXcursor, libtasn1, nettle, gnutls, pkgconfig, autoreconfHook +, enableCredssp ? (!stdenv.isDarwin) +} : + +stdenv.mkDerivation (rec { + pname = "rdesktop"; + version = "1.9.0"; + + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = "v${version}"; + sha256 = "1s6k1jwd28y38ymk3lfv76ch4arpfwrbdhpkbnwwy3fc4617gb78"; + }; + + nativeBuildInputs = [pkgconfig autoreconfHook]; + buildInputs = [openssl libX11 libXcursor libtasn1 nettle gnutls] + ++ stdenv.lib.optional enableCredssp krb5; + + configureFlags = [ + "--with-ipv6" + "--with-openssl=${openssl.dev}" + "--disable-smartcard" + ] ++ stdenv.lib.optional (!enableCredssp) "--disable-credssp"; + + meta = { + description = "Open source client for Windows Terminal Services"; + homepage = "http://www.rdesktop.org/"; + platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; + license = stdenv.lib.licenses.gpl2; + }; +}) diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/remmina/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/remmina/default.nix new file mode 100644 index 000000000000..feb707412468 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/remmina/default.nix @@ -0,0 +1,60 @@ +{ stdenv, fetchFromGitLab, cmake, ninja, pkgconfig, wrapGAppsHook +, glib, gtk3, gettext, libxkbfile, libX11 +, freerdp, libssh, libgcrypt, gnutls +, pcre, libdbusmenu-gtk3, libappindicator-gtk3 +, libvncserver, libpthreadstubs, libXdmcp, libxkbcommon +, libsecret, libsoup, spice-protocol, spice-gtk, epoxy, at-spi2-core +, openssl, gsettings-desktop-schemas, json-glib, libsodium, webkitgtk, harfbuzz +# The themes here are soft dependencies; only icons are missing without them. +, gnome3 +}: + +with stdenv.lib; + +stdenv.mkDerivation rec { + pname = "remmina"; + version = "1.4.7"; + + src = fetchFromGitLab { + owner = "Remmina"; + repo = "Remmina"; + rev = "v${version}"; + sha256 = "0h09f2amj7ab78fzil2w7cr22d21ad5mp1r2fa70w26g7ra3jzk9"; + }; + + nativeBuildInputs = [ cmake ninja pkgconfig wrapGAppsHook ]; + buildInputs = [ + gsettings-desktop-schemas + glib gtk3 gettext libxkbfile libX11 + freerdp libssh libgcrypt gnutls + pcre libdbusmenu-gtk3 libappindicator-gtk3 + libvncserver libpthreadstubs libXdmcp libxkbcommon + libsecret libsoup spice-protocol spice-gtk epoxy at-spi2-core + openssl gnome3.adwaita-icon-theme json-glib libsodium webkitgtk + harfbuzz + ]; + + cmakeFlags = [ + "-DWITH_VTE=OFF" + "-DWITH_TELEPATHY=OFF" + "-DWITH_AVAHI=OFF" + "-DFREERDP_LIBRARY=${freerdp}/lib/libfreerdp2.so" + "-DFREERDP_CLIENT_LIBRARY=${freerdp}/lib/libfreerdp-client2.so" + "-DFREERDP_WINPR_LIBRARY=${freerdp}/lib/libwinpr2.so" + "-DWINPR_INCLUDE_DIR=${freerdp}/include/winpr2" + ]; + + preFixup = '' + gappsWrapperArgs+=( + --prefix LD_LIBRARY_PATH : "${libX11.out}/lib" + ) + ''; + + meta = { + license = licenses.gpl2; + homepage = "https://gitlab.com/Remmina/Remmina"; + description = "Remote desktop client written in GTK"; + maintainers = with maintainers; [ melsigl ryantm ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/teamviewer/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/teamviewer/default.nix new file mode 100644 index 000000000000..9c3ed826a2d5 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/teamviewer/default.nix @@ -0,0 +1,66 @@ +{ mkDerivation, lib, fetchurl, autoPatchelfHook, makeWrapper, xdg_utils, dbus +, qtbase, qtwebkit, qtx11extras, qtquickcontrols, glibc +, libXrandr, libX11, libXext, libXdamage, libXtst, libSM, libXfixes +, wrapQtAppsHook +}: + +mkDerivation rec { + pname = "teamviewer"; + version = "15.8.3"; + + src = fetchurl { + url = "https://dl.tvcdn.de/download/linux/version_15x/teamviewer_${version}_amd64.deb"; + sha256 = "1c947yxgs0mv5x6qvy40dypbbhhjbglma1pwl66z39gzg51n2dmc"; + }; + + unpackPhase = '' + ar x $src + tar xf data.tar.* + ''; + + nativeBuildInputs = [ autoPatchelfHook makeWrapper wrapQtAppsHook ]; + buildInputs = [ dbus qtbase qtwebkit qtx11extras libX11 ]; + propagatedBuildInputs = [ qtquickcontrols ]; + + installPhase = '' + mkdir -p $out/share/teamviewer $out/bin $out/share/applications + cp -a opt/teamviewer/* $out/share/teamviewer + rm -R \ + $out/share/teamviewer/logfiles \ + $out/share/teamviewer/config \ + $out/share/teamviewer/tv_bin/xdg-utils \ + $out/share/teamviewer/tv_bin/script/{teamviewer_setup,teamviewerd.sysv,teamviewerd.service,teamviewerd.*.conf,libdepend,tv-delayed-start.sh} + + ln -s $out/share/teamviewer/tv_bin/script/teamviewer $out/bin + ln -s $out/share/teamviewer/tv_bin/teamviewerd $out/bin + ln -s $out/share/teamviewer/tv_bin/desktop/com.teamviewer.*.desktop $out/share/applications + ln -s /var/lib/teamviewer $out/share/teamviewer/config + ln -s /var/log/teamviewer $out/share/teamviewer/logfiles + ln -s ${xdg_utils}/bin $out/share/teamviewer/tv_bin/xdg-utils + + sed -i "s,/opt/teamviewer,$out/share/teamviewer,g" $out/share/teamviewer/tv_bin/desktop/com.teamviewer.*.desktop + + substituteInPlace $out/share/teamviewer/tv_bin/script/tvw_aux \ + --replace '/lib64/ld-linux-x86-64.so.2' '${glibc.out}/lib/ld-linux-x86-64.so.2' + substituteInPlace $out/share/teamviewer/tv_bin/script/tvw_config \ + --replace '/var/run/' '/run/' + + wrapProgram $out/share/teamviewer/tv_bin/script/teamviewer --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libXrandr libX11 ]}" + wrapProgram $out/share/teamviewer/tv_bin/teamviewerd --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libXrandr libX11 ]}" + wrapProgram $out/share/teamviewer/tv_bin/TeamViewer --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libXrandr libX11 ]}" + wrapProgram $out/share/teamviewer/tv_bin/TeamViewer_Desktop --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [libXrandr libX11 libXext libXdamage libXtst libSM libXfixes ]}" + + wrapQtApp $out/bin/teamviewer + ''; + + dontStrip = true; + preferLocalBuild = true; + + meta = with lib; { + homepage = "http://www.teamviewer.com"; + license = licenses.unfree; + description = "Desktop sharing application, providing remote support and online meetings"; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ jagajaga dasuxullebt ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/vmware-horizon-client/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/vmware-horizon-client/default.nix new file mode 100644 index 000000000000..09b7011c3164 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/vmware-horizon-client/default.nix @@ -0,0 +1,80 @@ +{ stdenv, buildFHSUserEnv, fetchurl, makeWrapper, makeDesktopItem, libxslt, atk +, fontconfig, freetype, gdk-pixbuf, glib, gtk2, libudev0-shim, libxml2 +, pango, pixman, libX11, libXext, libXinerama, libXrandr , libXrender +, libXtst, libXcursor, libXi, libxkbfile , libXScrnSaver, zlib, liberation_ttf +, libtiff, dbus, at-spi2-atk, harfbuzz, gtk3-x11, libuuid, pcsclite +}: + +let + version = "2006"; + + sysArch = + if stdenv.hostPlatform.system == "x86_64-linux" then "x64" + else throw "Unsupported system: ${stdenv.hostPlatform.system}"; + # The downloaded archive also contains i386 and ARM binaries, but these have not been tested. + + vmwareHorizonClientFiles = stdenv.mkDerivation { + name = "vmwareHorizonClientFiles"; + inherit version; + src = fetchurl { + url = https://download3.vmware.com/software/view/viewclients/CART21FQ2/vmware-view-client-linux-2006-8.0.0-16522670.tar.gz; + sha256 = "8c46d49fea42f8c1f7cf32a5f038f5a47d2b304743b1e4f4c68c658621b0e79c"; + }; + buildInputs = [ makeWrapper ]; + installPhase = '' + mkdir ext $out + find ${sysArch} -type f -print0 | xargs -0n1 tar -Cext --strip-components=1 -xf + mv ext/bin ext/lib ext/share "$out"/ + + # Horizon includes a copy of libstdc++ which is loaded via $LD_LIBRARY_PATH + # when it cannot detect a new enough version already present on the system. + # The checks are distribution-specific and do not function correctly on NixOS. + # Deleting the bundled library is the simplest way to force it to use our version. + rm -f "$out/lib/vmware/gcc/libstdc++.so.6" + + # Force the default GTK theme (Adwaita) because Horizon is prone to + # UI usability issues when using non-default themes, such as Adwaita-dark. + makeWrapper "$out/bin/vmware-view" "$out/bin/vmware-view_wrapper" \ + --set GTK_THEME Adwaita \ + --suffix LD_LIBRARY_PATH : "$out/lib/vmware/view/crtbora:$out/lib/vmware" + ''; + }; + + vmwareFHSUserEnv = buildFHSUserEnv { + name = "vmware-view"; + + runScript = "${vmwareHorizonClientFiles}/bin/vmware-view_wrapper"; + + targetPkgs = pkgs: [ + pcsclite dbus vmwareHorizonClientFiles atk fontconfig freetype gdk-pixbuf glib gtk2 + libudev0-shim libxml2 pango pixman liberation_ttf libX11 libXext libXinerama + libXrandr libXrender libXtst libXcursor libXi libxkbfile at-spi2-atk libXScrnSaver + zlib libtiff harfbuzz gtk3-x11 libuuid + ]; + }; + + desktopItem = makeDesktopItem { + name = "vmware-view"; + desktopName = "VMware Horizon Client"; + icon = "${vmwareHorizonClientFiles}/share/icons/vmware-view.png"; + exec = "${vmwareFHSUserEnv}/bin/vmware-view %u"; + mimeType = "x-scheme-handler/vmware-view"; + }; + +in stdenv.mkDerivation { + name = "vmware-view"; + dontUnpack = true; + installPhase = '' + mkdir -p $out/bin $out/share/applications + cp "${desktopItem}"/share/applications/* $out/share/applications/ + ln -s "${vmwareFHSUserEnv}/bin/vmware-view" "$out/bin/" + ''; + + meta = with stdenv.lib; { + description = "Allows you to connect to your VMware Horizon virtual desktop"; + homepage = "https://www.vmware.com/go/viewclients"; + license = licenses.unfree; + platforms = platforms.linux; + maintainers = with maintainers; [ buckley310 ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/waypipe/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/waypipe/default.nix new file mode 100644 index 000000000000..0393a5bdeb83 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/waypipe/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchFromGitLab +, meson, ninja, pkg-config, scdoc +, wayland, wayland-protocols, openssh +, mesa, lz4, zstd, ffmpeg, libva +}: + +stdenv.mkDerivation rec { + pname = "waypipe-unstable"; + version = "0.7.0"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + owner = "mstoeckl"; + repo = "waypipe"; + rev = "v${version}"; + sha256 = "0bkmibask7gfnwkn3fg3l6zaabp95n1zsdnz3dwng8j80a0kakyy"; + }; + + postPatch = '' + substituteInPlace src/waypipe.c \ + --replace "/usr/bin/ssh" "${openssh}/bin/ssh" + ''; + + nativeBuildInputs = [ meson ninja pkg-config scdoc ]; + + buildInputs = [ + wayland wayland-protocols + # Optional dependencies: + mesa lz4 zstd ffmpeg libva + ]; + + meta = with stdenv.lib; { + description = "A network proxy for Wayland clients (applications)"; + longDescription = '' + waypipe is a proxy for Wayland clients. It forwards Wayland messages and + serializes changes to shared memory buffers over a single socket. This + makes application forwarding similar to ssh -X feasible. + ''; + homepage = "https://mstoeckl.com/notes/gsoc/blog.html"; + changelog = "https://gitlab.freedesktop.org/mstoeckl/waypipe/-/releases#v${version}"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ primeos ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/wayvnc/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/wayvnc/default.nix new file mode 100644 index 000000000000..e8fbec0d91a9 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/wayvnc/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub, meson, pkg-config, ninja, scdoc +, pixman, libxkbcommon, wayland, neatvnc, libdrm, libX11, aml +}: + +stdenv.mkDerivation rec { + pname = "wayvnc"; + version = "0.3.1"; + + src = fetchFromGitHub { + owner = "any1"; + repo = pname; + rev = "v${version}"; + sha256 = "1vlrk6zdkv0kl1ckxv65nay9vm6yjrs4kadsdvp42nryiifrdhad"; + }; + + nativeBuildInputs = [ meson pkg-config ninja scdoc wayland ]; + buildInputs = [ pixman libxkbcommon wayland neatvnc libdrm libX11 aml ]; + + meta = with stdenv.lib; { + description = "A VNC server for wlroots based Wayland compositors"; + longDescription = '' + This is a VNC server for wlroots based Wayland compositors. It attaches + to a running Wayland session, creates virtual input devices and exposes a + single display via the RFB protocol. The Wayland session may be a + headless one, so it is also possible to run wayvnc without a physical + display attached. + ''; + inherit (src.meta) homepage; + changelog = "https://github.com/any1/wayvnc/releases/tag/v${version}"; + license = licenses.isc; + platforms = platforms.linux; + maintainers = with maintainers; [ primeos ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/x2goclient/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/x2goclient/default.nix new file mode 100644 index 000000000000..047458067357 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/x2goclient/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchgit, cups, libssh, libXpm, nx-libs, openldap, openssh +, mkDerivation, qtbase, qtsvg, qtx11extras, qttools, phonon, pkgconfig }: + +mkDerivation { + pname = "x2goclient"; + version = "unstable-2019-07-24"; + + src = fetchgit { + url = "git://code.x2go.org/x2goclient.git"; + rev = "704c4ab92d20070dd160824c9b66a6d1c56dcc49"; + sha256 = "1pndp3lfzwifyxqq0gps3p1bwakw06clbk6n8viv020l4bsfmq5f"; + }; + + buildInputs = [ cups libssh libXpm nx-libs openldap openssh + qtbase qtsvg qtx11extras qttools phonon pkgconfig ]; + + postPatch = '' + substituteInPlace Makefile \ + --replace "SHELL=/bin/bash" "SHELL=$SHELL" \ + --replace "lrelease-qt4" "${qttools.dev}/bin/lrelease" \ + --replace "qmake-qt4" "${qtbase.dev}/bin/qmake" \ + --replace "-o root -g root" "" + ''; + + makeFlags = [ "PREFIX=$(out)" "ETCDIR=$(out)/etc" "build_client" "build_man" ]; + + enableParallelBuilding = true; + + installTargets = [ "install_client" "install_man" ]; + + qtWrapperArgs = [ ''--suffix PATH : ${nx-libs}/bin:${openssh}/libexec'' ]; + + meta = with stdenv.lib; { + description = "Graphical NoMachine NX3 remote desktop client"; + homepage = "http://x2go.org/"; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/x2goserver/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/x2goserver/default.nix new file mode 100644 index 000000000000..f69d2326217d --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/x2goserver/default.nix @@ -0,0 +1,93 @@ +{ stdenv, lib, fetchurl, perlPackages, makeWrapper, perl, which, nx-libs +, utillinux, coreutils, glibc, gawk, gnused, gnugrep, findutils, xorg +, nettools, iproute, bc, procps, psmisc, lsof, pwgen, openssh, sshfs, bash +}: + +let + pname = "x2goserver"; + version = "4.1.0.3"; + + src = fetchurl { + url = "http://code.x2go.org/releases/source/x2goserver/${pname}-${version}.tar.gz"; + sha256 = "1l6wd708kbipib4ldprfiihqmj4895nifg0bkws4x97majislxk7"; + }; + + x2go-perl = perlPackages.buildPerlPackage rec { + pname = "X2Go"; + inherit version src; + makeFlags = [ "-f" "Makefile.perl" ]; + patchPhase = '' + substituteInPlace X2Go/Config.pm --replace '/etc/x2go' '/var/lib/x2go/conf' + substituteInPlace X2Go/Server/DB.pm \ + --replace '$x2go_lib_path/libx2go-server-db-sqlite3-wrapper' \ + '/run/wrappers/bin/x2gosqliteWrapper' + substituteInPlace X2Go/Server/DB/SQLite3.pm --replace "user='x2gouser'" "user='x2go'" + ''; + }; + + perlEnv = perl.withPackages (p: with p; [ + x2go-perl DBI DBDSQLite FileBaseDir TryTiny CaptureTiny ConfigSimple Switch + ]); + + binaryDeps = [ + perlEnv which nx-libs utillinux coreutils glibc.bin gawk gnused gnugrep + findutils nettools iproute bc procps psmisc lsof pwgen openssh sshfs + xorg.xauth xorg.xinit xorg.xrandr xorg.xmodmap xorg.xwininfo xorg.fontutil + xorg.xkbcomp xorg.setxkbmap + ]; +in +stdenv.mkDerivation rec { + inherit pname version src; + + buildInputs = [ perlEnv bash ]; + + nativeBuildInputs = [ makeWrapper ]; + + prePatch = '' + patchShebangs . + sed -i '/Makefile.PL\|Makefile.perl/d' Makefile + for i in */Makefile; do + substituteInPlace "$i" --replace "-o root -g root " "" + done + substituteInPlace libx2go-server-db-perl/Makefile --replace "chmod 2755" "chmod 755" + for i in x2goserver/sbin/x2godbadmin x2goserver/bin/x2go* + do + substituteInPlace $i --replace '/etc/x2go' '/var/lib/x2go/conf' + done + substituteInPlace x2goserver/sbin/x2gocleansessions \ + --replace '/var/run/x2goserver.pid' '/var/run/x2go/x2goserver.pid' + substituteInPlace x2goserver/sbin/x2godbadmin --replace 'user="x2gouser"' 'user="x2go"' + substituteInPlace x2goserver-xsession/etc/Xsession \ + --replace "SSH_AGENT /bin/bash -c" "SSH_AGENT ${bash}/bin/bash -c" \ + --replace "[ -f /etc/redhat-release ]" "[ -d /etc/nix ] || [ -f /etc/redhat-release ]" + ''; + + makeFlags = [ "PREFIX=/" "NXLIBDIR=${nx-libs}/lib/nx" ]; + + installFlags = [ "DESTDIR=$(out)" ]; + + postInstall = '' + mv $out/etc/x2go/x2goserver.conf{,.example} + mv $out/etc/x2go/x2goagent.options{,.example} + ln -sf ${nx-libs}/bin/nxagent $out/bin/x2goagent + for i in $out/sbin/x2go* $(find $out/bin -type f) \ + $(ls $out/lib/x2go/x2go* | grep -v x2gocheckport) + do + wrapProgram $i --prefix PATH : ${lib.makeBinPath binaryDeps}:$out + done + # We're patching @INC of the setgid wrapper, because we can't mix + # the perl wrapper (for PERL5LIB) with security.wrappers (for setgid) + sed -ie "s,.\+bin/perl,#!${perl}/bin/perl -I ${perlEnv}/lib/perl5/site_perl," \ + $out/lib/x2go/libx2go-server-db-sqlite3-wrapper.pl + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Remote desktop application, server component"; + homepage = "http://x2go.org/"; + platforms = stdenv.lib.platforms.linux; + license = licenses.gpl2; + maintainers = [ maintainers.averelld ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/xrdp/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/xrdp/default.nix new file mode 100644 index 000000000000..9941951225ca --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/xrdp/default.nix @@ -0,0 +1,105 @@ +{ stdenv, fetchFromGitHub, pkgconfig, which, perl, autoconf, automake, libtool, openssl, systemd, pam, fuse, libjpeg, libopus, nasm, xorg }: + +let + xorgxrdp = stdenv.mkDerivation rec { + pname = "xorgxrdp"; + version = "0.2.9"; + + src = fetchFromGitHub { + owner = "neutrinolabs"; + repo = "xorgxrdp"; + rev = "v${version}"; + sha256 = "1bhp5x47hajhinvglmc4vxxnpjvfjm6369njb3ghqfr7c5xypvzr"; + }; + + nativeBuildInputs = [ pkgconfig autoconf automake which libtool nasm ]; + + buildInputs = [ xorg.xorgserver ]; + + postPatch = '' + # patch from Debian, allows to run xrdp daemon under unprivileged user + substituteInPlace module/rdpClientCon.c \ + --replace 'g_sck_listen(dev->listen_sck);' 'g_sck_listen(dev->listen_sck); g_chmod_hex(dev->uds_data, 0x0660);' + + substituteInPlace configure.ac \ + --replace 'moduledir=`pkg-config xorg-server --variable=moduledir`' "moduledir=$out/lib/xorg/modules" \ + --replace 'sysconfdir="/etc"' "sysconfdir=$out/etc" + ''; + + preConfigure = "./bootstrap"; + + configureFlags = [ "XRDP_CFLAGS=-I${xrdp.src}/common" ]; + + enableParallelBuilding = true; + }; + + xrdp = stdenv.mkDerivation rec { + version = "0.9.9"; + pname = "xrdp"; + + src = fetchFromGitHub { + owner = "volth"; + repo = "xrdp"; + rev = "refs/tags/runtime-cfg-path-${version}"; # Fixes https://github.com/neutrinolabs/xrdp/issues/609; not a patch on top of the official repo because "xorgxrdp.configureFlags" above includes "xrdp.src" which must be patched already + fetchSubmodules = true; + sha256 = "0ynj6pml4f38y8571ryhifza57wfqg4frdrjcwzw3fmryiznfm1z"; + }; + + nativeBuildInputs = [ pkgconfig autoconf automake which libtool nasm ]; + + buildInputs = [ openssl systemd pam fuse libjpeg libopus xorg.libX11 xorg.libXfixes xorg.libXrandr ]; + + 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" ]; + + installFlags = [ "DESTDIR=$(out)" "prefix=" ]; + + postInstall = '' + # remove generated keys (as non-determenistic) and upstart script + rm $out/etc/xrdp/{rsakeys.ini,key.pem,cert.pem,xrdp.sh} + + cp $src/keygen/openssl.conf $out/share/xrdp/openssl.conf + + 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}/bin/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}/bin/perl -i -ne 'print unless /\[(X11rdp|Xvnc|Xorg)\]/ .. /^$/' $out/etc/xrdp/sesman.ini + + cat >> $out/etc/xrdp/sesman.ini <<EOF + + [Xorg] + param=${xorg.xorgserver}/bin/Xorg + param=-modulepath + param=${xorgxrdp}/lib/xorg/modules,${xorg.xorgserver}/lib/xorg/modules + param=-config + param=${xorgxrdp}/etc/X11/xrdp/xorg.conf + param=-noreset + param=-nolisten + param=tcp + param=-logfile + param=.xorgxrdp.%s.log + EOF + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "An open source RDP server"; + homepage = "https://github.com/neutrinolabs/xrdp"; + license = licenses.asl20; + maintainers = [ maintainers.volth ]; + platforms = platforms.linux; + }; + }; +in xrdp |