chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / zo / zoom-us / package.nix
blob14d853e30b7ce9198a05fb043a08dbff0d21d636
1 { stdenv
2 , lib
3 , fetchurl
4 , pipewire
5 , makeWrapper
6 , xar
7 , cpio
8   # Dynamic libraries
9 , alsa-lib
10 , atk
11 , at-spi2-atk
12 , at-spi2-core
13 , cairo
14 , cups
15 , dbus
16 , expat
17 , libdrm
18 , libGL
19 , fontconfig
20 , freetype
21 , gtk3
22 , gdk-pixbuf
23 , glib
24 , mesa
25 , nspr
26 , nss
27 , pango
28 , wayland
29 , xorg
30 , libxkbcommon
31 , udev
32 , zlib
33 , libkrb5
34   # Runtime
35 , coreutils
36 , pciutils
37 , procps
38 , util-linux
39 , pulseaudioSupport ? true
40 , libpulseaudio
41 , pulseaudio
44 let
45   inherit (stdenv.hostPlatform) system;
46   throwSystem = throw "Unsupported system: ${system}";
48   # Zoom versions are released at different times for each platform
49   # and often with different versions.  We write them on three lines
50   # like this (rather than using {}) so that the updater script can
51   # find where to edit them.
52   versions.aarch64-darwin = "6.2.3.40682";
53   versions.x86_64-darwin = "6.2.3.40682";
54   versions.x86_64-linux = "6.2.3.2056";
56   srcs = {
57     aarch64-darwin = fetchurl {
58       url = "https://zoom.us/client/${versions.aarch64-darwin}/zoomusInstallerFull.pkg?archType=arm64";
59       name = "zoomusInstallerFull.pkg";
60       hash = "sha256-kpncl6ZVs/O2TXtBhZ/2049jJuUdYlIaxtLX3wIfpVE=";
61     };
62     x86_64-darwin = fetchurl {
63       url = "https://zoom.us/client/${versions.x86_64-darwin}/zoomusInstallerFull.pkg";
64       hash = "sha256-gB8pM3EYmA5jF2s/XobV5hk71q16x76nG6M20rWatzE=";
65     };
66     x86_64-linux = fetchurl {
67       url = "https://zoom.us/client/${versions.x86_64-linux}/zoom_x86_64.pkg.tar.xz";
68       hash = "sha256-dEQdyYEGXMwABulPHK3fLgHo0ZMF5BT6RnqzD23Al38=";
69     };
70   };
72   libs = lib.makeLibraryPath ([
73     # $ LD_LIBRARY_PATH=$NIX_LD_LIBRARY_PATH:$PWD ldd zoom | grep 'not found'
74     alsa-lib
75     atk
76     at-spi2-atk
77     at-spi2-core
78     cairo
79     cups
80     dbus
81     expat
82     libdrm
83     libGL
84     pipewire
85     fontconfig
86     freetype
87     gtk3
88     gdk-pixbuf
89     glib
90     mesa
91     nspr
92     nss
93     pango
94     stdenv.cc.cc
95     wayland
96     xorg.libX11
97     xorg.libxcb
98     xorg.libXcomposite
99     xorg.libXdamage
100     xorg.libXext
101     libxkbcommon
102     xorg.libXrandr
103     xorg.libXrender
104     xorg.libxshmfence
105     xorg.xcbutilimage
106     xorg.xcbutilkeysyms
107     xorg.xcbutilrenderutil
108     xorg.xcbutilwm
109     xorg.libXfixes
110     xorg.libXtst
111     udev
112     zlib
113     libkrb5
114   ] ++ lib.optional (pulseaudioSupport) libpulseaudio);
116   binPath = lib.makeBinPath ([ coreutils glib.dev pciutils procps util-linux ] ++ lib.optional pulseaudioSupport pulseaudio);
118 stdenv.mkDerivation rec {
119   pname = "zoom";
120   version = versions.${system} or throwSystem;
122   src = srcs.${system} or throwSystem;
124   dontUnpack = stdenv.hostPlatform.isLinux;
125   unpackPhase = lib.optionalString stdenv.hostPlatform.isDarwin ''
126     xar -xf $src
127     zcat < zoomus.pkg/Payload | cpio -i
128   '';
130   nativeBuildInputs = [
131     makeWrapper
132   ]
133   ++ lib.optionals stdenv.hostPlatform.isDarwin [
134     xar
135     cpio
136   ];
138   installPhase = ''
139     runHook preInstall
140     ${rec {
141       aarch64-darwin = ''
142         mkdir -p $out/Applications
143         cp -R zoom.us.app $out/Applications/
144       '';
145       # darwin steps same on both architectures
146       x86_64-darwin = aarch64-darwin;
147       x86_64-linux = ''
148         mkdir $out
149         tar -C $out -xf $src
150         mv $out/usr/* $out/
151       '';
152     }.${system} or throwSystem}
153     runHook postInstall
154   '';
156   postFixup =  lib.optionalString stdenv.hostPlatform.isDarwin ''
157     makeWrapper $out/Applications/zoom.us.app/Contents/MacOS/zoom.us $out/bin/zoom
158   '' + lib.optionalString stdenv.hostPlatform.isLinux ''
159     # Desktop File
160     substituteInPlace $out/share/applications/Zoom.desktop \
161         --replace-fail "Exec=/usr/bin/zoom" "Exec=$out/bin/zoom"
163     for i in aomhost zopen zoom ZoomLauncher ZoomWebviewHost; do
164       patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/opt/zoom/$i
165     done
167     # ZoomLauncher sets LD_LIBRARY_PATH before execing zoom
168     # IPC breaks if the executable name does not end in 'zoom'
169     mv $out/opt/zoom/zoom $out/opt/zoom/.zoom
170     makeWrapper $out/opt/zoom/.zoom $out/opt/zoom/zoom \
171       --prefix LD_LIBRARY_PATH ":" ${libs}
173     rm $out/bin/zoom
174     # Zoom expects "zopen" executable (needed for web login) to be present in CWD. Or does it expect
175     # everybody runs Zoom only after cd to Zoom package directory? Anyway, :facepalm:
176     # Clear Qt paths to prevent tripping over "foreign" Qt resources.
177     # Clear Qt screen scaling settings to prevent over-scaling.
178     makeWrapper $out/opt/zoom/ZoomLauncher $out/bin/zoom \
179       --chdir "$out/opt/zoom" \
180       --unset QML2_IMPORT_PATH \
181       --unset QT_PLUGIN_PATH \
182       --unset QT_SCREEN_SCALE_FACTORS \
183       --prefix PATH : ${binPath} \
184       --prefix LD_LIBRARY_PATH ":" ${libs}
186     wrapProgram $out/opt/zoom/ZoomWebviewHost \
187       --unset QML2_IMPORT_PATH \
188       --unset QT_PLUGIN_PATH \
189       --unset QT_SCREEN_SCALE_FACTORS \
190       --prefix LD_LIBRARY_PATH ":" ${libs}
192     # Backwards compatibility: we used to call it zoom-us
193     ln -s $out/bin/{zoom,zoom-us}
194   '';
196   # already done
197   dontPatchELF = true;
199   passthru.updateScript = ./update.sh;
201   meta = with lib; {
202     homepage = "https://zoom.us/";
203     changelog = "https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0061222";
204     description = "zoom.us video conferencing application";
205     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
206     license = licenses.unfree;
207     platforms = builtins.attrNames srcs;
208     maintainers = with maintainers; [ danbst tadfisher ];
209     mainProgram = "zoom";
210   };