Compare commits

...

32 commits

Author SHA1 Message Date
Raven Hallsby
e6e1d0df6f Merge branch 'zoom-update' into 'master'
Draft: nongnu: zoom: Update to 6.3.6.6315.

See merge request nonguix/nonguix!616
2025-09-30 19:23:20 -05:00
John Kehayias
89f0dca2eb
nongnu: firefox-esr: Use ffmpeg-6.
This fixes video playback post mesa-updates merge in Guix.  See upstream issue
<https://bugzilla.mozilla.org/show_bug.cgi?id=1962139>; fix is like for
librewolf in Guix, see <https://codeberg.org/guix/guix/issues/3038>.

* nongnu/packages/mozilla.scm (firefox-esr)[inputs]: Change ffmpeg to
ffmpeg-6.
2025-09-30 11:12:52 -04:00
Karl Hallsby
e7d029cb3e Note that Zoom hard-depends on $DISPLAY 2025-04-03 00:45:45 -05:00
Karl Hallsby
f2ec40c38e Add missing Qt dependencies 2025-04-03 00:45:36 -05:00
Karl Hallsby
908aef7fd4 Use the cef/ libraries provided by zoom and wrap them too 2025-04-03 00:45:04 -05:00
Karl Hallsby
8d9866a46f Set Zoom's library path to the correct path 2025-04-03 00:44:08 -05:00
Karl Hallsby
bb0b5d7699 Add wayland & wayland-protocols 2025-02-25 00:07:23 -06:00
Karl Hallsby
f1c1b72720 Document why mesa & libglvnd needed 2025-02-24 23:16:18 -06:00
Karl Hallsby
ca159dfdf9 gcc-toolchain to get C++ libraries 2025-02-24 23:16:18 -06:00
Karl Hallsby
5799d738e2 Do not set QT_PLUGIN_PATH - REVERT THE OG COMMIT 2025-02-24 23:16:18 -06:00
Karl Hallsby
c6b5718654 Do same dynamic linker shenanigans as nixpkgs does 2025-02-24 23:16:17 -06:00
Karl Hallsby
94892dd243 Do not patchelf the main zoom binary 2025-02-18 19:51:03 -06:00
Karl Hallsby
acb40e4eca Wrap main zoom binary 2025-02-18 19:51:01 -06:00
Karl Hallsby
eca65ef8ca Reorder to match later entries 2025-02-18 17:59:42 -06:00
Karl Hallsby
e92404586e Add util-linux to zoom bins for screensharing? 2025-02-18 17:12:00 -06:00
Karl Hallsby
9c6bc43db7 Add pipewire to zoom bins for screensharing? 2025-02-18 17:12:00 -06:00
Karl Hallsby
306f7cec91 Add mesa-utils for screensharing 2025-02-18 17:12:00 -06:00
Karl Hallsby
f0d517401d pulseaudio bin 2025-02-18 17:12:00 -06:00
Karl Hallsby
553bb159d4 Wrap PATH for zoom bin to find pulseaudio binaries
Zoom checks for pacmd.
2025-02-18 17:12:00 -06:00
Karl Hallsby
281c99a21a Add gdk-pixbuf 2025-02-18 17:12:00 -06:00
Karl Hallsby
f623b1aa3b Add libGL/EGL/GLX 2025-02-18 17:11:52 -06:00
Karl Hallsby
e0d42beae4 Add libxcursor
Zoom requests libXCursor.so somewhere.
2025-02-18 17:11:52 -06:00
Karl Hallsby
3f69ee75c4 Add xcb-util-cursor 2025-02-18 16:57:08 -06:00
Karl Hallsby
20d6b08ce4 Add freetype to main zoom binary's LD_LIBRARY_PATH list 2025-02-18 16:57:08 -06:00
Karl Hallsby
8af27adecb Also patchelf the XCB libraries - This may not be necessary 2025-02-18 16:57:08 -06:00
Karl Hallsby
922773dfe6 Add fontconfig-minimal to main zoom binary's LD_LIBRARY_PATH list 2025-02-18 16:57:08 -06:00
Karl Hallsby
75427fca4e Make zoom description respect 80 char line limit 2025-02-18 16:57:08 -06:00
Karl Hallsby
57ac6b2c23 Make pipewire an input and use in wrapping 2025-02-18 16:57:08 -06:00
Karl Hallsby
5d996d58b5 Include Zoom-provided libraries on LD_LIBRARY_PATH 2025-02-18 16:57:08 -06:00
Karl Hallsby
ba948aa47a Set QT_PLUGIN_PATH to zoom-provided QT plugins 2025-02-18 16:57:08 -06:00
Karl Hallsby
4eba593ddb 6.2.11.5069 first 2025-02-18 16:57:08 -06:00
Karl Hallsby
cd017a8bd3 nongnu: zoom: Update to 6.3.6.6315.
* nongnu/packages/messaging.scm (zoom): Update to 6.3.6.6315.
2025-02-18 11:03:37 -06:00
2 changed files with 171 additions and 32 deletions

