diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 0a044f16041..e0c9d2bdf18 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -1242,6 +1242,12 @@ githubId = 32319131; name = "Brett L"; }; + buckley310 = { + email = "sean.bck@gmail.com"; + github = "buckley310"; + githubId = 2379774; + name = "Sean Buckley"; + }; buffet = { email = "niclas@countingsort.com"; github = "buffet"; 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 00000000000..09b7011c316 --- /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 ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7ec3297f45f..1d67b31deae 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -23965,6 +23965,8 @@ in vmpk = callPackage ../applications/audio/vmpk { }; + vmware-horizon-client = callPackage ../applications/networking/remote/vmware-horizon-client { }; + vocproc = callPackage ../applications/audio/vocproc { }; vnstat = callPackage ../applications/networking/vnstat { };