diff options
author | Anderson Torres <torres.anderson.85@protonmail.com> | 2020-10-08 03:02:02 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-08 03:02:02 -0300 |
commit | fab168dbf75a8d40269119e39fbe909a25e86e62 (patch) | |
tree | 2cd14dc4ab9a9995cb21e9f7da36f92c599dbb96 /pkgs/applications/networking/remote | |
parent | 4f36ce4affb13c8b165c6f8e3d2b1489698af35d (diff) | |
parent | 365368035c18750419a229b8bd4fc3990fbb276e (diff) |
Merge pull request #96849 from buckley310/vmwareview
vmware-horizon-client: init at 2006
Diffstat (limited to 'pkgs/applications/networking/remote')
-rw-r--r-- | pkgs/applications/networking/remote/vmware-horizon-client/default.nix | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/pkgs/applications/networking/remote/vmware-horizon-client/default.nix b/pkgs/applications/networking/remote/vmware-horizon-client/default.nix new file mode 100644 index 0000000000000..09b7011c3164a --- /dev/null +++ b/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 ]; + }; +} |