diff --git a/pkgs/applications/networking/instant-messengers/webex/default.nix b/pkgs/applications/networking/instant-messengers/webex/default.nix new file mode 100644 index 000000000000..293f6747d3f4 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/webex/default.nix @@ -0,0 +1,175 @@ +{ lib +, writeScript +, stdenv +, fetchurl +, alsaLib +, at-spi2-atk +, at-spi2-core +, atk +, cairo +, cups +, dbus +, expat +, fontconfig +, freetype +, gdk-pixbuf +, glib +, gtk3 +, harfbuzz +, libdrm +, libgcrypt +, libglvnd +, libkrb5 +, libpulseaudio +, libsecret +, udev +, libxcb +, libxkbcommon +, lshw +, mesa +, nspr +, nss +, pango +, zlib +, libX11 +, libXcomposite +, libXcursor +, libXdamage +, libXext +, libXfixes +, libXi +, libXrandr +, libXrender +, libXtst +, libxshmfence +, xcbutil +, xcbutilimage +, xcbutilkeysyms +, xcbutilrenderutil +, xcbutilwm +, p7zip +, wayland +, libXScrnSaver +}: + +stdenv.mkDerivation rec { + pname = "webex"; + version = "42.8.0.22907"; + + src = fetchurl { + url = "https://binaries.webex.com/WebexDesktop-Ubuntu-Blue/20220712081040/Webex_ubuntu.7z"; + sha256 = "b83950cdcf978a3beda93de27b25b70554fc82fcf072a5a7ea858d2ce0d176ac"; + }; + + buildInputs = [ + alsaLib + at-spi2-atk + at-spi2-core + atk + cairo + cups + dbus + expat + fontconfig + freetype + glib + gdk-pixbuf + gtk3 + harfbuzz + lshw + mesa + nspr + nss + pango + zlib + libdrm + libgcrypt + libglvnd + libkrb5 + libpulseaudio + libsecret + udev + libxcb + libxkbcommon + libX11 + libXcomposite + libXcursor + libXdamage + libXext + libXfixes + libXi + libXrandr + libXrender + libXtst + libxshmfence + xcbutil + xcbutilimage + libXScrnSaver + xcbutilkeysyms + xcbutilrenderutil + xcbutilwm + p7zip + wayland + ]; + + libPath = "$out/opt/Webex/lib:$out/opt/Webex/bin:${lib.makeLibraryPath buildInputs}"; + + unpackPhase = '' + 7z x $src + mv Webex_ubuntu/opt . + ''; + + postPatch = '' + substituteInPlace opt/Webex/bin/webex.desktop --replace /opt $out/opt + ''; + + dontPatchELF = true; + + buildPhase = '' + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${libPath}" \ + opt/Webex/bin/CiscoCollabHost \ + opt/Webex/bin/CiscoCollabHostCef \ + opt/Webex/bin/CiscoCollabHostCefWM \ + opt/Webex/bin/WebexFileSelector \ + opt/Webex/bin/pxgsettings + for each in $(find opt/Webex -type f | grep \\.so); do + patchelf --set-rpath "${libPath}" "$each" + done + ''; + + installPhase = '' + mkdir -p "$out/bin" "$out/share/applications" + cp -r opt "$out" + + ln -s "$out/opt/Webex/bin/CiscoCollabHost" "$out/bin/webex" + chmod +x $out/bin/webex + + mv "$out/opt/Webex/bin/webex.desktop" "$out/share/applications/webex.desktop" + ''; + + passthru.updateScript = writeScript "webex-update-script" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p curl jq common-updater-scripts + set -eou pipefail; + + channel=blue + manifest=$(curl -s "https://client-upgrade-a.wbx2.com/client-upgrade/api/v1/webexteamsdesktop/upgrade/@me?channel=$channel&model=ubuntu" | jq '.manifest') + + url=$(jq -r '.packageLocation' <<< "$manifest") + version=$(jq -r '.version' <<< "$manifest") + hash=$(jq -r '.checksum' <<< "$manifest") + + update-source-version ${pname} "$version" "$hash" "$url" --file=./pkgs/applications/networking/instant-messengers/webex/default.nix + ''; + + meta = with lib; { + description = "The all-in-one app to call, meet, message, and get work done"; + homepage = "https://webex.com/"; + downloadPage = "https://www.webex.com/downloads.html"; + license = licenses.unfree; + maintainers = with lib.maintainers; [ uvnikita ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 847a1ad4dc0e..951521c6e986 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -31030,6 +31030,8 @@ with pkgs; webcamoid = libsForQt5.callPackage ../applications/video/webcamoid { }; + webex = callPackage ../applications/networking/instant-messengers/webex {}; + webmacs = libsForQt5.callPackage ../applications/networking/browsers/webmacs {}; webssh = with python3Packages; toPythonApplication webssh;