diff --git a/nongnu/packages/game-client.scm b/nongnu/packages/game-client.scm index f33d8036..d520821c 100644 --- a/nongnu/packages/game-client.scm +++ b/nongnu/packages/game-client.scm @@ -111,7 +111,7 @@ implementation with gogdl and Amazon Games using Nile.") (define steam-client (package (name "steam-client") - (version "1.0.0.83") + (version "1.0.0.84") (source (origin (method url-fetch) @@ -119,7 +119,7 @@ implementation with gogdl and Amazon Games using Nile.") version ".tar.gz")) (sha256 (base32 - "10lgmjsada0n2a4h1vgrnwcjcka7vp4igy82f1n99zbyrjq845kr")) + "0i3v0zz36x7v81qslvfbiby57hk96hn15w4xxal1lgvrb0npdyii")) (file-name (string-append name "-" version ".tar.gz")))) (build-system gnu-build-system) (arguments diff --git a/nongnu/packages/messaging.scm b/nongnu/packages/messaging.scm index 54acf433..106d48fd 100644 --- a/nongnu/packages/messaging.scm +++ b/nongnu/packages/messaging.scm @@ -9,9 +9,11 @@ (define-module (nongnu packages messaging) #:use-module (gnu packages base) #:use-module (gnu packages bash) + #:use-module (gnu packages commencement) #:use-module (gnu packages compression) #:use-module (gnu packages cups) #:use-module (gnu packages fontutils) + #:use-module (gnu packages freedesktop) #:use-module (gnu packages gcc) #:use-module (gnu packages gl) #:use-module (gnu packages glib) @@ -21,6 +23,7 @@ #:use-module (gnu packages linux) #:use-module (gnu packages nss) #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages qt) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -132,17 +135,19 @@ or iOS.") '((release-monitoring-url . "https://github.com/signalapp/Signal-Desktop/releases"))) (license license:agpl3))) +;; NOTE: Zoom has a HARD DEPENDENCY on $DISPLAY to open something to display on, +;;at least on X11 desktops. (define-public zoom (package (name "zoom") - (version "5.17.5.2543") + (version "6.2.11.5069") (source (origin (method url-fetch) (uri (string-append "https://cdn.zoom.us/prod/" version "/zoom_x86_64.tar.xz")) (file-name (string-append name "-" version "-x86_64.tar.xz")) (sha256 - (base32 "06m53d3jrpiq1z5wd7m61lb3w8m8g72iaqx5sixnzn290gyyzgim")))) + (base32 "09l9jfmld1dlinkgdgf8ra549rw1hwis3b5cly49a2gvz1sfr8lc")))) (supported-systems '("x86_64-linux")) (build-system binary-build-system) (arguments @@ -151,19 +156,22 @@ or iOS.") ;; Note: it seems like some (all?) of these only do anything in ;; LD_LIBRARY_PATH, or at least needed there as well. #~(let ((libs '("alsa-lib" + "atk" "at-spi2-atk" "at-spi2-core" - "atk" "cairo" "cups" "dbus" "eudev" "expat" "fontconfig-minimal" - "gcc" + ;; "gcc" + "gcc-toolchain" + "gdk-pixbuf" "glib" "gtk+" "libdrm" + ;; "libglvnd" "libx11" "libxcb" "libxcomposite" @@ -180,18 +188,35 @@ or iOS.") "mesa" "nspr" "pango" + "pipewire" "pulseaudio" + "qtlottie" + "qtremoteobjects" + "qt3d" + "qtbase" + "qtgamepad" + "qtdeclarative" + "qtxmlpatterns" + "qtmultimedia" + "xcb-util" + "xcb-util-cursor" "xcb-util-image" "xcb-util-keysyms" + "xcb-util-renderutil" + "xcb-util-wm" + "wayland" + "wayland-protocols" "zlib"))) - `(("lib/zoom/ZoomLauncher" - ,libs) - ("lib/zoom/zoom" - ,libs) - ("lib/zoom/zopen" - ,libs) - ("lib/zoom/aomhost" - ,libs))) + `(("lib/zoom/ZoomLauncher" ,libs) + ;; ("lib/zoom/zoom" ,libs) + ("lib/zoom/zopen" ,libs) + ("lib/zoom/aomhost" ,libs) + ("lib/zoom/cef/libEGL.so" ,libs) + ("lib/zoom/cef/libffmpeg.so" ,libs) + ("lib/zoom/cef/libGLESv2.so" ,libs) + ("lib/zoom/cef/libsqlite3.so.0" ,libs) + ("lib/zoom/cef/libvk_swiftshader.so" ,libs) + ("lib/zoom/cef/libvulkan.so.1" ,libs))) #:phases #~(modify-phases %standard-phases (replace 'unpack @@ -200,6 +225,45 @@ or iOS.") ;; Use the more standard lib directory for everything. (mkdir-p "lib") (rename-file "zoom/" "lib/zoom"))) + (add-before 'patchelf 'zoom-dynamic-linker-shenanigans + (lambda* (#:key inputs #:allow-other-keys) + ;; (format #t "CWD=~a~%" (getcwd)) + (with-directory-excursion "lib/zoom" + (copy-file "zoom" ".zoom") + (delete-file "zoom") + (copy-file (car (find-files (assoc-ref inputs "libc") + "ld-linux.*\\.so")) + "ld.so") + ;; We're going to do something super fucked, but this made + ;; Zoom work on nixpkgs. + ;; We are going to do a fake wrap-program to set the exec + ;; line manually, then rely on the later calls to + ;; (guix build utils) version of wrap-program to add the + ;; environment variables we want. + ;; This is a workaround because Guix's wrap-program does + ;; not let us change the actual exec line in the generated + ;; wrapper script and we cannot use patchelf on the zoom + ;; binary from the tarball because that magically breaks + ;; things. + (let* ((prog ".zoom") + (prog-tmp (string-append prog "-tmp")) + (wrapped-file "zoom")) + (link prog wrapped-file) + + (call-with-output-file prog-tmp + (lambda (port) + (format port + "#!~a~%exec \"~a\" \"~a\" \"$@\"~%" + (which "bash") + (string-append #$output "/lib/zoom/ld.so") + (string-append #$output "/lib/zoom/" prog)))) + (chmod prog-tmp #o755) + (rename-file prog-tmp wrapped-file) + ;; Lastly, we need to leave a file that LOOKS like we + ;; have already wrapped lib/zoom/zoom, so the later call + ;; to wrap-program that adds library paths and other env + ;; vars does not overwrite our work. + (copy-file prog ".zoom-real"))))) (add-after 'install 'wrap-where-patchelf-does-not-work (lambda _ (wrap-program (string-append #$output "/lib/zoom/zopen") @@ -208,9 +272,13 @@ or iOS.") (file-append (this-package-input pkg) "/lib")) '("fontconfig-minimal" "freetype" - "gcc" + ;; "gcc" + "gcc-toolchain" + "gdk-pixbuf" "glib" + ;; "libglvnd" "libxcomposite" + "libxcursor" "libxdamage" "libxkbcommon" "libxkbfile" @@ -227,8 +295,19 @@ or iOS.") (string-append #$(this-package-input "fontconfig-minimal") "/etc/fonts") #$output) ":"))) + `("PATH" prefix + ,(list #$@(map (lambda (pkg) + (file-append (this-package-input pkg) "/bin")) + '("mesa-utils" + "pulseaudio" + "pipewire" + "util-linux")))) `("LD_LIBRARY_PATH" prefix ,(list (string-append #$(this-package-input "nss") "/lib/nss") + ;; ZoomLauncher sets Zoom's own library's paths + (string-append #$output "/lib/zoom") + (string-append #$output "/lib/zoom/cef") + (string-append #$output "/lib/zoom/Qt/lib") #$@(map (lambda (pkg) (file-append (this-package-input pkg) "/lib")) ;; TODO: Reuse this long list as it is @@ -244,26 +323,50 @@ or iOS.") "dbus" "eudev" "expat" - "gcc" + "fontconfig-minimal" + "freetype" + ;; "gcc" + "gcc-toolchain" + "gdk-pixbuf" "glib" - "mesa" - "mit-krb5" - "nspr" + "gtk+" + "libdrm" + ;; "libglvnd" + "libx11" "libxcb" "libxcomposite" + "libxcursor" "libxdamage" "libxext" + "libxfixes" + "libxi" "libxkbcommon" "libxkbfile" "libxrandr" "libxshmfence" + "libxtst" + "mesa" + "mit-krb5" + "nspr" "pango" + "pipewire" "pulseaudio" + "qtlottie" + "qtremoteobjects" + "qt3d" + "qtbase" + "qtgamepad" + "qtdeclarative" + "qtxmlpatterns" + "qtmultimedia" "xcb-util" + "xcb-util-cursor" "xcb-util-image" "xcb-util-keysyms" - "xcb-util-wm" "xcb-util-renderutil" + "xcb-util-wm" + "wayland" + "wayland-protocols" "zlib"))))) (wrap-program (string-append #$output "/lib/zoom/aomhost") `("FONTCONFIG_PATH" ":" prefix @@ -285,13 +388,17 @@ or iOS.") "dbus" "eudev" "expat" - "gcc" + ;; "gcc" + "gcc-toolchain" + "gdk-pixbuf" "glib" "mesa" "mit-krb5" "nspr" + ;; "libglvnd" "libxcb" "libxcomposite" + "libxcursor" "libxdamage" "libxext" "libxkbcommon" @@ -299,24 +406,21 @@ or iOS.") "libxrandr" "libxshmfence" "pango" + "pipewire" "pulseaudio" "xcb-util" + "xcb-util-cursor" "xcb-util-image" "xcb-util-keysyms" "xcb-util-wm" "xcb-util-renderutil" + "wayland" + "wayland-protocols" "zlib"))))))) - (add-after 'wrap-where-patchelf-does-not-work 'rename-binary - ;; IPC (for single sign-on and handling links) fails if the - ;; name does not end in "zoom," so rename the real binary. - ;; Thanks to the Nix packagers for figuring this out. + (add-after 'wrap-where-patchelf-does-not-work 'cleanup-linker-shenanigans (lambda _ - (rename-file (string-append #$output "/lib/zoom/.zoom-real") - (string-append #$output "/lib/zoom/.zoom")) - (substitute* (string-append #$output "/lib/zoom/zoom") - (("zoom-real") - "zoom")))) - (add-after 'rename-binary 'symlink-binaries + (delete-file (string-append #$output "/lib/zoom/.zoom-real")))) + (add-after 'wrap-where-patchelf-does-not-work 'symlink-binaries (lambda _ (delete-file (string-append #$output "/environment-variables")) (mkdir-p (string-append #$output "/bin")) @@ -363,38 +467,73 @@ or iOS.") expat fontconfig freetype + ;; The gcc and `(,gcc "lib") package BOTH have the "gcc" + ;; string key in the package inputs alist, and gcc's default + ;; out package is found first. + ;; We need to rename gcc's lib output so we can look it up + ;; correctly later with (this-package-input pkg). + ;; gcc is provided by the fact binary-build-system "inherits" + ;; from gnu-build-system. + ;; Using gcc-toolchain as a stopgap for now. + ;; FIXME: Make gcc-lib output work, so we do not need to add + ;; gcc-toolchain to Zoom's package closure. `(,gcc "lib") + gcc-toolchain glib gtk+ + gdk-pixbuf libdrm librsvg + ;; Need mesa for libgbm.so and libglvnd for libEGL, libGL, and libGLX + ;; libglvnd libx11 libxcb libxcomposite + libxcursor libxdamage libxext libxfixes + libxi libxkbcommon libxkbfile libxrandr libxrender libxshmfence + libxtst mesa + ;; Needed for screensharing. + mesa-utils mit-krb5 nspr nss pango + pipewire pulseaudio + qt3d-5 ; libQt53DACore.so.5, Animation, etc. + qtbase-5 ; libQt5Concurrent.so.5, and many others + qtgamepad ; libQt5Gamepad.so.5 + qtxmlpatterns ; libQt5XmlPatterns.so.5 + ;; Qt below need Qt 5-specific versions! Upstream Guix has + ;; already moved to Qt 6! + qtlottie ; libQt5Bodymovin.so.5 + qtremoteobjects ; libQt5RemoteObjects.so.5 + qtdeclarative ; libQt5QuickParticles.so.5 + qtmultimedia ; libQt5Multimedia.so.5 + util-linux xcb-util + xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm + wayland + wayland-protocols zlib)) (home-page "https://zoom.us/") (synopsis "Video conference client") - (description "The Zoom video conferencing and messaging client. Zoom must be run via an -app launcher to use its .desktop file, or with @code{ZoomLauncher}.") + (description "The Zoom video conferencing and messaging client. Zoom must +be run via an app launcher to use its .desktop file, or with +@code{ZoomLauncher}.") (license (license:nonfree "https://explore.zoom.us/en/terms/")))) (define-public zulip-desktop