aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/applications/networking/remote
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/networking/remote')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/anydesk/default.nix89
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix25
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/generic.nix210
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/sources.nix69
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/freerdp/default.nix115
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/putty/default.nix55
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/rdesktop/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/remmina/default.nix60
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/teamviewer/default.nix66
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/vmware-horizon-client/default.nix80
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/waypipe/default.nix44
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/wayvnc/default.nix34
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/x2goclient/default.nix39
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/x2goserver/default.nix93
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/remote/xrdp/default.nix105
15 files changed, 1116 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..c0dc438daacd
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/generic.nix
@@ -0,0 +1,210 @@
+{ 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
+, libpulseaudio, pcsclite
+
+, 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
+ ++ lib.optional (lib.versionAtLeast version "20.10") libpulseaudio;
+
+ runtimeDependencies = [
+ glib
+ pcsclite
+
+ 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' ./${prefix}/hinst
+ ${stdenv.shell} ${prefix}/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 || true
+ rm $out/opt/citrix-icaclient/lib/UIDialogLibWebKit.so || true
+
+ # 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..bbeed5b779c2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/sources.nix
@@ -0,0 +1,69 @@
+{ 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/legacy-workspace-app-for-linux/workspace-app-for-linux-2009.html";
+ };
+
+ "20.10.0" = {
+ major = "20";
+ minor = "10";
+ patch = "0";
+ x64hash = "13g7r92mhwqwqkm6a4k4yn232ighkmxifs7j8wdi1yva0dvklqdf";
+ x86hash = "04cr2da25v8x098ccyjwa47d4krk3jpldqkyf4kk2j3hwzbqh9yx";
+ x64suffix = "6";
+ x86suffix = "6";
+ 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 = [ ];
+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..a81356da252d
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/freerdp/default.nix
@@ -0,0 +1,115 @@
+{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig, alsaLib, ffmpeg, 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, cairo
+, libusb1, libpulseaudio, cups, pcsclite, systemd, libjpeg_turbo
+, 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
+ cairo
+ cups
+ ffmpeg
+ glib
+ gst-plugins-base
+ gst-plugins-good
+ gstreamer
+ libX11
+ libXcursor
+ libXdamage
+ libXext
+ libXi
+ libXinerama
+ libXrandr
+ libXrender
+ libXtst
+ libXv
+ libjpeg_turbo
+ 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;
+ WITH_VAAPI = true;
+ WITH_JPEG = (libjpeg_turbo != null);
+ WITH_CAIRO = (cairo != null);
+ };
+
+ 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..2c91d6496a0e
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/remote/waypipe/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitLab
+, meson, ninja, pkg-config, scdoc
+, openssh
+, mesa, lz4, zstd, ffmpeg, libva
+}:
+
+stdenv.mkDerivation rec {
+ pname = "waypipe-unstable";
+ version = "0.7.1";
+
+ src = fetchFromGitLab {
+ domain = "gitlab.freedesktop.org";
+ owner = "mstoeckl";
+ repo = "waypipe";
+ rev = "v${version}";
+ sha256 = "00skyxmbssfxksb8wlqdr8gajpysadirjcn230fd5gaf5msvllx7";
+ };
+
+ postPatch = ''
+ substituteInPlace src/waypipe.c \
+ --replace "/usr/bin/ssh" "${openssh}/bin/ssh"
+ '';
+
+ nativeBuildInputs = [ meson ninja pkg-config scdoc ];
+
+ buildInputs = [
+ # 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..1c20bd8b7a82
--- /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
+, util-linux, 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 util-linux 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