about summary refs log tree commit diff
path: root/pkgs/applications/networking/remote
diff options
context:
space:
mode:
authorAnderson Torres <torres.anderson.85@protonmail.com>2020-10-08 03:02:02 -0300
committerGitHub <noreply@github.com>2020-10-08 03:02:02 -0300
commitfab168dbf75a8d40269119e39fbe909a25e86e62 (patch)
tree2cd14dc4ab9a9995cb21e9f7da36f92c599dbb96 /pkgs/applications/networking/remote
parent4f36ce4affb13c8b165c6f8e3d2b1489698af35d (diff)
parent365368035c18750419a229b8bd4fc3990fbb276e (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.nix80
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 ];
+  };
+}