From a25b47a459035bed130a2944f4e642108c1ad884 Mon Sep 17 00:00:00 2001 From: Sean Buckley Date: Fri, 22 Jan 2021 11:57:53 -0500 Subject: vmware-horizon-client: 2006 -> 2012 vmware-horizon-client: add missing gsettings schemas vmware-horizon-client: change whitespace, and "lib" argument vmware-horizon-client: fix library issues with chromium vmware-horizon-client: add updater script --- .../remote/vmware-horizon-client/default.nix | 102 +++++++++++++++++---- .../remote/vmware-horizon-client/update.sh | 27 ++++++ 2 files changed, 113 insertions(+), 16 deletions(-) create mode 100755 pkgs/applications/networking/remote/vmware-horizon-client/update.sh (limited to 'pkgs/applications/networking') diff --git a/pkgs/applications/networking/remote/vmware-horizon-client/default.nix b/pkgs/applications/networking/remote/vmware-horizon-client/default.nix index 7d5b965e60fef..a9ddf48bae607 100644 --- a/pkgs/applications/networking/remote/vmware-horizon-client/default.nix +++ b/pkgs/applications/networking/remote/vmware-horizon-client/default.nix @@ -1,24 +1,56 @@ -{ lib, 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 +{ stdenv +, lib +, at-spi2-atk +, atk +, buildFHSUserEnv +, dbus +, fetchurl +, fontconfig +, freetype +, gdk-pixbuf +, glib +, gsettings-desktop-schemas +, gtk2 +, gtk3-x11 +, harfbuzz +, liberation_ttf +, libjpeg +, libtiff +, libudev0-shim +, libuuid +, libX11 +, libXcursor +, libXext +, libXi +, libXinerama +, libxkbfile +, libxml2 +, libXrandr +, libXrender +, libXScrnSaver +, libxslt +, libXtst +, makeDesktopItem +, makeWrapper +, pango +, pcsclite +, pixman +, zlib }: - let - version = "2006"; + version = "2012"; 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. + # 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"; + url = "https://download3.vmware.com/software/view/viewclients/CART21FQ4/VMware-Horizon-Client-Linux-2012-8.1.0-17349998.tar.gz"; + sha256 = "0afda1f3116e75a4e7f89990d8ee60ccea5f3bb8a2360652162fa11c795724ce"; }; buildInputs = [ makeWrapper ]; installPhase = '' @@ -30,12 +62,16 @@ let # 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" + rm "$out/lib/vmware/gcc/libstdc++.so.6" + + # This libjpeg library interferes with Chromium, so we will be using ours instead. + rm $out/lib/vmware/libjpeg.* # 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 XDG_DATA_DIRS : "${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}" \ --suffix LD_LIBRARY_PATH : "$out/lib/vmware/view/crtbora:$out/lib/vmware" ''; }; @@ -46,10 +82,37 @@ let 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 + at-spi2-atk + atk + dbus + fontconfig + freetype + gdk-pixbuf + glib + gtk2 + gtk3-x11 + harfbuzz + liberation_ttf + libjpeg + libtiff + libudev0-shim + libuuid + libX11 + libXcursor + libXext + libXi + libXinerama + libxkbfile + libxml2 + libXrandr + libXrender + libXScrnSaver + libXtst + pango + pcsclite + pixman + vmwareHorizonClientFiles + zlib ]; }; @@ -61,15 +124,22 @@ let mimeType = "x-scheme-handler/vmware-view"; }; -in stdenv.mkDerivation { +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/" ''; + unwrapped = vmwareHorizonClientFiles; + + passthru.updateScript = ./update.sh; + meta = with lib; { description = "Allows you to connect to your VMware Horizon virtual desktop"; homepage = "https://www.vmware.com/go/viewclients"; diff --git a/pkgs/applications/networking/remote/vmware-horizon-client/update.sh b/pkgs/applications/networking/remote/vmware-horizon-client/update.sh new file mode 100755 index 0000000000000..126cb17a7c284 --- /dev/null +++ b/pkgs/applications/networking/remote/vmware-horizon-client/update.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env nix-shell +#!nix-shell -p curl -p jq -p common-updater-scripts -i bash +set -e + +entryPointURL='https://my.vmware.com/channel/public/api/v1.0/products/getRelatedDLGList?locale=en_US&category=desktop_end_user_computing&product=vmware_horizon_clients&version=horizon_8&dlgType=PRODUCT_BINARY' + +function getTarballMetaUrl { + curl "$entryPointURL" | jq -r ' + .dlgEditionsLists | .[] | select(.name | contains("Client for Linux")) | + .dlgList | .[] | select(.name | contains("tarball version")) | + @uri "https://my.vmware.com/channel/public/api/v1.0/dlg/details?locale=en_US&downloadGroup=\(.code)&productId=\(.productId)&rPId=\(.releasePackageId)" + ' +} + +meta="$( curl "$(getTarballMetaUrl)" | jq ".downloadFiles | .[]" )" + +ver="$( echo "$meta" | jq -r .version )" +url="$( echo "$meta" | jq -r .thirdPartyDownloadUrl )" +sum="$( echo "$meta" | jq -r .sha256checksum )" + +echo +echo "version: $ver" +echo "tar url: $url" +echo " sha256: $sum" + +cd "$(dirname "$0")/../../../../.." +update-source-version vmware-horizon-client.unwrapped "$ver" "$sum" "$url" -- cgit 1.4.1