From 2309d875dd83fdd88a38e494c998639a8a16f0e1 Mon Sep 17 00:00:00 2001 From: Sean Buckley Date: Mon, 29 Nov 2021 16:56:56 -0500 Subject: [PATCH] vmware-horizon-client: various tweaks --- pkgs/vmware-horizon-client.nix | 102 +++++++++++++++------------------ 1 file changed, 45 insertions(+), 57 deletions(-) diff --git a/pkgs/vmware-horizon-client.nix b/pkgs/vmware-horizon-client.nix index 033386a..05ea0b5 100644 --- a/pkgs/vmware-horizon-client.nix +++ b/pkgs/vmware-horizon-client.nix @@ -1,42 +1,12 @@ { stdenv , lib -, at-spi2-atk -, atk , buildFHSUserEnv -, cairo -, 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 +, writeTextDir +, configText ? "" }: let version = "2106.1"; @@ -46,6 +16,19 @@ let else throw "Unsupported system: ${stdenv.hostPlatform.system}"; # The downloaded archive also contains ARM binaries, but these have not been tested. + # For USB support, ensure that /var/run/vmware/ + # exists and is owned by you. Then run vmware-usbarbitrator as root. + bins = [ "vmware-view" "vmware-usbarbitrator" ]; + + # This forces the default GTK theme (Adwaita) because Horizon is prone to + # UI usability issues when using non-default themes, such as Adwaita-dark. + wrapBinCommands = name: '' + makeWrapper "$out/bin/${name}" "$out/bin/${name}_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" + ''; + vmwareHorizonClientFiles = stdenv.mkDerivation { name = "vmwareHorizonClientFiles"; inherit version; @@ -71,21 +54,16 @@ let # This library causes the program to core-dump occasionally. Use ours instead. rm $out/lib/vmware/view/crtbora/libcairo.* - # 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" + ${lib.concatMapStrings wrapBinCommands bins} ''; }; - vmwareFHSUserEnv = buildFHSUserEnv { - name = "vmware-view"; + vmwareFHSUserEnv = name: buildFHSUserEnv { + inherit name; - runScript = "${vmwareHorizonClientFiles}/bin/vmware-view_wrapper"; + runScript = "${vmwareHorizonClientFiles}/bin/${name}_wrapper"; - targetPkgs = pkgs: [ + targetPkgs = pkgs: with pkgs; [ at-spi2-atk atk cairo @@ -99,25 +77,29 @@ let harfbuzz liberation_ttf libjpeg + libpulseaudio libtiff libudev0-shim libuuid - libX11 - libXcursor - libXext - libXi - libXinerama - libxkbfile + libv4l libxml2 - libXrandr - libXrender - libXScrnSaver - libXtst pango pcsclite pixman vmwareHorizonClientFiles + xorg.libX11 + xorg.libXcursor + xorg.libXext + xorg.libXi + xorg.libXinerama + xorg.libxkbfile + xorg.libXrandr + xorg.libXrender + xorg.libXScrnSaver + xorg.libXtst zlib + + (writeTextDir "etc/vmware/config" configText) ]; }; @@ -125,20 +107,25 @@ let name = "vmware-view"; desktopName = "VMware Horizon Client"; icon = "${vmwareHorizonClientFiles}/share/icons/vmware-view.png"; - exec = "${vmwareFHSUserEnv}/bin/vmware-view %u"; + exec = "${vmwareFHSUserEnv "vmware-view"}/bin/vmware-view %u"; mimeType = "x-scheme-handler/vmware-view"; }; + binLinkCommands = lib.concatMapStringsSep + "\n" + (bin: "ln -s ${vmwareFHSUserEnv bin}/bin/${bin} $out/bin/") + bins; + in stdenv.mkDerivation { - name = "vmware-view"; + name = "vmware-horizon-client"; 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/" + cp ${desktopItem}/share/applications/* $out/share/applications/ + ${binLinkCommands} ''; unwrapped = vmwareHorizonClientFiles; @@ -146,10 +133,11 @@ stdenv.mkDerivation { passthru.updateScript = ./update.sh; meta = with lib; { + mainProgram = "vmware-view"; description = "Allows you to connect to your VMware Horizon virtual desktop"; homepage = "https://www.vmware.com/go/viewclients"; license = licenses.unfree; - platforms = platforms.linux; + platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ buckley310 ]; }; }