View file

@ -9,9 +9,11 @@
(define-module (nongnu packages messaging) (define-module (nongnu packages messaging)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages bash) #:use-module (gnu packages bash)
#:use-module (gnu packages commencement)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages cups) #:use-module (gnu packages cups)
#:use-module (gnu packages fontutils) #:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gcc) #:use-module (gnu packages gcc)
#:use-module (gnu packages gl) #:use-module (gnu packages gl)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
@ -21,6 +23,7 @@
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages nss) #:use-module (gnu packages nss)
#:use-module (gnu packages pulseaudio) #:use-module (gnu packages pulseaudio)
#:use-module (gnu packages qt)
#:use-module (gnu packages xdisorg) #:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
@ -132,17 +135,19 @@ or iOS.")
'((release-monitoring-url . "https://github.com/signalapp/Signal-Desktop/releases"))) '((release-monitoring-url . "https://github.com/signalapp/Signal-Desktop/releases")))
(license license:agpl3))) (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 (define-public zoom
(package (package
(name "zoom") (name "zoom")
(version "5.17.5.2543") (version "6.2.11.5069")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://cdn.zoom.us/prod/" version "/zoom_x86_64.tar.xz")) (uri (string-append "https://cdn.zoom.us/prod/" version "/zoom_x86_64.tar.xz"))
(file-name (string-append name "-" version "-x86_64.tar.xz")) (file-name (string-append name "-" version "-x86_64.tar.xz"))
(sha256 (sha256
(base32 "06m53d3jrpiq1z5wd7m61lb3w8m8g72iaqx5sixnzn290gyyzgim")))) (base32 "09l9jfmld1dlinkgdgf8ra549rw1hwis3b5cly49a2gvz1sfr8lc"))))
(supported-systems '("x86_64-linux")) (supported-systems '("x86_64-linux"))
(build-system binary-build-system) (build-system binary-build-system)
(arguments (arguments
@ -151,19 +156,22 @@ or iOS.")
;; Note: it seems like some (all?) of these only do anything in ;; Note: it seems like some (all?) of these only do anything in
;; LD_LIBRARY_PATH, or at least needed there as well. ;; LD_LIBRARY_PATH, or at least needed there as well.
#~(let ((libs '("alsa-lib" #~(let ((libs '("alsa-lib"
"atk"
"at-spi2-atk" "at-spi2-atk"
"at-spi2-core" "at-spi2-core"
"atk"
"cairo" "cairo"
"cups" "cups"
"dbus" "dbus"
"eudev" "eudev"
"expat" "expat"
"fontconfig-minimal" "fontconfig-minimal"
"gcc" ;; "gcc"
"gcc-toolchain"
"gdk-pixbuf"
"glib" "glib"
"gtk+" "gtk+"
"libdrm" "libdrm"
;; "libglvnd"
"libx11" "libx11"
"libxcb" "libxcb"
"libxcomposite" "libxcomposite"
@ -180,18 +188,35 @@ or iOS.")
"mesa" "mesa"
"nspr" "nspr"
"pango" "pango"
"pipewire"
"pulseaudio" "pulseaudio"
"qtlottie"
"qtremoteobjects"
"qt3d"
"qtbase"
"qtgamepad"
"qtdeclarative"
"qtxmlpatterns"
"qtmultimedia"
"xcb-util"
"xcb-util-cursor"
"xcb-util-image" "xcb-util-image"
"xcb-util-keysyms" "xcb-util-keysyms"
"xcb-util-renderutil"
"xcb-util-wm"
"wayland"
"wayland-protocols"
"zlib"))) "zlib")))
`(("lib/zoom/ZoomLauncher" `(("lib/zoom/ZoomLauncher" ,libs)
,libs) ;; ("lib/zoom/zoom" ,libs)
("lib/zoom/zoom" ("lib/zoom/zopen" ,libs)
,libs) ("lib/zoom/aomhost" ,libs)
("lib/zoom/zopen" ("lib/zoom/cef/libEGL.so" ,libs)
,libs) ("lib/zoom/cef/libffmpeg.so" ,libs)
("lib/zoom/aomhost" ("lib/zoom/cef/libGLESv2.so" ,libs)
,libs))) ("lib/zoom/cef/libsqlite3.so.0" ,libs)
("lib/zoom/cef/libvk_swiftshader.so" ,libs)
("lib/zoom/cef/libvulkan.so.1" ,libs)))
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(replace 'unpack (replace 'unpack
@ -200,6 +225,45 @@ or iOS.")
;; Use the more standard lib directory for everything. ;; Use the more standard lib directory for everything.
(mkdir-p "lib") (mkdir-p "lib")
(rename-file "zoom/" "lib/zoom"))) (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 (add-after 'install 'wrap-where-patchelf-does-not-work
(lambda _ (lambda _
(wrap-program (string-append #$output "/lib/zoom/zopen") (wrap-program (string-append #$output "/lib/zoom/zopen")
@ -208,9 +272,13 @@ or iOS.")
(file-append (this-package-input pkg) "/lib")) (file-append (this-package-input pkg) "/lib"))
'("fontconfig-minimal" '("fontconfig-minimal"
"freetype" "freetype"
"gcc" ;; "gcc"
"gcc-toolchain"
"gdk-pixbuf"
"glib" "glib"
;; "libglvnd"
"libxcomposite" "libxcomposite"
"libxcursor"
"libxdamage" "libxdamage"
"libxkbcommon" "libxkbcommon"
"libxkbfile" "libxkbfile"
@ -227,8 +295,19 @@ or iOS.")
(string-append #$(this-package-input "fontconfig-minimal") "/etc/fonts") (string-append #$(this-package-input "fontconfig-minimal") "/etc/fonts")
#$output) #$output)
":"))) ":")))
`("PATH" prefix
,(list #$@(map (lambda (pkg)
(file-append (this-package-input pkg) "/bin"))
'("mesa-utils"
"pulseaudio"
"pipewire"
"util-linux"))))
`("LD_LIBRARY_PATH" prefix `("LD_LIBRARY_PATH" prefix
,(list (string-append #$(this-package-input "nss") "/lib/nss") ,(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) #$@(map (lambda (pkg)
(file-append (this-package-input pkg) "/lib")) (file-append (this-package-input pkg) "/lib"))
;; TODO: Reuse this long list as it is ;; TODO: Reuse this long list as it is
@ -244,26 +323,50 @@ or iOS.")
"dbus" "dbus"
"eudev" "eudev"
"expat" "expat"
"gcc" "fontconfig-minimal"
"freetype"
;; "gcc"
"gcc-toolchain"
"gdk-pixbuf"
"glib" "glib"
"mesa" "gtk+"
"mit-krb5" "libdrm"
"nspr" ;; "libglvnd"
"libx11"
"libxcb" "libxcb"
"libxcomposite" "libxcomposite"
"libxcursor"
"libxdamage" "libxdamage"
"libxext" "libxext"
"libxfixes"
"libxi"
"libxkbcommon" "libxkbcommon"
"libxkbfile" "libxkbfile"
"libxrandr" "libxrandr"
"libxshmfence" "libxshmfence"
"libxtst"
"mesa"
"mit-krb5"
"nspr"
"pango" "pango"
"pipewire"
"pulseaudio" "pulseaudio"
"qtlottie"
"qtremoteobjects"
"qt3d"
"qtbase"
"qtgamepad"
"qtdeclarative"
"qtxmlpatterns"
"qtmultimedia"
"xcb-util" "xcb-util"
"xcb-util-cursor"
"xcb-util-image" "xcb-util-image"
"xcb-util-keysyms" "xcb-util-keysyms"
"xcb-util-wm"
"xcb-util-renderutil" "xcb-util-renderutil"
"xcb-util-wm"
"wayland"
"wayland-protocols"
"zlib"))))) "zlib")))))
(wrap-program (string-append #$output "/lib/zoom/aomhost") (wrap-program (string-append #$output "/lib/zoom/aomhost")
`("FONTCONFIG_PATH" ":" prefix `("FONTCONFIG_PATH" ":" prefix
@ -285,13 +388,17 @@ or iOS.")
"dbus" "dbus"
"eudev" "eudev"
"expat" "expat"
"gcc" ;; "gcc"
"gcc-toolchain"
"gdk-pixbuf"
"glib" "glib"
"mesa" "mesa"
"mit-krb5" "mit-krb5"
"nspr" "nspr"
;; "libglvnd"
"libxcb" "libxcb"
"libxcomposite" "libxcomposite"
"libxcursor"
"libxdamage" "libxdamage"
"libxext" "libxext"
"libxkbcommon" "libxkbcommon"
@ -299,24 +406,21 @@ or iOS.")
"libxrandr" "libxrandr"
"libxshmfence" "libxshmfence"
"pango" "pango"
"pipewire"
"pulseaudio" "pulseaudio"
"xcb-util" "xcb-util"
"xcb-util-cursor"
"xcb-util-image" "xcb-util-image"
"xcb-util-keysyms" "xcb-util-keysyms"
"xcb-util-wm" "xcb-util-wm"
"xcb-util-renderutil" "xcb-util-renderutil"
"wayland"
"wayland-protocols"
"zlib"))))))) "zlib")))))))
(add-after 'wrap-where-patchelf-does-not-work 'rename-binary (add-after 'wrap-where-patchelf-does-not-work 'cleanup-linker-shenanigans
;; 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.
(lambda _ (lambda _
(rename-file (string-append #$output "/lib/zoom/.zoom-real") (delete-file (string-append #$output "/lib/zoom/.zoom-real"))))
(string-append #$output "/lib/zoom/.zoom")) (add-after 'wrap-where-patchelf-does-not-work 'symlink-binaries
(substitute* (string-append #$output "/lib/zoom/zoom")
(("zoom-real")
"zoom"))))
(add-after 'rename-binary 'symlink-binaries
(lambda _ (lambda _
(delete-file (string-append #$output "/environment-variables")) (delete-file (string-append #$output "/environment-variables"))
(mkdir-p (string-append #$output "/bin")) (mkdir-p (string-append #$output "/bin"))
@ -363,38 +467,73 @@ or iOS.")
expat expat
fontconfig fontconfig
freetype 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 "lib")
gcc-toolchain
glib glib
gtk+ gtk+
gdk-pixbuf
libdrm libdrm
librsvg librsvg
;; Need mesa for libgbm.so and libglvnd for libEGL, libGL, and libGLX
;; libglvnd
libx11 libx11
libxcb libxcb
libxcomposite libxcomposite
libxcursor
libxdamage libxdamage
libxext libxext
libxfixes libxfixes
libxi
libxkbcommon libxkbcommon
libxkbfile libxkbfile
libxrandr libxrandr
libxrender libxrender
libxshmfence libxshmfence
libxtst
mesa mesa
;; Needed for screensharing.
mesa-utils
mit-krb5 mit-krb5
nspr nspr
nss nss
pango pango
pipewire
pulseaudio 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
xcb-util-cursor
xcb-util-image xcb-util-image
xcb-util-keysyms xcb-util-keysyms
xcb-util-renderutil xcb-util-renderutil
xcb-util-wm xcb-util-wm
wayland
wayland-protocols
zlib)) zlib))
(home-page "https://zoom.us/") (home-page "https://zoom.us/")
(synopsis "Video conference client") (synopsis "Video conference client")
(description "The Zoom video conferencing and messaging client. Zoom must be run via an (description "The Zoom video conferencing and messaging client. Zoom must
app launcher to use its .desktop file, or with @code{ZoomLauncher}.") be run via an app launcher to use its .desktop file, or with
@code{ZoomLauncher}.")
(license (license:nonfree "https://explore.zoom.us/en/terms/")))) (license (license:nonfree "https://explore.zoom.us/en/terms/"))))
(define-public zulip-desktop (define-public zulip-desktop

View file

@ -457,7 +457,7 @@
cups cups
dbus-glib dbus-glib
freetype freetype
ffmpeg ffmpeg-6
gdk-pixbuf gdk-pixbuf
glib glib
gtk+ gtk+