From c8159d217ddfbdbe7e37a7e4895a62577686c061 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Mon, 8 Jun 2026 08:51:15 -0500 Subject: [PATCH] citrix_workspace: 26.01.0.150 -> 26.04.0.73 Use the Citrix Workspace app for Linux 2604 GCC 11 technical preview package line, which links against webkit2gtk-4.1 and libsoup-3.0 instead of libsoup 2.4. Download page: https://www.citrix.com/downloads/workspace-app/betas-and-tech-previews/workspace-app-tp-gcc11-for-linux.html --- .../remote/citrix-workspace/generic.nix | 77 +++++++------------ .../remote/citrix-workspace/sources.nix | 21 ++--- pkgs/top-level/aliases.nix | 2 + pkgs/top-level/all-packages.nix | 5 +- 4 files changed, 37 insertions(+), 68 deletions(-) diff --git a/pkgs/applications/networking/remote/citrix-workspace/generic.nix b/pkgs/applications/networking/remote/citrix-workspace/generic.nix index 2a9cfe788317..453ffec1cf82 100644 --- a/pkgs/applications/networking/remote/citrix-workspace/generic.nix +++ b/pkgs/applications/networking/remote/citrix-workspace/generic.nix @@ -46,7 +46,7 @@ libredirect, libseccomp, libsecret, - # libsoup_2_4, + libsoup_3, libvorbis, libxml2_13, libxslt, @@ -55,10 +55,8 @@ nspr, nss, opencv4, - openssl, pango, pcsclite, - perl, sane-backends, speex, symlinkJoin, @@ -66,6 +64,7 @@ tzdata, which, woff2, + webkitgtk_4_1, libxtst, libxscrnsaver, libxrender, @@ -105,27 +104,15 @@ let 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 ]; - paths = [ (lib.getLib openssl) ]; - postBuild = '' - ln -sf $out/lib/libcrypto.so $out/lib/libcrypto.so.1.0.0 - ln -sf $out/lib/libssl.so $out/lib/libssl.so.1.0.0 + ln -sf $out/lib/libfuse3.so.3.* $out/lib/libfuse3.so.3 ''; }; opencv4' = symlinkJoin { name = "opencv4-compat"; - nativeBuildInputs = [ makeWrapper ]; paths = [ opencv4 ]; postBuild = '' for so in ${opencv4}/lib/*.so; do - ln -s "$so" $out/lib/$(basename "$so").407 || true ln -s "$so" $out/lib/$(basename "$so").410 || true done ''; @@ -210,7 +197,7 @@ stdenv.mkDerivation rec { libpulseaudio libseccomp libsecret - # libsoup_2_4 + libsoup_3 libvorbis libxml2_13 libxslt @@ -218,7 +205,6 @@ stdenv.mkDerivation rec { nspr nss opencv4' - openssl' pango pcsclite sane-backends @@ -226,6 +212,7 @@ stdenv.mkDerivation rec { stdenv.cc.cc (lib.getLib systemd) woff2 + webkitgtk_4_1 libxscrnsaver libxaw libxmu @@ -275,8 +262,7 @@ stdenv.mkDerivation rec { lib.optional (isWfica program) "$ICAInstDir" ++ [ "$ICAInstDir/lib" - "$ICAInstDir/usr/lib/x86_64-linux-gnu" - "$ICAInstDir/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/injected-bundle" + "${lib.getLib webkitgtk_4_1}/lib/webkit2gtk-4.1/injected-bundle" # HdxRtcEngine loads libpulse.so.0 with dlopen, so autoPatchelf # cannot discover it from ELF dependencies. "${lib.getLib libpulseaudio}/lib" @@ -297,7 +283,7 @@ stdenv.mkDerivation rec { ''--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "${gstPluginPath}"'' ''--prefix LD_LIBRARY_PATH : "${ldLibraryPath program}"'' ''--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:/usr/lib/x86_64-linux-gnu=$ICAInstDir/usr/lib/x86_64-linux-gnu"'' + ''--set NIX_REDIRECTS "/usr/share/zoneinfo=${tzdata}/share/zoneinfo:/etc/zoneinfo=${tzdata}/share/zoneinfo:/etc/timezone=$ICAInstDir/timezone"'' ] ); @@ -328,6 +314,7 @@ stdenv.mkDerivation rec { "util/configmgr" "util/conncenter" "util/ctx_rehash" + "util/ctxwebhelper" ]; in '' @@ -349,11 +336,9 @@ stdenv.mkDerivation rec { source_date=$(date --utc --date=@$SOURCE_DATE_EPOCH "+%F %T") faketime -f "$source_date" ${stdenv.shell} linuxx64/hinst CDROM "$(pwd)" - mkdir -p "$ICAInstDir/usr" - tar -xzf ./linuxx64/linuxx64.cor/Webkit2gtk4.0/webkit2gtk-4.0.tar.gz \ - --strip-components=2 \ - -C "$ICAInstDir/usr" \ - webkit2gtk-4.0-package/usr/lib + # The GCC 11 package line links against libsoup 3 and WebKitGTK 4.1, but + # the tarball still contains the legacy WebKitGTK 4.0 bundle. + rm -rf "$ICAInstDir/Webkit2gtk4.0" if [ -f "$ICAInstDir/util/setlog" ]; then chmod +x "$ICAInstDir/util/setlog" @@ -365,7 +350,6 @@ stdenv.mkDerivation rec { "PrimaryAuthManager" "ServiceRecord" "AuthManagerDaemon" - "util/ctxwebhelper" ]} ln -sf $ICAInstDir/util/storebrowse $out/bin/storebrowse @@ -390,38 +374,42 @@ stdenv.mkDerivation rec { echo "We arbitrarily set the timezone to UTC. No known consequences at this point." echo UTC > "$ICAInstDir/timezone" - echo "Copy .desktop files." - cp $out/opt/citrix-icaclient/desktop/* $out/share/applications/ - for desktop in $out/share/applications/*.desktop; do + echo "Patch .desktop files." + for desktop in "$ICAInstDir"/desktop/*.desktop; do sed -i \ -e "s#/opt/Citrix/ICAClient#$ICAInstDir#g" \ - -e "s#$ICAInstDir/util/ctxwebhelper#ctxwebhelper#g" \ "$desktop" case "$(basename "$desktop")" in citrixapp.desktop) sed -i \ - -e 's#^TryExec=.*#TryExec=selfservice#' \ - -e 's#^Exec=.*#Exec=selfservice %u#' \ + -e "s#^TryExec=.*#TryExec=$out/bin/selfservice#" \ + -e "s#^Exec=.*#Exec=$out/bin/selfservice %u#" \ + "$desktop" + ;; + citrixweb.desktop | ctxaadsso.desktop | fido2_llt.desktop | receiver.desktop | receiver_fido2.desktop) + sed -i \ + -e "s#^TryExec=.*#TryExec=$out/bin/ctxwebhelper#" \ + -e "s#^Exec=.*#Exec=$out/bin/ctxwebhelper %u#" \ "$desktop" ;; selfservice.desktop) sed -i \ - -e 's#^TryExec=.*#TryExec=selfservice#' \ - -e 's#^Exec=.*#Exec=selfservice#' \ + -e "s#^TryExec=.*#TryExec=$out/bin/selfservice#" \ + -e "s#^Exec=.*#Exec=$out/bin/selfservice#" \ "$desktop" ;; wfica.desktop) sed -i \ - -e 's#^TryExec=.*#TryExec=adapter#' \ - -e 's#^Exec=.*#Exec=adapter %f#' \ + -e "s#^TryExec=.*#TryExec=$out/bin/adapter#" \ + -e "s#^Exec=.*#Exec=$out/bin/adapter %f#" \ "$desktop" ;; esac done - # We introduce a dependency on the source file so that it need not be redownloaded everytime - echo $src >> "$out/share/workspace_dependencies.pin" + echo "Copy .desktop files." + cp $out/opt/citrix-icaclient/desktop/* $out/share/applications/ runHook postInstall ''; @@ -429,13 +417,7 @@ stdenv.mkDerivation rec { # Make sure that `autoPatchelfHook` is executed before # running `ctx_rehash`. dontAutoPatchelf = true; - # 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 - - addAutoPatchelfSearchPath --no-recurse "$out/opt/citrix-icaclient/usr/lib/x86_64-linux-gnu" - addAutoPatchelfSearchPath "$out/opt/citrix-icaclient/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/injected-bundle" addAutoPatchelfSearchPath "$out/opt/citrix-icaclient/lib" autoPatchelf -- "$out" @@ -443,11 +425,6 @@ stdenv.mkDerivation rec { ''; meta = { - # citrix_workspace has a hard dependency on libsoup 2.4 (autoPatchelf - # fails if it is not present), which was removed for being insecure. - # - # Versions older than 25.08 also required webkitgtk_4_0, which was removed. - broken = true; license = lib.licenses.unfree; description = "Citrix Workspace"; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; diff --git a/pkgs/applications/networking/remote/citrix-workspace/sources.nix b/pkgs/applications/networking/remote/citrix-workspace/sources.nix index 506b810333ad..26451a47965b 100644 --- a/pkgs/applications/networking/remote/citrix-workspace/sources.nix +++ b/pkgs/applications/networking/remote/citrix-workspace/sources.nix @@ -1,4 +1,4 @@ -{ stdenv, lib }: +{ lib }: let mkVersionInfo = @@ -21,22 +21,13 @@ let # # The latest versions can be found at https://www.citrix.com/downloads/workspace-app/linux/ supportedVersions = lib.mapAttrs mkVersionInfo { - "26.01.0" = { + "26.04.0" = { major = "26"; - minor = "01"; + minor = "04"; patch = "0"; - hash = "0avrf9jpqhijvp6w4jgs7xgp4gg1q2mdzak9h9klkqrbsgrvjr3p"; - suffix = "150"; - homepage = "https://www.citrix.com/downloads/workspace-app/linux/workspace-app-for-linux-latest.html"; - }; - - "25.08.10" = { - major = "25"; - minor = "08"; - patch = "10"; - hash = "06hdwi5rd8z43nlpvym6yrw3snfz8jh6ic3g4pihn9ji22bw5pbd"; - suffix = "111"; - homepage = "https://www.citrix.com/downloads/workspace-app/linux/workspace-app-for-linux-latest.html"; + hash = "1hp6ax0ix3id94njd43a35af3ydlb6sqwvbbabd5xp8d511m695f"; + suffix = "73"; + homepage = "https://www.citrix.com/downloads/workspace-app/betas-and-tech-previews/workspace-app-tp-gcc11-for-linux.html"; }; }; in diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 22aa3c6f2ebb..54a8cad25c67 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -501,6 +501,8 @@ mapAliases { 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 + citrix_workspace_25_08_10 = throw "'citrix_workspace_25_08_10' has been removed because it depended on libsoup 2.4. Use 'citrix_workspace_26_04_0' instead."; # Added 2026-06-08 + citrix_workspace_26_01_0 = throw "'citrix_workspace_26_01_0' has been removed because it depended on libsoup 2.4. Use 'citrix_workspace_26_04_0' instead."; # Added 2026-06-08 citron-emu = throw "citron-emu was discontinued in february 2026"; # added 2026-02-19 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 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7ef8e80ffb41..4c9fedd6b9dd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1758,10 +1758,9 @@ with pkgs; ceph-dev = ceph; inherit (callPackage ../applications/networking/remote/citrix-workspace { }) - citrix_workspace_26_01_0 - citrix_workspace_25_08_10 + citrix_workspace_26_04_0 ; - citrix_workspace = citrix_workspace_26_01_0; + citrix_workspace = citrix_workspace_26_04_0; colord-gtk4 = colord-gtk.override { withGtk4 = true; };