aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix266
1 files changed, 19 insertions, 247 deletions
diff --git a/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix b/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix
index a62b1bf5ee1..3a6054db354 100644
--- a/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix
+++ b/nixpkgs/pkgs/applications/networking/remote/citrix-workspace/default.nix
@@ -1,253 +1,25 @@
-{ stdenv
-, lib
-, fetchurl
-, requireFile
-, makeWrapper
-, libredirect
-, busybox
-, file
-, makeDesktopItem
-, tzdata
-, cacert
-, dconf
-, glib
-, gtk2
-, atk
-, gdk-pixbuf
-, cairo
-, pango
-, gnome3
-, xorg
-, libpng12
-, freetype
-, fontconfig
-, gtk_engines
-, alsaLib
-, zlib
-, version ? "20.04.0"
-}:
+{ lib, callPackage }:
-let
- versionInfo = let
- supportedVersions = {
- "19.6.0" = {
- major = "19";
- minor = "6";
- patch = "0";
- x64hash = "0szqlfmigzgf0309i6ikxkizxaf4ri7qmhys75m0zi3bpwx6hzhs";
- x86hash = "16v3kgavrh62z6vxcbw6mn7h0bfishpl7m92k7g1p2882r1f8vaf";
- x64suffix = "60";
- x86suffix = "60";
- homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest.html";
- };
-
- "19.8.0" = {
- major = "19";
- minor = "8";
- patch = "0";
- x64hash = "0f8djw8lp5wihb23y09yac1mh09w1qp422h72r6zfx9k1lqfsdbw";
- x86hash = "0afcqirb4q349r3izy88vqkszg6y2wg14iwypk6nrmvwgvcl6jdn";
- x64suffix = "20";
- x86suffix = "20";
- homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-1908.html";
- };
-
- "19.10.0" = {
- major = "19";
- minor = "10";
- patch = "0";
- x64hash = "1l4q4pmfiw9gmml6j5b3hls2101xf5m8p6855nhfhvqlisrj9h14";
- x86hash = "000zjik8wf8b6fadnsai0p77b4n2l95544zx503iyrb9pv53bj3y";
- x64suffix = "15";
- x86suffix = "15";
- homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-1910.html";
- };
-
- "19.12.0" = {
- major = "19";
- minor = "12";
- patch = "0";
- x64hash = "1si5mkxbgb8m99bkvgc3l80idjfdp0kby6pv47s07nn43dbr1j7a";
- x86hash = "07rfp90ksnvr8zv7ix7f0z6a59n48s7bd4kqbzilfwxgs4ddqmcy";
- x64suffix = "19";
- x86suffix = "19";
- homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-1912.html";
- };
-
- "20.04.0" = {
- major = "20";
- minor = "04";
- patch = "0";
- x64hash = "E923592216F9541173846F932784E6C062CB09C9E8858219C7489607BF82A0FB";
- x86hash = "A2E2E1882723DA6796E68916B3BB2B44DD575A83DEB03CA90A262F6C81B1A53F";
- x64suffix = "21";
- x86suffix = "21";
- homepage = "https://www.citrix.com/downloads/workspace-app/linux/workspace-app-for-linux-latest.html";
- };
- };
-
- # Copied this file largely from the citrix-receiver package
- # Leaving this here even though there are no deprecations yet
- # for ease of future maintenance.
- #
- # The lifespans of Citrix products can be found here:
- # https://www.citrix.com/support/product-lifecycle/milestones/receiver.html
- deprecatedVersions = let
- versions = [ "19.3.0" ];
- in
- lib.listToAttrs
- (lib.forEach versions
- (v: lib.nameValuePair v (throw "Unsupported citrix_workspace version: ${v}")));
- in
- deprecatedVersions // supportedVersions;
-
- citrixWorkspaceForVersion = { major, minor, patch, x64hash, x86hash, x64suffix, x86suffix, homepage }:
- stdenv.mkDerivation rec {
- pname = "citrix-workspace";
- version = "${major}.${minor}.${patch}";
- inherit homepage;
-
- prefixWithBitness = if stdenv.is64bit then "linuxx64" else "linuxx86";
-
- preferLocalBuild = true;
-
- src = requireFile rec {
- name = if stdenv.is64bit then "${prefixWithBitness}-${version}.${x64suffix}.tar.gz" else "${prefixWithBitness}-${version}.${x86suffix}.tar.gz";
- sha256 = if stdenv.is64bit then x64hash else x86hash;
- message = ''
- In order to use Citrix Workspace, you need to comply with the Citrix EULA and download
- the ${if stdenv.is64bit then "64-bit" else "32-bit"} binaries, .tar.gz from:
-
- ${homepage}
-
- (if you do not find version ${version} there, try at
- https://www.citrix.com/downloads/workspace-app/
-
- Once you have downloaded the file, please use the following command and re-run the
- installation:
-
- nix-prefetch-url file://\$PWD/${name}
- '';
- };
-
- dontBuild = true;
+# For detailed information about the Citrix source-tarball, please refer to the OEM
+# reference guide: https://developer-docs.citrix.com/projects/workspace-app-for-linux-oem-guide/en/latest/
- sourceRoot = ".";
-
- buildInputs = [
- makeWrapper
- busybox
- file
- gtk2
- gdk-pixbuf
- ];
-
- libPath = stdenv.lib.makeLibraryPath [
- glib
- gtk2
- atk
- gdk-pixbuf
- cairo
- pango
- dconf
- xorg.libX11
- xorg.libXext
- xorg.libXrender
- xorg.libXinerama
- xorg.libXfixes
- libpng12
- zlib
- gtk_engines
- freetype
- fontconfig
- alsaLib
- stdenv.cc.cc # Fixes: Can not load [..]/opt/citrix-icaclient/lib/ctxh264_fb.so:(null)
- ];
-
- desktopItem = makeDesktopItem {
- name = "wfica";
- desktopName = "Citrix Workspace";
- genericName = "Citrix Workspace";
- exec = "wfica";
- icon = "wfica";
- comment = "Connect to remote Citrix server";
- categories = "GTK;GNOME;X-GNOME-NetworkSettings;Network;";
- mimeType = "application/x-ica";
- };
-
- installPhase = ''
- runHook preInstall
-
- export ICAInstDir="$out/opt/citrix-icaclient"
-
- sed -i \
- -e 's,^main_install_menu$,install_ICA_client,g' \
- -e 's,^integrate_ICA_client(),alias integrate_ICA_client=true\nintegrate_ICA_client_old(),g' \
- -e 's,^ANSWER=""$,ANSWER="$INSTALLER_YES",' \
- -e 's,/bin/true,true,g' \
- ./${prefixWithBitness}/hinst
-
- # Run the installer...
- bash ./${prefixWithBitness}/hinst CDROM "`pwd`"
-
- echo "Deleting broken links..."
- for link in `find $ICAInstDir -type l `
- do
- [ -f "$link" ] || rm -v "$link"
- done
-
- echo "Expanding certificates..."
- # As explained in https://wiki.archlinux.org/index.php/Citrix#Security_Certificates
- pushd "$ICAInstDir/keystore/cacerts"
- awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "cert." c ".pem"}' < ${cacert}/etc/ssl/certs/ca-bundle.crt
- popd
-
- echo "Patching executables..."
- find $ICAInstDir -type f -exec file {} \; |
- grep 'ELF.*executable' |
- cut -f 1 -d : |
- grep -vi '\(.dll\|.so\)$' | # added as a workaround to https://github.com/NixOS/nixpkgs/issues/41729
- while read f
- do
- echo "Patching ELF intrepreter and rpath for $f"
- chmod u+w "$f"
- patchelf \
- --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
- --set-rpath "$ICAInstDir:$libPath" "$f"
- done
-
- echo "Wrapping wfica..."
- mkdir "$out/bin"
-
- makeWrapper "$ICAInstDir/wfica" "$out/bin/wfica" \
- --add-flags "-icaroot $ICAInstDir" \
- --set ICAROOT "$ICAInstDir" \
- --set GTK_PATH "${gtk2.out}/lib/gtk-2.0:${gnome3.gnome-themes-extra}/lib/gtk-2.0" \
- --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
- --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
- --set LD_LIBRARY_PATH "$libPath" \
- --set NIX_REDIRECTS "/usr/share/zoneinfo=${tzdata}/share/zoneinfo:/etc/zoneinfo=${tzdata}/share/zoneinfo:/etc/timezone=$ICAInstDir/timezone"
-
- echo "We arbitrarily set the timezone to UTC. No known consequences at this point."
- echo UTC > "$ICAInstDir/timezone"
-
- echo "Installing desktop item..."
- mkdir -p $out/share/applications
- cp ${desktopItem}/share/applications/* $out/share/applications
+let
+ inherit (callPackage ./sources.nix { }) supportedVersions unsupportedVersions;
+ mkCitrix = callPackage ./generic.nix { };
- # We introduce a dependency on the source file so that it need not be redownloaded everytime
- echo $src >> "$out/share/workspace_dependencies.pin"
+ toAttrName = x: "citrix_workspace_${builtins.replaceStrings [ "." ] [ "_" ] x}";
- runHook postInstall
- '';
+ unsupported = lib.listToAttrs (
+ map (x: lib.nameValuePair (toAttrName x) (throw ''
+ Citrix Workspace at version ${x} is not supported anymore!
- meta = with stdenv.lib; {
- license = stdenv.lib.licenses.unfree;
- inherit homepage;
- description = "Citrix Workspace";
- platforms = platforms.linux;
- maintainers = with maintainers; [ ma27 ];
- };
- };
+ Actively supported releases are listed here:
+ https://www.citrix.com/en-gb/support/product-lifecycle/milestones/receiver.html
+ '')) unsupportedVersions
+ );
-in citrixWorkspaceForVersion (lib.getAttr version versionInfo)
+ supported = lib.mapAttrs' (
+ attr: versionInfo: lib.nameValuePair (toAttrName attr) (callPackage ./generic.nix versionInfo)
+ ) supportedVersions;
+in
+ supported // unsupported