diff --git a/pkgs/applications/networking/remote/citrix-workspace/default.nix b/pkgs/applications/networking/remote/citrix-workspace/default.nix index c6bd8596920b..22b7ea21154e 100644 --- a/pkgs/applications/networking/remote/citrix-workspace/default.nix +++ b/pkgs/applications/networking/remote/citrix-workspace/default.nix @@ -4,24 +4,10 @@ # reference guide: https://developer-docs.citrix.com/en-us/citrix-workspace-app-for-linux/citrix-workspace-app-for-linux-oem-reference-guide let - inherit (callPackage ./sources.nix { }) supportedVersions unsupportedVersions; + supportedVersions = callPackage ./sources.nix { }; toAttrName = x: "citrix_workspace_${builtins.replaceStrings [ "." ] [ "_" ] x}"; - - unsupported = lib.listToAttrs ( - map ( - x: - lib.nameValuePair (toAttrName x) (throw '' - Citrix Workspace at version ${x} is not supported anymore! - - Actively supported releases are listed here: - https://www.citrix.com/support/product-lifecycle/workspace-app.html - '') - ) unsupportedVersions - ); - - supported = lib.mapAttrs' ( - attr: versionInfo: lib.nameValuePair (toAttrName attr) (callPackage ./generic.nix versionInfo) - ) supportedVersions; in -supported // unsupported +lib.mapAttrs' ( + attr: versionInfo: lib.nameValuePair (toAttrName attr) (callPackage ./generic.nix versionInfo) +) supportedVersions diff --git a/pkgs/applications/networking/remote/citrix-workspace/generic.nix b/pkgs/applications/networking/remote/citrix-workspace/generic.nix index 57e0ff7ee8c6..2dc0171aa9c5 100644 --- a/pkgs/applications/networking/remote/citrix-workspace/generic.nix +++ b/pkgs/applications/networking/remote/citrix-workspace/generic.nix @@ -10,10 +10,11 @@ cacert, cairo, dconf, - fetchurl, + enchant2, file, fontconfig, freetype, + fuse3, gdk-pixbuf, glib, glib-networking, @@ -22,8 +23,11 @@ gtk2-x11, gtk3, gtk_engines, + harfbuzzFull, heimdal, + hyphen, krb5, + lcms2, libGL, libappindicator-gtk3, libcanberra-gtk3, @@ -32,15 +36,19 @@ libfaketime, libgbm, libinput, - libjpeg, + libjpeg8, libjson, + libmanette, + libnotify, libpng12, libpulseaudio, libredirect, + libseccomp, libsecret, libsoup_2_4, libvorbis, libxml2_13, + libxslt, llvmPackages, more, nspr, @@ -49,25 +57,33 @@ openssl, pango, pcsclite, + perl, sane-backends, speex, symlinkJoin, systemd, tzdata, - # webkitgtk_4_0, which, + woff2, xorg, zlib, homepage, version, - prefix, hash, extraCerts ? [ ], }: let + fuse3' = symlinkJoin { + name = "fuse3-backwards-compat"; + paths = [ (lib.getLib fuse3) ]; + postBuild = '' + ln -sf $out/lib/libfuse3.so.3.17.4 $out/lib/libfuse3.so.3 + ''; + }; + openssl' = symlinkJoin { name = "openssl-backwards-compat"; nativeBuildInputs = [ makeWrapper ]; @@ -97,12 +113,12 @@ stdenv.mkDerivation rec { inherit version; src = requireFile rec { - name = "${prefix}-${version}.tar.gz"; + name = "linuxx64-${version}.tar.gz"; sha256 = hash; message = '' In order to use Citrix Workspace, you need to comply with the Citrix EULA and download - the ${if stdenv.hostPlatform.is64bit then "64-bit" else "32-bit"} binaries, .tar.gz from: + the 64-bit binaries, .tar.gz from: ${homepage} @@ -137,8 +153,10 @@ stdenv.mkDerivation rec { atk cairo dconf + enchant2 fontconfig freetype + fuse3' gdk-pixbuf glib-networking gnome2.gtkglext @@ -146,22 +164,29 @@ stdenv.mkDerivation rec { gtk2-x11 gtk3 gtk_engines + harfbuzzFull heimdal + hyphen krb5 + lcms2 libGL libcanberra-gtk3 libcap libcxx libgbm libinput - libjpeg + libjpeg8 libjson + libmanette + libnotify libpng12 libpulseaudio + libseccomp libsecret libsoup_2_4 libvorbis libxml2_13 + libxslt llvmPackages.libunwind nspr nss @@ -173,7 +198,7 @@ stdenv.mkDerivation rec { speex stdenv.cc.cc (lib.getLib systemd) - # webkitgtk_4_0 + woff2 xorg.libXScrnSaver xorg.libXaw xorg.libXmu @@ -216,9 +241,9 @@ stdenv.mkDerivation rec { ${lib.optionalString (icaFlag program != null) ''--add-flags "${icaFlag program} $ICAInstDir"''} \ --set ICAROOT "$ICAInstDir" \ --prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules" \ - --prefix LD_LIBRARY_PATH : "$ICAInstDir:$ICAInstDir/lib" \ + --prefix LD_LIBRARY_PATH : "$ICAInstDir:$ICAInstDir/lib:$ICAInstDir/usr/lib/x86_64-linux-gnu:$ICAInstDir/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/injected-bundle" \ --set LD_PRELOAD "${libredirect}/lib/libredirect.so ${lib.getLib pcsclite}/lib/libpcsclite.so" \ - --set NIX_REDIRECTS "/usr/share/zoneinfo=${tzdata}/share/zoneinfo:/etc/zoneinfo=${tzdata}/share/zoneinfo:/etc/timezone=$ICAInstDir/timezone" + --set NIX_REDIRECTS "/usr/share/zoneinfo=${tzdata}/share/zoneinfo:/etc/zoneinfo=${tzdata}/share/zoneinfo:/etc/timezone=$ICAInstDir/timezone:/usr/lib/x86_64-linux-gnu=$ICAInstDir/usr/lib/x86_64-linux-gnu" ''; wrapLink = program: '' ${wrap program} @@ -247,9 +272,9 @@ stdenv.mkDerivation rec { export HOME=$(mktemp -d) # Run upstream installer in the store-path. - sed -i -e 's,^ANSWER="",ANSWER="$INSTALLER_YES",g' -e 's,/bin/true,true,g' ./${prefix}/hinst + sed -i -e 's,^ANSWER="",ANSWER="$INSTALLER_YES",g' -e 's,/bin/true,true,g' -e 's, -C / , -C . ,g' ./linuxx64/hinst source_date=$(date --utc --date=@$SOURCE_DATE_EPOCH "+%F %T") - faketime -f "$source_date" ${stdenv.shell} ${prefix}/hinst CDROM "$(pwd)" + faketime -f "$source_date" ${stdenv.shell} linuxx64/hinst CDROM "$(pwd)" if [ -f "$ICAInstDir/util/setlog" ]; then chmod +x "$ICAInstDir/util/setlog" @@ -274,11 +299,6 @@ stdenv.mkDerivation rec { ${mkWrappers copyCert extraCerts} - # See https://developer-docs.citrix.com/en-us/citrix-workspace-app-for-linux/citrix-workspace-app-for-linux-oem-reference-guide/reference-information/#library-files - # Those files are fallbacks to support older libwekit.so and libjpeg.so - rm $out/opt/citrix-icaclient/lib/ctxjpeg_fb_8.so || true - rm $out/opt/citrix-icaclient/lib/UIDialogLibWebKit.so || true - # We support only Gstreamer 1.0 rm $ICAInstDir/util/{gst_aud_{play,read},gst_*0.10,libgstflatstm0.10.so} || true ln -sf $ICAInstDir/util/gst_play1.0 $ICAInstDir/util/gst_play @@ -299,26 +319,24 @@ stdenv.mkDerivation rec { # Make sure that `autoPatchelfHook` is executed before # running `ctx_rehash`. dontAutoPatchelf = true; - preFixup = '' - find $out/opt/citrix-icaclient/lib -name "libopencv_imgcodecs.so.*" | while read -r fname; do - # lib needs libtiff.so.5, but nixpkgs provides libtiff.so.6 - patchelf --replace-needed libtiff.so.5 libtiff.so $fname - # lib needs libjpeg.so.8, but nixpkgs provides libjpeg.so.9 - patchelf --replace-needed libjpeg.so.8 libjpeg.so $fname - done - ''; + # Null out hardcoded webkit bundle path so it falls back to LD_LIBRARY_PATH postFixup = '' + ${lib.getExe perl} -0777 -pi -e 's{/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/injected-bundle/}{"\0" x length($&)}e' \ + $out/opt/citrix-icaclient/usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37.56.4 + autoPatchelf -- "$out" + $out/opt/citrix-icaclient/util/ctx_rehash ''; meta = { - # webkitgtk_4_0 was removed - broken = true; + # Older versions need webkitgtk_4_0 which was removed. + # 25.08 bundles the same. + broken = lib.versionOlder version "25.08"; license = lib.licenses.unfree; description = "Citrix Workspace"; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; - platforms = [ "x86_64-linux" ] ++ lib.optional (lib.versionOlder version "24") "i686-linux"; + platforms = [ "x86_64-linux" ]; maintainers = with lib.maintainers; [ flacks ]; inherit homepage; }; diff --git a/pkgs/applications/networking/remote/citrix-workspace/sources.nix b/pkgs/applications/networking/remote/citrix-workspace/sources.nix index 597d24487271..34f0c8e627ae 100644 --- a/pkgs/applications/networking/remote/citrix-workspace/sources.nix +++ b/pkgs/applications/networking/remote/citrix-workspace/sources.nix @@ -7,117 +7,28 @@ let major, minor, patch, - x64hash, - x86hash, - x64suffix, - x86suffix, + hash, + suffix, homepage, }: { - inherit homepage; - version = "${major}.${minor}.${patch}.${ - if stdenv.hostPlatform.is64bit then x64suffix else x86suffix - }"; - prefix = "linuxx${if stdenv.hostPlatform.is64bit then "64" else "86"}"; - hash = if stdenv.hostPlatform.is64bit then x64hash else x86hash; + inherit hash homepage; + version = "${major}.${minor}.${patch}.${suffix}"; }; # Attribute-set with all actively supported versions of the Citrix workspace app # for Linux. # # The latest versions can be found at https://www.citrix.com/downloads/workspace-app/linux/ - # x86 is unsupported past 23.11, see https://docs.citrix.com/en-us/citrix-workspace-app-for-linux/deprecation supportedVersions = lib.mapAttrs mkVersionInfo { - - "23.11.0" = { - major = "23"; - minor = "11"; - patch = "0"; - x64hash = "d3dde64baa6db7675a025eff546d552544d3523f4f3047621884f7830a9e2822"; - x86hash = "65b8c144e51b5bd78b98ae69e0fa76d6c020a857d74fd5254be49492527072b6"; - x64suffix = "82"; - x86suffix = "82"; - homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest10.html"; - }; - - "24.02.0" = { - major = "24"; - minor = "2"; - patch = "0"; - x64hash = "eaeb5d3bd079d4e5c9707da67f5f7a25cb765e19c36d01861290655dbf2aaee4"; - x86hash = ""; - x64suffix = "65"; - x86suffix = ""; - homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest12.html"; - }; - - "24.05.0" = { - major = "24"; - minor = "5"; - patch = "0"; - x64hash = "sha256-pye2JOilSbp8PFCpVXFkrRW98E8klCqoisVSWjR38nE="; - x86hash = ""; - x64suffix = "76"; - x86suffix = ""; - homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest1.html"; - }; - - "24.08.0" = { - major = "24"; - minor = "8"; - patch = "0"; - x64hash = "1jb22n6gcv4pv8khg98sv663yfpi47dpkvqgifbhps98iw5zrkbp"; - x86hash = ""; - x64suffix = "98"; - x86suffix = ""; - homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest-2408.html"; - }; - - "24.11.0" = { - major = "24"; - minor = "11"; - patch = "0"; - x64hash = "0kylvqdzkw0635mbb6r5k1lamdjf1hr9pk5rxcff63z4f8q0g3zf"; - x86hash = ""; - x64suffix = "85"; - x86suffix = ""; - homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest13.html"; - }; - - "25.03.0" = { + "25.08.10" = { major = "25"; - minor = "03"; - patch = "0"; - x64hash = "052zibykhig9091xl76z2x9vn4f74w5q8i9frlpc473pvfplsczk"; - x86hash = ""; - x64suffix = "66"; - x86suffix = ""; - homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest-2503.html"; - }; - - "25.05.0" = { - major = "25"; - minor = "05"; - patch = "0"; - x64hash = "0fwqsxggswms40b5k8saxpm1ghkxppl27x19w8jcslq1f0i1fwqx"; - x86hash = ""; - x64suffix = "44"; - x86suffix = ""; + minor = "08"; + patch = "10"; + hash = "06hdwi5rd8z43nlpvym6yrw3snfz8jh6ic3g4pihn9ji22bw5pbd"; + suffix = "111"; homepage = "https://www.citrix.com/downloads/workspace-app/linux/workspace-app-for-linux-latest.html"; }; }; - - # Retain attribute-names for abandoned versions of Citrix workspace to - # provide a meaningful error-message if it's attempted to use such an old one. - # - # The lifespans of Citrix products can be found here: - # https://www.citrix.com/support/product-lifecycle/workspace-app.html - unsupportedVersions = [ - "23.02.0" - "23.07.0" - "23.09.0" - ]; in -{ - inherit supportedVersions unsupportedVersions; -} +supportedVersions diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index d4f5aad043eb..d733e3bb3603 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -432,6 +432,13 @@ mapAliases { chrome-gnome-shell = throw "'chrome-gnome-shell' has been renamed to/replaced by 'gnome-browser-connector'"; # Converted to throw 2025-10-27 ci-edit = throw "'ci-edit' has been removed due to lack of maintenance upstream"; # Added 2025-08-26 cinnamon-common = cinnamon; # Added 2025-08-06 + citrix_workspace_23_11_0 = throw "'citrix_workspace_23_11_0' has been removed because it has reached EOL."; # Added 2025-11-25 + citrix_workspace_24_02_0 = throw "'citrix_workspace_24_02_0' has been removed because it has reached EOL."; # Added 2025-11-25 + citrix_workspace_24_05_0 = throw "'citrix_workspace_24_05_0' has been removed because it depended on the removed webkitgtk_4_0."; # Added 2025-11-25 + citrix_workspace_24_08_0 = throw "'citrix_workspace_24_08_0' has been removed because it depended on the removed webkitgtk_4_0."; # Added 2025-11-25 + citrix_workspace_24_11_0 = throw "'citrix_workspace_24_11_0' has been removed because it depended on the removed webkitgtk_4_0."; # Added 2025-11-25 + citrix_workspace_25_03_0 = throw "'citrix_workspace_25_03_0' has been removed because it depended on the removed webkitgtk_4_0."; # Added 2025-11-25 + citrix_workspace_25_05_0 = throw "'citrix_workspace_25_05_0' has been removed because it depended on the removed webkitgtk_4_0."; # Added 2025-11-25 clamsmtp = throw "'clamsmtp' has been removed as it is unmaintained and broken"; # Added 2025-05-17 clang12Stdenv = throw "clang12Stdenv has been removed, as it is unmaintained and obsolete"; # Added 2025-08-10 clang13Stdenv = throw "clang13Stdenv has been removed, as it is unmaintained and obsolete"; # Added 2025-08-10 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ce1fa4a97445..a3e4a621218c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2181,15 +2181,9 @@ with pkgs; circus = with python310Packages; toPythonApplication circus; inherit (callPackage ../applications/networking/remote/citrix-workspace { }) - citrix_workspace_23_11_0 - citrix_workspace_24_02_0 - citrix_workspace_24_05_0 - citrix_workspace_24_08_0 - citrix_workspace_24_11_0 - citrix_workspace_25_03_0 - citrix_workspace_25_05_0 + citrix_workspace_25_08_10 ; - citrix_workspace = citrix_workspace_25_05_0; + citrix_workspace = citrix_workspace_25_08_10; colord-gtk4 = colord-gtk.override { withGtk4 = true; };