aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix116
1 files changed, 116 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
new file mode 100644
index 00000000000..9c06a737598
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
@@ -0,0 +1,116 @@
+{ stdenv, fetchurl, mkDerivation, autoPatchelfHook
+, fetchFromGitHub
+# Dynamic libraries
+, dbus, glib, libGL, libX11, libXfixes, libuuid, libxcb, qtbase, qtdeclarative
+, qtimageformats, qtlocation, qtquickcontrols, qtquickcontrols2, qtscript, qtsvg
+, qttools, qtwayland, qtwebchannel, qtwebengine
+# Runtime
+, coreutils, libjpeg_turbo, pciutils, procps, utillinux, libv4l
+, pulseaudioSupport ? true, libpulseaudio ? null
+}:
+
+assert pulseaudioSupport -> libpulseaudio != null;
+
+let
+ inherit (stdenv.lib) concatStringsSep makeBinPath optional;
+
+ version = "3.0.303290.1010";
+ srcs = {
+ x86_64-linux = fetchurl {
+ url = "https://zoom.us/client/${version}/zoom_x86_64.tar.xz";
+ sha256 = "0rs18csmwb8r5n0fc1ka1zjz3f0rydm6fxiy1pa1c2k5bmya56f9";
+ };
+ };
+
+ # Used for icons, appdata, and desktop file.
+ desktopIntegration = fetchFromGitHub {
+ owner = "flathub";
+ repo = "us.zoom.Zoom";
+ rev = "0d294e1fdd2a4ef4e05d414bc680511f24d835d7";
+ sha256 = "0rm188844a10v8d6zgl2pnwsliwknawj09b02iabrvjw5w1lp6wl";
+ };
+
+in mkDerivation {
+ pname = "zoom-us";
+ inherit version;
+
+ src = srcs.${stdenv.hostPlatform.system};
+
+ nativeBuildInputs = [ autoPatchelfHook ];
+
+ buildInputs = [
+ dbus glib libGL libX11 libXfixes libuuid libxcb libjpeg_turbo
+ qtbase qtdeclarative qtlocation qtquickcontrols qtquickcontrols2 qtscript
+ qtwebchannel qtwebengine qtimageformats qtsvg qttools qtwayland
+ ];
+
+ runtimeDependencies = optional pulseaudioSupport libpulseaudio;
+
+ installPhase =
+ let
+ files = concatStringsSep " " [
+ "*.pcm"
+ "*.png"
+ "ZoomLauncher"
+ "config-dump.sh"
+ "timezones"
+ "translations"
+ "version.txt"
+ "zcacert.pem"
+ "zoom"
+ "zoom.sh"
+ "zoomlinux"
+ "zopen"
+ ];
+ in ''
+ runHook preInstall
+
+ mkdir -p $out/{bin,share/zoom-us}
+
+ cp -ar ${files} $out/share/zoom-us
+
+ # TODO Patch this somehow; tries to dlopen './libturbojpeg.so' from cwd
+ ln -s $(readlink -e "${libjpeg_turbo.out}/lib/libturbojpeg.so") $out/share/zoom-us/libturbojpeg.so
+
+ runHook postInstall
+ '';
+
+ postInstall = ''
+ mkdir -p $out/share/{applications,appdata,icons}
+
+ # Desktop File
+ cp ${desktopIntegration}/us.zoom.Zoom.desktop $out/share/applications
+ substituteInPlace $out/share/applications/us.zoom.Zoom.desktop \
+ --replace "Exec=zoom" "Exec=$out/bin/zoom-us"
+
+ # Appdata
+ cp ${desktopIntegration}/us.zoom.Zoom.appdata.xml $out/share/appdata
+
+ # Icons
+ for icon_size in 64 96 128 256; do
+ path=$icon_size'x'$icon_size
+ icon=${desktopIntegration}/us.zoom.Zoom.$icon_size.png
+
+ mkdir -p $out/share/icons/hicolor/$path/apps
+ cp $icon $out/share/icons/hicolor/$path/apps/us.zoom.Zoom.png
+ done
+
+ ln -s $out/share/zoom-us/zoom $out/bin/zoom-us
+ '';
+
+ qtWrapperArgs = [
+ ''--prefix PATH : ${makeBinPath [ coreutils glib.dev pciutils procps qttools.dev utillinux ]}''
+ ''--prefix LD_PRELOAD : ${libv4l}/lib/libv4l/v4l2convert.so''
+ ];
+
+ passthru.updateScript = ./update.sh;
+
+ meta = {
+ homepage = https://zoom.us/;
+ description = "zoom.us video conferencing application";
+ license = stdenv.lib.licenses.unfree;
+ platforms = builtins.attrNames srcs;
+ maintainers = with stdenv.lib.maintainers; [ danbst tadfisher ];
+ };
+
+}