about summary refs log tree commit diff
path: root/pkgs/applications/networking/instant-messengers
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/networking/instant-messengers')
-rw-r--r--pkgs/applications/networking/instant-messengers/alfaview/default.nix5
-rw-r--r--pkgs/applications/networking/instant-messengers/armcord/default.nix129
-rw-r--r--pkgs/applications/networking/instant-messengers/baresip/default.nix5
-rw-r--r--pkgs/applications/networking/instant-messengers/bluejeans/default.nix8
-rw-r--r--pkgs/applications/networking/instant-messengers/briar-desktop/default.nix58
-rw-r--r--pkgs/applications/networking/instant-messengers/chatty/default.nix5
-rw-r--r--pkgs/applications/networking/instant-messengers/cinny-desktop/default.nix46
-rw-r--r--pkgs/applications/networking/instant-messengers/cinny/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/deltachat-desktop/default.nix28
-rw-r--r--pkgs/applications/networking/instant-messengers/dino/default.nix13
-rw-r--r--pkgs/applications/networking/instant-messengers/discord/darwin.nix10
-rw-r--r--pkgs/applications/networking/instant-messengers/discord/default.nix110
-rw-r--r--pkgs/applications/networking/instant-messengers/discord/linux.nix16
-rw-r--r--pkgs/applications/networking/instant-messengers/discord/openasar.nix50
-rw-r--r--pkgs/applications/networking/instant-messengers/element/element-desktop-package.json140
-rw-r--r--pkgs/applications/networking/instant-messengers/element/element-desktop.nix49
-rw-r--r--pkgs/applications/networking/instant-messengers/element/element-web.nix62
-rw-r--r--pkgs/applications/networking/instant-messengers/element/keytar/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/element/pin.json9
-rw-r--r--pkgs/applications/networking/instant-messengers/element/seshat/default.nix6
-rwxr-xr-xpkgs/applications/networking/instant-messengers/element/update.sh26
-rw-r--r--pkgs/applications/networking/instant-messengers/feishu/default.nix186
-rw-r--r--pkgs/applications/networking/instant-messengers/ferdi/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/ferdium/default.nix22
-rw-r--r--pkgs/applications/networking/instant-messengers/fluffychat/default.nix2
-rw-r--r--pkgs/applications/networking/instant-messengers/fractal-next/default.nix76
-rw-r--r--pkgs/applications/networking/instant-messengers/franz/default.nix1
-rw-r--r--pkgs/applications/networking/instant-messengers/franz/generic.nix3
-rw-r--r--pkgs/applications/networking/instant-messengers/gajim/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/gitter/default.nix1
-rw-r--r--pkgs/applications/networking/instant-messengers/gotktrix/default.nix12
-rw-r--r--pkgs/applications/networking/instant-messengers/hipchat/default.nix1
-rw-r--r--pkgs/applications/networking/instant-messengers/jami/client-gnome.nix64
-rw-r--r--pkgs/applications/networking/instant-messengers/jami/client-qt.nix43
-rw-r--r--pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_args_common13
-rw-r--r--pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_patches3
-rw-r--r--pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_common19
-rw-r--r--pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_linux1
-rw-r--r--pkgs/applications/networking/instant-messengers/jami/daemon.nix94
-rw-r--r--pkgs/applications/networking/instant-messengers/jami/default.nix71
-rw-r--r--pkgs/applications/networking/instant-messengers/jami/libclient-include-path.patch13
-rw-r--r--pkgs/applications/networking/instant-messengers/jami/libclient.nix48
-rw-r--r--pkgs/applications/networking/instant-messengers/jami/pjproject-src.nix6
-rwxr-xr-xpkgs/applications/networking/instant-messengers/jami/update.sh27
-rw-r--r--pkgs/applications/networking/instant-messengers/jitsi/default.nix5
-rw-r--r--pkgs/applications/networking/instant-messengers/linphone/default.nix7
-rw-r--r--pkgs/applications/networking/instant-messengers/matrix-commander/default.nix68
-rw-r--r--pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix7
-rw-r--r--pkgs/applications/networking/instant-messengers/nheko/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/oysttyer/default.nix2
-rw-r--r--pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-signald/default.nix32
-rw-r--r--pkgs/applications/networking/instant-messengers/pidgin-plugins/tdlib-purple/default.nix39
-rw-r--r--pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix41
-rw-r--r--pkgs/applications/networking/instant-messengers/pidgin/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/pidgin/wrapper.nix2
-rw-r--r--pkgs/applications/networking/instant-messengers/psi-plus/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/ripcord/darwin.nix1
-rw-r--r--pkgs/applications/networking/instant-messengers/ripcord/default.nix1
-rw-r--r--pkgs/applications/networking/instant-messengers/rocketchat-desktop/default.nix5
-rw-r--r--pkgs/applications/networking/instant-messengers/schildichat/schildichat-desktop.nix3
-rw-r--r--pkgs/applications/networking/instant-messengers/session-desktop/default.nix (renamed from pkgs/applications/networking/instant-messengers/session-desktop-appimage/default.nix)12
-rw-r--r--pkgs/applications/networking/instant-messengers/signal-cli/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/signal-desktop/default.nix24
-rw-r--r--pkgs/applications/networking/instant-messengers/signalbackup-tools/apple-sdk-missing-utimensat.patch34
-rw-r--r--pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix33
-rw-r--r--pkgs/applications/networking/instant-messengers/signald/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/sky/default.nix1
-rw-r--r--pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix5
-rw-r--r--pkgs/applications/networking/instant-messengers/slack/default.nix18
-rw-r--r--pkgs/applications/networking/instant-messengers/stride/default.nix68
-rw-r--r--pkgs/applications/networking/instant-messengers/teams/default.nix19
-rw-r--r--pkgs/applications/networking/instant-messengers/teamspeak/client.nix3
-rw-r--r--pkgs/applications/networking/instant-messengers/teamspeak/client5.nix109
-rw-r--r--pkgs/applications/networking/instant-messengers/teamspeak/server.nix7
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt.nix10
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix10
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/tg/default.nix25
-rw-r--r--pkgs/applications/networking/instant-messengers/threema-desktop/default.nix7
-rw-r--r--pkgs/applications/networking/instant-messengers/trillian-im/default.nix78
-rw-r--r--pkgs/applications/networking/instant-messengers/turses/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/twitch-tui/default.nix25
-rw-r--r--pkgs/applications/networking/instant-messengers/viber/default.nix1
-rw-r--r--pkgs/applications/networking/instant-messengers/vk-cli/default.nix1
-rw-r--r--pkgs/applications/networking/instant-messengers/vk-messenger/default.nix1
-rw-r--r--pkgs/applications/networking/instant-messengers/wavebox/default.nix3
-rw-r--r--pkgs/applications/networking/instant-messengers/webex/default.nix175
-rw-r--r--pkgs/applications/networking/instant-messengers/wire-desktop/default.nix9
-rw-r--r--pkgs/applications/networking/instant-messengers/zoom-us/default.nix31
-rwxr-xr-xpkgs/applications/networking/instant-messengers/zoom-us/update.sh34
-rw-r--r--pkgs/applications/networking/instant-messengers/zulip-term/default.nix14
-rw-r--r--pkgs/applications/networking/instant-messengers/zulip-term/pytest-executable-name.patch21
92 files changed, 1711 insertions, 815 deletions
diff --git a/pkgs/applications/networking/instant-messengers/alfaview/default.nix b/pkgs/applications/networking/instant-messengers/alfaview/default.nix
index 51279394df5c8..e4813cbbf343e 100644
--- a/pkgs/applications/networking/instant-messengers/alfaview/default.nix
+++ b/pkgs/applications/networking/instant-messengers/alfaview/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "alfaview";
-  version = "8.45.0";
+  version = "8.52.0";
 
   src = fetchurl {
     url = "https://production-alfaview-assets.alfaview.com/stable/linux/${pname}_${version}.deb";
-    sha256 = "sha256-qSLKPtBjhbPGX9axbQnyCb+Tcq47xDMvVGj18hEPw28=";
+    sha256 = "sha256-Taw/qMrqgxFWmRTSed8xINDBGTWx7kteN637Fjrzn44=";
   };
 
   nativeBuildInputs = [
@@ -73,6 +73,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Video-conferencing application, specialized in virtual online meetings, seminars, training sessions and conferences";
     homepage = "https://alfaview.com";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
     maintainers = with maintainers; [ wolfangaukang hexchen ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/applications/networking/instant-messengers/armcord/default.nix b/pkgs/applications/networking/instant-messengers/armcord/default.nix
new file mode 100644
index 0000000000000..9a0766a926552
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/armcord/default.nix
@@ -0,0 +1,129 @@
+{ lib
+, stdenv
+, fetchurl
+, autoPatchelfHook
+, dpkg
+, makeWrapper
+, alsa-lib
+, at-spi2-atk
+, at-spi2-core
+, atk
+, cairo
+, cups
+, dbus
+, expat
+, ffmpeg
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, gtk3
+, libappindicator-gtk3
+, libdbusmenu
+, libdrm
+, libnotify
+, libpulseaudio
+, libsecret
+, libuuid
+, libxkbcommon
+, mesa
+, nss
+, pango
+, systemd
+, xdg-utils
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "armcord";
+  version = "3.0.7";
+
+  src = let
+    base = "https://github.com/ArmCord/ArmCord/releases/download";
+  in {
+    x86_64-linux = fetchurl {
+      url = "${base}/v${version}/ArmCord_${version}_amd64.deb";
+      sha256 = "b2a583e6abbc6e5dc3f7370a33f21fc4e7963c6cbe7555e954156c77e9577261";
+    };
+    aarch64-linux = fetchurl {
+      url = "${base}/v${version}/ArmCord_${version}_arm64.deb";
+      sha256 = "8c32a14ab8e5bdf865a6523cb4b5cec8f3f870b95f99be9661a4dd0df33aae1d";
+    };
+  }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+
+  nativeBuildInputs = [ autoPatchelfHook dpkg makeWrapper ];
+
+  buildInputs = [
+    alsa-lib
+    at-spi2-atk
+    at-spi2-core
+    atk
+    cairo
+    cups
+    dbus
+    expat
+    ffmpeg
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    gtk3
+    pango
+    systemd
+    mesa # for libgbm
+    nss
+    libuuid
+    libdrm
+    libnotify
+    libsecret
+    libpulseaudio
+    libxkbcommon
+    libappindicator-gtk3
+    xorg.libX11
+    xorg.libxcb
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXScrnSaver
+    xorg.libxshmfence
+    xorg.libXtst
+  ];
+
+  sourceRoot = ".";
+  unpackCmd = "dpkg-deb -x $src .";
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p "$out/bin"
+    cp -R "opt" "$out"
+    cp -R "usr/share" "$out/share"
+    chmod -R g-w "$out"
+
+    # Wrap the startup command
+    makeWrapper $out/opt/ArmCord/armcord $out/bin/armcord \
+      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath buildInputs}" \
+      --suffix PATH : ${lib.makeBinPath [ xdg-utils ]} \
+      "''${gappsWrapperArgs[@]}"
+
+    # Fix desktop link
+    substituteInPlace $out/share/applications/armcord.desktop \
+      --replace /opt/ArmCord/ $out/bin/
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Lightweight, alternative desktop client for Discord";
+    homepage = "https://github.com/ArmCord/ArmCord";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    license = licenses.osl3;
+    maintainers = with maintainers; [ wrmilling ];
+    platforms = [ "x86_64-linux" "aarch64-linux" ];
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/baresip/default.nix b/pkgs/applications/networking/instant-messengers/baresip/default.nix
index 95afcfae4f2b9..0644b431cc872 100644
--- a/pkgs/applications/networking/instant-messengers/baresip/default.nix
+++ b/pkgs/applications/networking/instant-messengers/baresip/default.nix
@@ -24,13 +24,13 @@
 , libvpx
 }:
 stdenv.mkDerivation rec {
-  version = "1.1.0";
+  version = "2.7.0";
   pname = "baresip";
   src = fetchFromGitHub {
     owner = "baresip";
     repo = "baresip";
     rev = "v${version}";
-    sha256 = "sha256-9mc1Beo7/iNhDXSDC/jiTL+lJRt8ah/1xF1heoHTE+g=";
+    sha256 = "sha256-ouevompKkWn5CXuDcPuKiTE9GrIXBs/NFsNu6GHgReE=";
   };
   postPatch = ''
     patchShebangs modules/ctrl_dbus/gen.sh
@@ -116,5 +116,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/baresip/baresip";
     maintainers = with lib.maintainers; [ elohmeier raskin ];
     license = lib.licenses.bsd3;
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/applications/networking/instant-messengers/bluejeans/default.nix b/pkgs/applications/networking/instant-messengers/bluejeans/default.nix
index c902a7e67c57e..5e8aef5f594d1 100644
--- a/pkgs/applications/networking/instant-messengers/bluejeans/default.nix
+++ b/pkgs/applications/networking/instant-messengers/bluejeans/default.nix
@@ -44,11 +44,11 @@ in
 
 stdenv.mkDerivation rec {
   pname = "bluejeans";
-  version = "2.27.0.130";
+  version = "2.30.0.89";
 
   src = fetchurl {
     url = "https://swdl.bluejeans.com/desktop-app/linux/${getFirst 3 version}/BlueJeans_${version}.rpm";
-    sha256 = "sha256-J0BGL03k1NAJLLEUOfvKjZEsBlupeHJR2Bp3c0ANBwg=";
+    sha256 = "sha256-ALydB6bTxaYsBk0BrTKG8Yan4n/jvxT8T7fSMFel+CQ=";
   };
 
   nativeBuildInputs = [ rpmextract makeWrapper ];
@@ -111,10 +111,11 @@ stdenv.mkDerivation rec {
 
     cc $localtime64_stub -shared -o "${placeholder "out"}"/opt/BlueJeans/liblocaltime64_stub.so
 
+    # make xdg-open overrideable at runtime
     makeWrapper $out/opt/BlueJeans/bluejeans-v2 $out/bin/bluejeans \
       --set LD_LIBRARY_PATH "${libPath}":"${placeholder "out"}"/opt/BlueJeans \
       --set LD_PRELOAD "$out"/opt/BlueJeans/liblocaltime64_stub.so \
-      --prefix PATH : ${lib.makeBinPath [ xdg-utils ]}
+      --suffix PATH : ${lib.makeBinPath [ xdg-utils ]}
 
     substituteInPlace "$out"/share/applications/bluejeans-v2.desktop \
       --replace "/opt/BlueJeans/bluejeans-v2" "$out/bin/bluejeans"
@@ -127,6 +128,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Video, audio, and web conferencing that works together with the collaboration tools you use every day";
     homepage = "https://www.bluejeans.com";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
     maintainers = with maintainers; [ ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/applications/networking/instant-messengers/briar-desktop/default.nix b/pkgs/applications/networking/instant-messengers/briar-desktop/default.nix
new file mode 100644
index 0000000000000..1b16786649f90
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/briar-desktop/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, stdenv
+, fetchzip
+, openjdk
+, makeWrapper
+, tor
+, p7zip
+, bash
+, writeScript
+}:
+let
+
+  briar-tor = writeScript "briar-tor" ''
+    #! ${bash}/bin/bash
+    exec ${tor}/bin/tor "$@"
+  '';
+
+in
+stdenv.mkDerivation rec {
+  pname = "briar-desktop";
+  version = "0.2.1-beta";
+
+  src = fetchzip {
+    url = "https://code.briarproject.org/briar/briar-desktop/-/jobs/18424/artifacts/download?file_type=archive";
+    sha256 = "sha256-ivMbgo0+iZE4/Iffq9HUBErGIQMVLrRZUQ6R3V3X8II=";
+    extension = "zip";
+  };
+
+  nativeBuildInputs = [
+    makeWrapper
+    p7zip
+  ];
+
+  installPhase = ''
+    mkdir -p $out/{bin,lib}
+    cp ${src}/briar-desktop.jar $out/lib/
+    makeWrapper ${openjdk}/bin/java $out/bin/briar-desktop \
+      --add-flags "-jar $out/lib/briar-desktop.jar"
+  '';
+
+  fixupPhase = ''
+    # Replace the embedded Tor binary (which is in a Tar archive)
+    # with one from Nixpkgs.
+    cp ${briar-tor} ./tor
+    for arch in {aarch64,armhf,x86_64}; do
+      7z a tor_linux-$arch.zip tor
+      7z a $out/lib/briar-desktop.jar tor_linux-$arch.zip
+    done
+  '';
+
+  meta = with lib; {
+    description = "Decentalized and secure messnger";
+    homepage = "https://code.briarproject.org/briar/briar-desktop";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ onny ];
+    platforms = [ "x86_64-linux" "aarch64-linux" "armv7l-linux" ];
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/chatty/default.nix b/pkgs/applications/networking/instant-messengers/chatty/default.nix
index 35266eff90092..fc9c4c10b2187 100644
--- a/pkgs/applications/networking/instant-messengers/chatty/default.nix
+++ b/pkgs/applications/networking/instant-messengers/chatty/default.nix
@@ -29,7 +29,7 @@
 
 stdenv.mkDerivation rec {
   pname = "chatty";
-  version = "0.6.4";
+  version = "0.6.7";
 
   src = fetchFromGitLab {
     domain = "source.puri.sm";
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
     repo = "chatty";
     rev = "v${version}";
     fetchSubmodules = true;
-    hash = "sha256-uDuSx+tWv6DV93/99QUcUKZaWA9kNW8phHZhetYlG/M=";
+    hash = "sha256-W4w/00mRgjfyQmLQ81/EAN+80qk7kDkBmMPJnOU+AIc=";
   };
 
   postPatch = ''
@@ -83,6 +83,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "XMPP and SMS messaging via libpurple and ModemManager";
     homepage = "https://source.puri.sm/Librem5/chatty";
+    changelog = "https://source.puri.sm/Librem5/chatty/-/blob/${src.rev}/NEWS";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dotlambda tomfitzhenry ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/networking/instant-messengers/cinny-desktop/default.nix b/pkgs/applications/networking/instant-messengers/cinny-desktop/default.nix
new file mode 100644
index 0000000000000..d5d47cda3385f
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/cinny-desktop/default.nix
@@ -0,0 +1,46 @@
+{ stdenv
+, lib
+, dpkg
+, fetchurl
+, autoPatchelfHook
+, glib-networking
+, openssl
+, webkitgtk
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  name = "cinny-desktop";
+  version = "2.1.3";
+
+  src = fetchurl {
+    url = "https://github.com/cinnyapp/cinny-desktop/releases/download/v${version}/Cinny_desktop-x86_64.deb";
+    sha256 = "sha256-fUnWGnulj/515aEdd+rCy/LGLLAs2yAOOBUn9K1LhNs=";
+  };
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    dpkg
+  ];
+
+  buildInputs = [
+    glib-networking
+    openssl
+    webkitgtk
+    wrapGAppsHook
+  ];
+
+  unpackCmd = "dpkg-deb -x $curSrc source";
+
+  installPhase = "mv usr $out";
+
+  meta = with lib; {
+    description = "Yet another matrix client for desktop";
+    homepage = "https://github.com/cinnyapp/cinny-desktop";
+    maintainers = [ maintainers.aveltras ];
+    license = licenses.mit;
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    platforms = platforms.linux;
+    mainProgram = "cinny";
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/cinny/default.nix b/pkgs/applications/networking/instant-messengers/cinny/default.nix
index 3f3d71a337183..04f7dd01ac3d3 100644
--- a/pkgs/applications/networking/instant-messengers/cinny/default.nix
+++ b/pkgs/applications/networking/instant-messengers/cinny/default.nix
@@ -4,11 +4,11 @@ let
   configOverrides = writeText "cinny-config-overrides.json" (builtins.toJSON conf);
 in stdenv.mkDerivation rec {
   pname = "cinny";
-  version = "2.0.4";
+  version = "2.1.3";
 
   src = fetchurl {
     url = "https://github.com/ajbura/cinny/releases/download/v${version}/cinny-v${version}.tar.gz";
-    sha256 = "0p5s25nkjs9514a16c7kl0m78vn5f14mv6nbi79yz0sxb7hc12qg";
+    sha256 = "sha256-Tn8pT0tppBEQtLdwQf0edUBe3dkK7fedunnNYIld/SQ=";
   };
 
   installPhase = ''
diff --git a/pkgs/applications/networking/instant-messengers/deltachat-desktop/default.nix b/pkgs/applications/networking/instant-messengers/deltachat-desktop/default.nix
index 980ff7e9b548d..8354426423483 100644
--- a/pkgs/applications/networking/instant-messengers/deltachat-desktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/deltachat-desktop/default.nix
@@ -1,6 +1,7 @@
 { lib
 , copyDesktopItems
 , electron_18
+, buildGoModule
 , esbuild
 , fetchFromGitHub
 , libdeltachat
@@ -31,19 +32,18 @@ let
       hash = "sha256-4rpoDQ3o0WdWg/TmazTI+J0hL/MxwHcNMXWMq7GE7Tk=";
     };
   });
-  electronExec = if stdenv.isDarwin then
-    "${electron_18}/Applications/Electron.app/Contents/MacOS/Electron"
-  else
-    "${electron_18}/bin/electron";
-  esbuild' = esbuild.overrideAttrs (old: rec {
-    version = "0.12.29";
-    src = fetchFromGitHub {
-      owner = "evanw";
-      repo = "esbuild";
-      rev = "v${version}";
-      hash = "sha256-oU++9E3StUoyrMVRMZz8/1ntgPI62M1NoNz9sH/N5Bg=";
-    };
-  });
+  esbuild' = esbuild.override {
+    buildGoModule = args: buildGoModule (args // rec {
+      version = "0.12.29";
+      src = fetchFromGitHub {
+        owner = "evanw";
+        repo = "esbuild";
+        rev = "v${version}";
+        hash = "sha256-oU++9E3StUoyrMVRMZz8/1ntgPI62M1NoNz9sH/N5Bg=";
+      };
+      vendorSha256 = "sha256-QPkBR+FscUc3jOvH7olcGUhM6OW4vxawmNJuRQxPuGs=";
+    });
+  };
 in nodePackages.deltachat-desktop.override rec {
   pname = "deltachat-desktop";
   version = "1.30.1";
@@ -98,7 +98,7 @@ in nodePackages.deltachat-desktop.override rec {
         $out/lib/node_modules/deltachat-desktop/html-dist/fonts
     done
 
-    makeWrapper ${electronExec} $out/bin/deltachat \
+    makeWrapper ${electron_18}/bin/electron $out/bin/deltachat \
       --set LD_PRELOAD ${sqlcipher}/lib/libsqlcipher${stdenv.hostPlatform.extensions.sharedLibrary} \
       --add-flags $out/lib/node_modules/deltachat-desktop
   '';
diff --git a/pkgs/applications/networking/instant-messengers/dino/default.nix b/pkgs/applications/networking/instant-messengers/dino/default.nix
index 3e992899e43e7..d18341b220f49 100644
--- a/pkgs/applications/networking/instant-messengers/dino/default.nix
+++ b/pkgs/applications/networking/instant-messengers/dino/default.nix
@@ -14,7 +14,7 @@
 , qrencode
 , icu
 , gspell
-, srtp, libnice, gnutls, gstreamer, gst-plugins-base, gst-plugins-good
+, srtp, libnice, gnutls, gstreamer, gst-plugins-base, gst-plugins-good, webrtc-audio-processing
  }:
 
 stdenv.mkDerivation rec {
@@ -65,6 +65,7 @@ stdenv.mkDerivation rec {
     gstreamer
     gst-plugins-base
     gst-plugins-good
+    webrtc-audio-processing
   ] ++ lib.optionals (!stdenv.isDarwin) [
     xorg.libxcb
     xorg.libpthreadstubs
@@ -72,6 +73,16 @@ stdenv.mkDerivation rec {
     libxkbcommon
   ];
 
+  cmakeFlags = ["-DBUILD_TESTS=yes"];
+
+  doCheck = true;
+  checkPhase = ''
+    runHook preCheck
+    ./xmpp-vala-test
+    ./signal-protocol-vala-test
+    runHook postCheck
+  '';
+
   # Dino looks for plugins with a .so filename extension, even on macOS where
   # .dylib is appropriate, and despite the fact that it builds said plugins with
   # that as their filename extension
diff --git a/pkgs/applications/networking/instant-messengers/discord/darwin.nix b/pkgs/applications/networking/instant-messengers/discord/darwin.nix
index 4bc9ac98df1f6..aa1cfaa045ca4 100644
--- a/pkgs/applications/networking/instant-messengers/discord/darwin.nix
+++ b/pkgs/applications/networking/instant-messengers/discord/darwin.nix
@@ -1,4 +1,4 @@
-{ pname, version, src, meta, stdenv, binaryName, desktopName, undmg }:
+{ pname, version, src, openasar, meta, stdenv, binaryName, desktopName, lib, undmg, withOpenASAR ? false }:
 
 stdenv.mkDerivation {
   inherit pname version src meta;
@@ -8,7 +8,15 @@ stdenv.mkDerivation {
   sourceRoot = ".";
 
   installPhase = ''
+    runHook preInstall
+
     mkdir -p $out/Applications
     cp -r "${desktopName}.app" $out/Applications
+
+    runHook postInstall
+  '';
+
+  postInstall = lib.strings.optionalString withOpenASAR ''
+    cp -f ${openasar} $out/Applications/${desktopName}.app/Contents/Resources/app.asar
   '';
 }
diff --git a/pkgs/applications/networking/instant-messengers/discord/default.nix b/pkgs/applications/networking/instant-messengers/discord/default.nix
index ab471ef47fb78..91e38aae5c7a4 100644
--- a/pkgs/applications/networking/instant-messengers/discord/default.nix
+++ b/pkgs/applications/networking/instant-messengers/discord/default.nix
@@ -1,53 +1,49 @@
-{ branch ? "stable", pkgs, lib, stdenv }:
+{ branch ? "stable", callPackage, fetchurl, lib, stdenv }:
 let
-  inherit (pkgs) callPackage fetchurl;
   versions = if stdenv.isLinux then {
-    stable = "0.0.18";
+    stable = "0.0.19";
     ptb = "0.0.29";
-    canary = "0.0.135";
+    canary = "0.0.138";
   } else {
     stable = "0.0.264";
     ptb = "0.0.59";
     canary = "0.0.283";
   };
   version = versions.${branch};
-  srcs = let
-    darwin-ptb = fetchurl {
-      url = "https://dl-ptb.discordapp.net/apps/osx/${version}/DiscordPTB.dmg";
-      sha256 = "sha256-LS7KExVXkOv8O/GrisPMbBxg/pwoDXIOo1dK9wk1yB8=";
-    };
-  in {
+  srcs = rec {
     x86_64-linux = {
       stable = fetchurl {
-        url =
-          "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
-        sha256 = "1hl01rf3l6kblx5v7rwnwms30iz8zw6dwlkjsx2f1iipljgkh5q4";
+        url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
+        sha256 = "GfSyddbGF8WA6JmHo4tUM27cyHV5kRAyrEiZe1jbA5A=";
       };
       ptb = fetchurl {
-        url =
-          "https://dl-ptb.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
+        url = "https://dl-ptb.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
         sha256 = "d78NnQZ3MkLje8mHrI6noH2iD2oEvSJ3cDnsmzQsUYc=";
       };
       canary = fetchurl {
-        url =
-          "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
-        sha256 = "sha256-dmG+3BWS1BMHHQAv4fsXuObVeAJBeD+TqnyQz69AMac=";
+        url = "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
+        sha256 = "sha256-NojoHrrgdvLiMgWYPClXzWjWXuvHz7urhyHzMnZwvBY=";
       };
     };
-    x86_64-darwin = {
-      stable = fetchurl {
-        url = "https://dl.discordapp.net/apps/osx/${version}/Discord.dmg";
-        sha256 = "1jvlxmbfqhslsr16prsgbki77kq7i3ipbkbn67pnwlnis40y9s7p";
+    aarch64-darwin = {
+      ptb = fetchurl {
+        url = "https://dl-ptb.discordapp.net/apps/osx/${version}/DiscordPTB.dmg";
+        sha256 = "sha256-LS7KExVXkOv8O/GrisPMbBxg/pwoDXIOo1dK9wk1yB8=";
       };
-      ptb = darwin-ptb;
       canary = fetchurl {
-        url =
-          "https://dl-canary.discordapp.net/apps/osx/${version}/DiscordCanary.dmg";
+        url = "https://dl-canary.discordapp.net/apps/osx/${version}/DiscordCanary.dmg";
         sha256 = "0mqpk1szp46mih95x42ld32rrspc6jx1j7qdaxf01whzb3d4pi9l";
       };
     };
-    # Only PTB bundles a MachO Universal binary with ARM support.
-    aarch64-darwin = { ptb = darwin-ptb; };
+    # Stable does not (yet) provide aarch64-darwin support. PTB and Canary, however, do.
+    x86_64-darwin =
+      aarch64-darwin
+      // {
+        stable = fetchurl {
+          url = "https://dl.discordapp.net/apps/osx/${version}/Discord.dmg";
+          sha256 = "1jvlxmbfqhslsr16prsgbki77kq7i3ipbkbn67pnwlnis40y9s7p";
+        };
+      };
   };
   src = srcs.${stdenv.hostPlatform.system}.${branch};
 
@@ -55,30 +51,44 @@ let
     description = "All-in-one cross-platform voice and text chat for gamers";
     homepage = "https://discordapp.com/";
     downloadPage = "https://discordapp.com/download";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
-    maintainers = with maintainers; [ ldesgoui MP2E devins2518 ];
+    maintainers = with maintainers; [ MP2E devins2518 ];
     platforms = [ "x86_64-linux" "x86_64-darwin" ]
-      ++ lib.optionals (branch == "ptb") [ "aarch64-darwin" ];
+      ++ lib.optionals (branch != "stable") [ "aarch64-darwin" ];
   };
-  package = if stdenv.isLinux then ./linux.nix else ./darwin.nix;
-  packages = (builtins.mapAttrs
-    (_: value: callPackage package (value // { inherit src version; meta = meta // { mainProgram = value.binaryName; }; }))
-    {
-      stable = rec {
-        pname = "discord";
-        binaryName = "Discord";
-        desktopName = "Discord";
-      };
-      ptb = rec {
-        pname = "discord-ptb";
-        binaryName = "DiscordPTB";
-        desktopName = "Discord PTB";
-      };
-      canary = rec {
-        pname = "discord-canary";
-        binaryName = "DiscordCanary";
-        desktopName = "Discord Canary";
-      };
-    }
+  package =
+    if stdenv.isLinux
+    then ./linux.nix
+    else ./darwin.nix;
+
+  openasar = callPackage ./openasar.nix { };
+
+  packages = (
+    builtins.mapAttrs
+      (_: value:
+        callPackage package (value
+          // {
+          inherit src version openasar;
+          meta = meta // { mainProgram = value.binaryName; };
+        }))
+      {
+        stable = rec {
+          pname = "discord";
+          binaryName = "Discord";
+          desktopName = "Discord";
+        };
+        ptb = rec {
+          pname = "discord-ptb";
+          binaryName = "DiscordPTB";
+          desktopName = "Discord PTB";
+        };
+        canary = rec {
+          pname = "discord-canary";
+          binaryName = "DiscordCanary";
+          desktopName = "Discord Canary";
+        };
+      }
   );
-in packages.${branch}
+in
+packages.${branch}
diff --git a/pkgs/applications/networking/instant-messengers/discord/linux.nix b/pkgs/applications/networking/instant-messengers/discord/linux.nix
index b960caa64d802..846ac82d172b2 100644
--- a/pkgs/applications/networking/instant-messengers/discord/linux.nix
+++ b/pkgs/applications/networking/instant-messengers/discord/linux.nix
@@ -1,11 +1,11 @@
-{ pname, version, src, meta, binaryName, desktopName, autoPatchelfHook
+{ pname, version, src, openasar, meta, binaryName, desktopName, autoPatchelfHook
 , makeDesktopItem, lib, stdenv, wrapGAppsHook, makeShellWrapper, alsa-lib, at-spi2-atk
 , at-spi2-core, atk, cairo, cups, dbus, expat, fontconfig, freetype, gdk-pixbuf
 , glib, gtk3, libcxx, libdrm, libnotify, libpulseaudio, libuuid, libX11
 , libXScrnSaver, libXcomposite, libXcursor, libXdamage, libXext, libXfixes
 , libXi, libXrandr, libXrender, libXtst, libxcb, libxshmfence, mesa, nspr, nss
 , pango, systemd, libappindicator-gtk3, libdbusmenu, writeScript
-, common-updater-scripts }:
+, common-updater-scripts, withOpenASAR ? false }:
 
 stdenv.mkDerivation rec {
   inherit pname version src meta;
@@ -72,7 +72,9 @@ stdenv.mkDerivation rec {
   ];
 
   installPhase = ''
-    mkdir -p $out/{bin,opt/${binaryName},share/pixmaps}
+    runHook preInstall
+
+    mkdir -p $out/{bin,opt/${binaryName},share/pixmaps,share/icons/hicolor/256x256/apps}
     mv * $out/opt/${binaryName}
 
     chmod +x $out/opt/${binaryName}/${binaryName}
@@ -90,9 +92,17 @@ stdenv.mkDerivation rec {
     ln -s $out/opt/${binaryName}/${binaryName} $out/bin/${
       lib.strings.toLower binaryName
     } || true
+
     ln -s $out/opt/${binaryName}/discord.png $out/share/pixmaps/${pname}.png
+    ln -s $out/opt/${binaryName}/discord.png $out/share/icons/hicolor/256x256/apps/${pname}.png
 
     ln -s "${desktopItem}/share/applications" $out/share/
+
+    runHook postInstall
+  '';
+
+  postInstall = lib.strings.optionalString withOpenASAR ''
+    cp -f ${openasar} $out/opt/${binaryName}/resources/app.asar
   '';
 
   desktopItem = makeDesktopItem {
diff --git a/pkgs/applications/networking/instant-messengers/discord/openasar.nix b/pkgs/applications/networking/instant-messengers/discord/openasar.nix
new file mode 100644
index 0000000000000..c6a64212b558c
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/discord/openasar.nix
@@ -0,0 +1,50 @@
+{ lib, stdenv, fetchFromGitHub, nodejs, bash, nodePackages, unzip }:
+
+stdenv.mkDerivation rec {
+  pname = "openasar";
+  version = "unstable-2022-08-07";
+
+  src = fetchFromGitHub {
+    owner = "GooseMod";
+    repo = "OpenAsar";
+    rev = "e0870784008a584229d3094e0988f5da155c7fd7";
+    hash = "sha256-t0b2SFlDDBSQEkOCQME0jsLJ8NvoXROTxoQgnoXM9eQ=";
+  };
+
+  postPatch = ''
+    # Hardcode unzip path
+    substituteInPlace ./src/updater/moduleUpdater.js \
+      --replace \'unzip\' \'${unzip}/bin/unzip\'
+    # Remove auto-update feature
+    echo "module.exports = async () => log('AsarUpdate', 'Removed');" > ./src/asarUpdate.js
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+
+    bash scripts/injectPolyfills.sh
+    substituteInPlace src/index.js --replace 'nightly' '${version}'
+    ${nodejs}/bin/node scripts/strip.js
+    ${nodePackages.asar}/bin/asar pack src app.asar
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    install app.asar $out
+
+    runHook postInstall
+  '';
+
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Open-source alternative of Discord desktop's \"app.asar\".";
+    homepage = "https://openasar.dev";
+    license = licenses.mit;
+    maintainers = with maintainers; [ pedrohlc ];
+    platforms = nodejs.meta.platforms;
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/element/element-desktop-package.json b/pkgs/applications/networking/instant-messengers/element/element-desktop-package.json
deleted file mode 100644
index b470f658042fa..0000000000000
--- a/pkgs/applications/networking/instant-messengers/element/element-desktop-package.json
+++ /dev/null
@@ -1,140 +0,0 @@
-{
-  "name": "element-desktop",
-  "productName": "Element",
-  "main": "lib/electron-main.js",
-  "version": "1.10.13",
-  "description": "A feature-rich client for Matrix.org",
-  "author": "Element",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/vector-im/element-desktop"
-  },
-  "license": "Apache-2.0",
-  "files": [],
-  "scripts": {
-    "i18n": "matrix-gen-i18n",
-    "prunei18n": "matrix-prune-i18n",
-    "diff-i18n": "cp src/i18n/strings/en_EN.json src/i18n/strings/en_EN_orig.json && matrix-gen-i18n && matrix-compare-i18n-files src/i18n/strings/en_EN_orig.json src/i18n/strings/en_EN.json",
-    "mkdirs": "mkdirp packages deploys",
-    "fetch": "yarn run mkdirs && node scripts/fetch-package.js",
-    "asar-webapp": "asar p webapp webapp.asar",
-    "start": "yarn run build:ts && yarn run build:res && electron .",
-    "lint": "yarn lint:types && yarn lint:js",
-    "lint:js": "eslint --max-warnings 0 src scripts hak",
-    "lint:js-fix": "eslint --fix src scripts hak",
-    "lint:types": "tsc --noEmit && tsc -p scripts/hak/tsconfig.json --noEmit && tsc -p hak/tsconfig.json --noEmit",
-    "build:native": "yarn run hak",
-    "build:native:universal": "yarn run hak --target x86_64-apple-darwin fetchandbuild && yarn run hak --target aarch64-apple-darwin fetchandbuild && yarn run hak --target x86_64-apple-darwin --target aarch64-apple-darwin copyandlink",
-    "build:32": "yarn run build:ts && yarn run build:res && electron-builder --ia32",
-    "build:64": "yarn run build:ts && yarn run build:res && electron-builder --x64",
-    "build:universal": "yarn run build:ts && yarn run build:res && electron-builder --universal",
-    "build": "yarn run build:ts && yarn run build:res && electron-builder",
-    "build:ts": "tsc",
-    "build:res": "node scripts/copy-res.js",
-    "docker:setup": "docker build -t element-desktop-dockerbuild dockerbuild",
-    "docker:build:native": "scripts/in-docker.sh yarn run hak",
-    "docker:build": "scripts/in-docker.sh yarn run build",
-    "docker:install": "scripts/in-docker.sh yarn install",
-    "debrepo": "scripts/mkrepo.sh",
-    "clean": "rimraf webapp.asar dist packages deploys lib",
-    "hak": "ts-node scripts/hak/index.ts"
-  },
-  "dependencies": {
-    "auto-launch": "^5.0.5",
-    "counterpart": "^0.18.6",
-    "electron-store": "^6.0.1",
-    "electron-window-state": "^5.0.3",
-    "minimist": "^1.2.6",
-    "png-to-ico": "^2.1.1",
-    "request": "^2.88.2"
-  },
-  "devDependencies": {
-    "@types/auto-launch": "^5.0.1",
-    "@types/counterpart": "^0.18.1",
-    "@types/minimist": "^1.2.1",
-    "@types/mkdirp": "^1.0.2",
-    "@types/pacote": "^11.1.1",
-    "@types/rimraf": "^3.0.2",
-    "@typescript-eslint/eslint-plugin": "^5.6.0",
-    "@typescript-eslint/parser": "^5.6.0",
-    "allchange": "^1.0.6",
-    "app-builder-lib": "^22.14.10",
-    "asar": "^2.0.1",
-    "chokidar": "^3.5.2",
-    "electron": "^17",
-    "electron-builder": "22.11.4",
-    "electron-builder-squirrel-windows": "22.11.4",
-    "electron-devtools-installer": "^3.1.1",
-    "electron-notarize": "^1.0.0",
-    "eslint": "7.18.0",
-    "eslint-config-google": "^0.14.0",
-    "eslint-plugin-import": "^2.25.4",
-    "eslint-plugin-matrix-org": "^0.4.0",
-    "find-npm-prefix": "^1.0.2",
-    "fs-extra": "^8.1.0",
-    "glob": "^7.1.6",
-    "matrix-web-i18n": "^1.2.0",
-    "mkdirp": "^1.0.3",
-    "needle": "^2.5.0",
-    "node-pre-gyp": "^0.15.0",
-    "pacote": "^11.3.5",
-    "rimraf": "^3.0.2",
-    "tar": "^6.1.2",
-    "ts-node": "^10.4.0",
-    "typescript": "4.5.5"
-  },
-  "hakDependencies": {
-    "matrix-seshat": "^2.3.3",
-    "keytar": "^7.9.0"
-  },
-  "build": {
-    "appId": "im.riot.app",
-    "asarUnpack": "**/*.node",
-    "files": [
-      "package.json",
-      {
-        "from": ".hak/hakModules",
-        "to": "node_modules"
-      },
-      "lib/**"
-    ],
-    "extraResources": [
-      {
-        "from": "res/img",
-        "to": "img"
-      },
-      "webapp.asar"
-    ],
-    "linux": {
-      "target": "deb",
-      "category": "Network;InstantMessaging;Chat",
-      "maintainer": "support@element.io",
-      "desktop": {
-        "StartupWMClass": "element"
-      }
-    },
-    "mac": {
-      "category": "public.app-category.social-networking",
-      "darkModeSupport": true
-    },
-    "win": {
-      "target": {
-        "target": "squirrel"
-      },
-      "sign": "scripts/electron_winSign"
-    },
-    "directories": {
-      "output": "dist"
-    },
-    "afterPack": "scripts/electron_afterPack",
-    "afterSign": "scripts/electron_afterSign",
-    "protocols": [
-      {
-        "name": "element",
-        "schemes": [
-          "element"
-        ]
-      }
-    ]
-  }
-}
diff --git a/pkgs/applications/networking/instant-messengers/element/element-desktop.nix b/pkgs/applications/networking/instant-messengers/element/element-desktop.nix
index 2ad5d8c4654f9..261e9e7986e71 100644
--- a/pkgs/applications/networking/instant-messengers/element/element-desktop.nix
+++ b/pkgs/applications/networking/instant-messengers/element/element-desktop.nix
@@ -3,7 +3,9 @@
 , fetchFromGitHub
 , makeWrapper
 , makeDesktopItem
-, mkYarnPackage
+, fixup_yarn_lock
+, yarn
+, nodejs
 , fetchYarnDeps
 , electron
 , element-web
@@ -19,11 +21,10 @@
 let
   pinData = lib.importJSON ./pin.json;
   executableName = "element-desktop";
-  electron_exec = if stdenv.isDarwin then "${electron}/Applications/Electron.app/Contents/MacOS/Electron" else "${electron}/bin/electron";
   keytar = callPackage ./keytar { inherit Security AppKit; };
   seshat = callPackage ./seshat { inherit CoreServices; };
 in
-mkYarnPackage rec {
+stdenv.mkDerivation rec {
   pname = "element-desktop";
   inherit (pinData) version;
   name = "${pname}-${version}";
@@ -34,27 +35,39 @@ mkYarnPackage rec {
     sha256 = pinData.desktopSrcHash;
   };
 
-  packageJSON = ./element-desktop-package.json;
   offlineCache = fetchYarnDeps {
     yarnLock = src + "/yarn.lock";
     sha256 = pinData.desktopYarnHash;
   };
 
-  nativeBuildInputs = [ makeWrapper ] ++ lib.optionals stdenv.isDarwin [ desktopToDarwinBundle ];
+  nativeBuildInputs = [ yarn fixup_yarn_lock nodejs makeWrapper ]
+    ++ lib.optionals stdenv.isDarwin [ desktopToDarwinBundle ];
 
   inherit seshat;
 
+  configurePhase = ''
+    runHook preConfigure
+
+    export HOME=$(mktemp -d)
+    yarn config --offline set yarn-offline-mirror $offlineCache
+    fixup_yarn_lock yarn.lock
+    yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
+    patchShebangs node_modules/
+
+    runHook postConfigure
+  '';
+
   buildPhase = ''
     runHook preBuild
-    export HOME=$(mktemp -d)
-    pushd deps/element-desktop/
-    npx tsc
-    yarn run i18n
-    node ./scripts/copy-res.js
-    popd
+
+    yarn --offline run build:ts
+    yarn --offline run i18n
+    yarn --offline run build:res
+
     rm -rf node_modules/matrix-seshat node_modules/keytar
     ${lib.optionalString useKeytar "ln -s ${keytar} node_modules/keytar"}
     ln -s $seshat node_modules/matrix-seshat
+
     runHook postBuild
   '';
 
@@ -64,9 +77,9 @@ mkYarnPackage rec {
     # resources
     mkdir -p "$out/share/element"
     ln -s '${element-web}' "$out/share/element/webapp"
-    cp -r './deps/element-desktop' "$out/share/element/electron"
-    cp -r './deps/element-desktop/res/img' "$out/share/element"
-    rm "$out/share/element/electron/node_modules"
+    cp -r '.' "$out/share/element/electron"
+    cp -r './res/img' "$out/share/element"
+    rm -rf "$out/share/element/electron/node_modules"
     cp -r './node_modules' "$out/share/element/electron"
     cp $out/share/element/electron/lib/i18n/strings/en_EN.json $out/share/element/electron/lib/i18n/strings/en-us.json
     ln -s $out/share/element/electron/lib/i18n/strings/en{-us,}.json
@@ -83,7 +96,7 @@ mkYarnPackage rec {
 
     # executable wrapper
     # LD_PRELOAD workaround for sqlcipher not found: https://github.com/matrix-org/seshat/issues/102
-    makeWrapper '${electron_exec}' "$out/bin/${executableName}" \
+    makeWrapper '${electron}/bin/electron' "$out/bin/${executableName}" \
       --set LD_PRELOAD ${sqlcipher}/lib/libsqlcipher.so \
       --add-flags "$out/share/element/electron" \
       --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}"
@@ -91,12 +104,6 @@ mkYarnPackage rec {
     runHook postInstall
   '';
 
-  # Do not attempt generating a tarball for element-web again.
-  # note: `doDist = false;` does not work.
-  distPhase = ''
-    true
-  '';
-
   # The desktop item properties should be kept in sync with data from upstream:
   # https://github.com/vector-im/element-desktop/blob/develop/package.json
   desktopItem = makeDesktopItem {
diff --git a/pkgs/applications/networking/instant-messengers/element/element-web.nix b/pkgs/applications/networking/instant-messengers/element/element-web.nix
index fae96e8e5e7ae..5254c07223eee 100644
--- a/pkgs/applications/networking/instant-messengers/element/element-web.nix
+++ b/pkgs/applications/networking/instant-messengers/element/element-web.nix
@@ -1,4 +1,16 @@
-{ lib, stdenv, fetchurl, writeText, jq, conf ? {} }:
+{ lib
+, stdenv
+, runCommand
+, fetchFromGitHub
+, fetchYarnDeps
+, writeText
+, jq
+, yarn
+, fixup_yarn_lock
+, nodejs
+, jitsi-meet
+, conf ? { }
+}:
 
 let
   pinData = lib.importJSON ./pin.json;
@@ -12,17 +24,52 @@ in stdenv.mkDerivation rec {
   pname = "element-web";
   inherit (pinData) version;
 
-  src = fetchurl {
-    url = "https://github.com/vector-im/element-web/releases/download/v${version}/element-v${version}.tar.gz";
-    sha256 = pinData.webHash;
+  src = fetchFromGitHub {
+    owner = "vector-im";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = pinData.webSrcHash;
   };
 
+  offlineCache = fetchYarnDeps {
+    yarnLock = src + "/yarn.lock";
+    sha256 = pinData.webYarnHash;
+  };
+
+  nativeBuildInputs = [ yarn fixup_yarn_lock jq nodejs ];
+
+  configurePhase = ''
+    runHook preConfigure
+
+    export HOME=$PWD/tmp
+    mkdir -p $HOME
+
+    fixup_yarn_lock yarn.lock
+    yarn config --offline set yarn-offline-mirror $offlineCache
+    yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
+    patchShebangs node_modules
+
+    runHook postConfigure
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+
+    export VERSION=${version}
+    yarn build:res --offline
+    yarn build:module_system --offline
+    yarn build:bundle --offline
+
+    runHook postBuild
+  '';
+
   installPhase = ''
     runHook preInstall
 
-    mkdir -p $out/
-    cp -R . $out/
-    ${jq}/bin/jq -s '.[0] * .[1]' "config.sample.json" "${configOverrides}" > "$out/config.json"
+    cp -R webapp $out
+    cp ${jitsi-meet}/libs/external_api.min.js $out/jitsi_external_api.min.js
+    echo "${version}" > "$out/version"
+    jq -s '.[0] * .[1]' "config.sample.json" "${configOverrides}" > "$out/config.json"
 
     runHook postInstall
   '';
@@ -34,6 +81,5 @@ in stdenv.mkDerivation rec {
     maintainers = lib.teams.matrix.members;
     license = lib.licenses.asl20;
     platforms = lib.platforms.all;
-    hydraPlatforms = [];
   };
 }
diff --git a/pkgs/applications/networking/instant-messengers/element/keytar/default.nix b/pkgs/applications/networking/instant-messengers/element/keytar/default.nix
index 9d46657e0ab57..550d01695ca04 100644
--- a/pkgs/applications/networking/instant-messengers/element/keytar/default.nix
+++ b/pkgs/applications/networking/instant-messengers/element/keytar/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, nodejs-14_x, python3, callPackage, removeReferencesTo
+{ lib, stdenv, fetchFromGitHub, nodejs, python3, callPackage, removeReferencesTo
 , fixup_yarn_lock, yarn, pkg-config, libsecret, xcbuild, Security, AppKit, fetchYarnDeps }:
 
 let
@@ -15,12 +15,12 @@ in stdenv.mkDerivation rec {
     sha256 = pinData.srcHash;
   };
 
-  nativeBuildInputs = [ nodejs-14_x python3 yarn pkg-config ]
+  nativeBuildInputs = [ nodejs python3 yarn pkg-config ]
     ++ lib.optional  stdenv.isDarwin xcbuild;
   buildInputs = lib.optionals (!stdenv.isDarwin) [ libsecret ]
     ++ lib.optionals stdenv.isDarwin [ Security AppKit ];
 
-  npm_config_nodedir = nodejs-14_x;
+  npm_config_nodedir = nodejs;
 
   yarnOfflineCache = fetchYarnDeps {
     yarnLock = ./yarn.lock;
diff --git a/pkgs/applications/networking/instant-messengers/element/pin.json b/pkgs/applications/networking/instant-messengers/element/pin.json
index c2bc3d8a89eea..e204b13b90b38 100644
--- a/pkgs/applications/networking/instant-messengers/element/pin.json
+++ b/pkgs/applications/networking/instant-messengers/element/pin.json
@@ -1,6 +1,7 @@
 {
-  "version": "1.10.13",
-  "desktopSrcHash": "tTvpjSIipvmJIfZF1RiRtlDjsKJYHoPQ6XSqI8TGH14=",
-  "desktopYarnHash": "105bphn4ga4f0n60cvrlppf8wim2c1qy09g8arraadcxymds98n6",
-  "webHash": "1zxjlzlxh2gbswa1063zbw6ahwlcnvyqkvbwj92vk873c3g8ba72"
+  "version": "1.11.4",
+  "desktopSrcHash": "lIyx1gpPkuOGzHTbkHKNiGsVKEkKUIz/8sj/KZ9XK9o=",
+  "desktopYarnHash": "0m0zzq2wbk7h7anjmj586089j2qgsd5cj99rmi2hmsmssq63fmwk",
+  "webSrcHash": "bZ5SKydrQE+qLQEZ5qS7F1RC33nHZneUd8OwrV1H2T4=",
+  "webYarnHash": "1yji94xcigz54bbhvssj2pgncw9fgal7mzw9h9bfwmny0pjh8c4p"
 }
diff --git a/pkgs/applications/networking/instant-messengers/element/seshat/default.nix b/pkgs/applications/networking/instant-messengers/element/seshat/default.nix
index 3c4ac2f52ae1b..97d6a7d5204a0 100644
--- a/pkgs/applications/networking/instant-messengers/element/seshat/default.nix
+++ b/pkgs/applications/networking/instant-messengers/element/seshat/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, rustPlatform, fetchFromGitHub, callPackage, sqlcipher, nodejs-14_x, python3, yarn, fixup_yarn_lock, CoreServices, fetchYarnDeps, removeReferencesTo }:
+{ lib, stdenv, rustPlatform, fetchFromGitHub, callPackage, sqlcipher, nodejs, python3, yarn, fixup_yarn_lock, CoreServices, fetchYarnDeps, removeReferencesTo }:
 
 let
   pinData = lib.importJSON ./pin.json;
@@ -16,10 +16,10 @@ in rustPlatform.buildRustPackage rec {
 
   sourceRoot = "source/seshat-node/native";
 
-  nativeBuildInputs = [ nodejs-14_x python3 yarn ];
+  nativeBuildInputs = [ nodejs python3 yarn ];
   buildInputs = [ sqlcipher ] ++ lib.optional stdenv.isDarwin CoreServices;
 
-  npm_config_nodedir = nodejs-14_x;
+  npm_config_nodedir = nodejs;
 
   yarnOfflineCache = fetchYarnDeps {
     yarnLock = src + "/seshat-node/yarn.lock";
diff --git a/pkgs/applications/networking/instant-messengers/element/update.sh b/pkgs/applications/networking/instant-messengers/element/update.sh
index 364f63a18bb61..976b6cb0ba8fc 100755
--- a/pkgs/applications/networking/instant-messengers/element/update.sh
+++ b/pkgs/applications/networking/instant-messengers/element/update.sh
@@ -18,17 +18,26 @@ fi
 # strip leading "v"
 version="${version#v}"
 
-desktop_src="https://raw.githubusercontent.com/vector-im/element-desktop/v$version"
+# Element Web
+web_src="https://raw.githubusercontent.com/vector-im/element-web/v$version"
+web_src_hash=$(nix-prefetch-github vector-im element-web --rev v${version} | jq -r .sha256)
 
-desktop_src_hash=$(nix-prefetch-github vector-im element-desktop --rev v${version} | jq -r .sha256)
-web_hash=$(nix-prefetch-url "https://github.com/vector-im/element-web/releases/download/v$version/element-v$version.tar.gz")
+web_tmpdir=$(mktemp -d)
+trap 'rm -rf "$web_tmpdir"' EXIT
+
+pushd $web_tmpdir
+wget "$web_src/yarn.lock"
+web_yarn_hash=$(prefetch-yarn-deps yarn.lock)
+popd
 
-wget "$desktop_src/package.json" -O element-desktop-package.json
+# Element Desktop
+desktop_src="https://raw.githubusercontent.com/vector-im/element-desktop/v$version"
+desktop_src_hash=$(nix-prefetch-github vector-im element-desktop --rev v${version} | jq -r .sha256)
 
-tmpdir=$(mktemp -d)
-trap 'rm -rf "$tmpdir"' EXIT
+desktop_tmpdir=$(mktemp -d)
+trap 'rm -rf "$desktop_tmpdir"' EXIT
 
-pushd $tmpdir
+pushd $desktop_tmpdir
 wget "$desktop_src/yarn.lock"
 desktop_yarn_hash=$(prefetch-yarn-deps yarn.lock)
 popd
@@ -38,6 +47,7 @@ cat > pin.json << EOF
   "version": "$version",
   "desktopSrcHash": "$desktop_src_hash",
   "desktopYarnHash": "$desktop_yarn_hash",
-  "webHash": "$web_hash"
+  "webSrcHash": "$web_src_hash",
+  "webYarnHash": "$web_yarn_hash"
 }
 EOF
diff --git a/pkgs/applications/networking/instant-messengers/feishu/default.nix b/pkgs/applications/networking/instant-messengers/feishu/default.nix
new file mode 100644
index 0000000000000..c332126c25f3a
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/feishu/default.nix
@@ -0,0 +1,186 @@
+{ addOpenGLRunpath
+, alsa-lib
+, at-spi2-atk
+, at-spi2-core
+, atk
+, autoPatchelfHook
+, cairo
+, cups
+, dbus
+, dpkg
+, expat
+, fetchurl
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, glibc
+, gnutls
+, gtk3
+, lib
+, libGL
+, libX11
+, libXScrnSaver
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXext
+, libXfixes
+, libXi
+, libXrandr
+, libXrender
+, libXtst
+, libappindicator-gtk3
+, libcxx
+, libdbusmenu
+, libdrm
+, libgcrypt
+, libglvnd
+, libnotify
+, libuuid
+, libxcb
+, libxkbcommon
+, libxkbfile
+, libxshmfence
+, makeShellWrapper
+, mesa
+, nspr
+, nss
+, pango
+, pciutils
+, pipewire
+, pixman
+, stdenv
+, systemd
+, wayland
+, wrapGAppsHook
+, xdg-utils
+
+# for custom command line arguments, e.g. "--use-gl=desktop"
+, commandLineArgs ? ""
+}:
+
+stdenv.mkDerivation rec {
+  version = "5.14.14";
+  pname = "feishu";
+  packageHash = "2844ab12b34f"; # A hash value used in the download url
+
+  src = fetchurl {
+    url = "https://sf3-cn.feishucdn.com/obj/ee-appcenter/${packageHash}/Feishu-linux_x64-${version}.deb";
+    sha256 = "c0ca999edc10d8ada08c46b33b15d7db0ced264248abd3ebfdb895d8457e1bec";
+  };
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    makeShellWrapper
+    dpkg
+  ];
+
+  buildInputs = [
+    gtk3
+
+    # for autopatchelf
+    alsa-lib
+    cups
+    libXdamage
+    libdrm
+    libxshmfence
+    mesa
+    nspr
+    nss
+  ];
+
+  rpath = lib.makeLibraryPath [
+    alsa-lib
+    at-spi2-atk
+    at-spi2-core
+    atk
+    cairo
+    cups
+    dbus
+    expat
+    fontconfig
+    freetype
+    gdk-pixbuf
+    glib
+    glibc
+    gnutls
+    libGL
+    libX11
+    libXScrnSaver
+    libXcomposite
+    libXcursor
+    libXdamage
+    libXext
+    libXfixes
+    libXi
+    libXrandr
+    libXrender
+    libXtst
+    libappindicator-gtk3
+    libcxx
+    libdbusmenu
+    libdrm
+    libgcrypt
+    libglvnd
+    libnotify
+    libuuid
+    libxcb
+    libxkbcommon
+    libxkbfile
+    libxshmfence
+    mesa
+    nspr
+    nss
+    pango
+    pciutils
+    pipewire
+    pixman
+    stdenv.cc.cc
+    systemd
+    wayland
+    xdg-utils
+  ];
+
+  dontUnpack = true;
+  installPhase = ''
+    # This deb file contains a setuid binary,
+    # so 'dpkg -x' doesn't work here.
+    dpkg --fsys-tarfile $src | tar --extract
+    mkdir -p $out
+    mv usr/share $out/
+    mv opt/ $out/
+
+    substituteInPlace $out/share/applications/bytedance-feishu.desktop \
+      --replace /usr/bin/bytedance-feishu-stable $out/opt/bytedance/feishu/bytedance-feishu
+
+    # Wrap feishu and vulcan
+    # Feishu is the main executable, vulcan is the builtin browser
+    for executable in $out/opt/bytedance/feishu/{feishu,vulcan/vulcan}; do
+      wrapProgram $executable \
+        --prefix XDG_DATA_DIRS    :  "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
+        --prefix LD_LIBRARY_PATH  :  ${rpath}:$out/opt/bytedance/feishu:${addOpenGLRunpath.driverLink}/share \
+        --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}" \
+        ${lib.optionalString (commandLineArgs!="") "--add-flags ${lib.escapeShellArg commandLineArgs}"}
+    done
+
+    mkdir -p $out/share/icons/hicolor
+    base="$out/opt/bytedance/feishu"
+    for size in 16 24 32 48 64 128 256; do
+      mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps
+      ln -s $base/product_logo_$size.png $out/share/icons/hicolor/''${size}x''${size}/apps/bytedance-feishu.png
+    done
+
+    mkdir -p $out/bin
+    ln -s $out/opt/bytedance/feishu/bytedance-feishu $out/bin/bytedance-feishu
+  '';
+
+  meta = with lib; {
+    description = "An all-in-one collaboration suite";
+    homepage = "https://www.feishu.cn/en/";
+    downloadPage = "https://www.feishu.cn/en/#en_home_download_block";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ billhuang ];
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/ferdi/default.nix b/pkgs/applications/networking/instant-messengers/ferdi/default.nix
index 90ab331426a09..82f808be3b6e8 100644
--- a/pkgs/applications/networking/instant-messengers/ferdi/default.nix
+++ b/pkgs/applications/networking/instant-messengers/ferdi/default.nix
@@ -26,9 +26,13 @@ mkFranzDerivation' rec {
   meta = with lib; {
     description = "Combine your favorite messaging services into one application";
     homepage = "https://getferdi.com/";
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
     license = licenses.asl20;
     maintainers = with maintainers; [ davidtwco ma27 ];
     platforms = [ "x86_64-linux" ];
     hydraPlatforms = [ ];
+    knownVulnerabilities = [
+      "CVE-2022-32320"
+    ];
   };
 }
diff --git a/pkgs/applications/networking/instant-messengers/ferdium/default.nix b/pkgs/applications/networking/instant-messengers/ferdium/default.nix
new file mode 100644
index 0000000000000..d0d24b1b9173b
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/ferdium/default.nix
@@ -0,0 +1,22 @@
+{ lib, mkFranzDerivation, fetchurl, xorg }:
+
+mkFranzDerivation rec {
+  pname = "ferdium";
+  name = "Ferdium";
+  version = "6.1.0";
+  src = fetchurl {
+    url = "https://github.com/ferdium/ferdium-app/releases/download/v${version}/Ferdium-linux-${version}-amd64.deb";
+    sha256 = "sha256-19HDEbp+zqd1VjRoT3yaGEDAwElKlhCm31bemdK90VU=";
+  };
+
+  extraBuildInputs = [ xorg.libxshmfence ];
+
+  meta = with lib; {
+    description = "All your services in one place built by the community";
+    homepage = "https://ferdium.org/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ magnouvean ];
+    platforms = [ "x86_64-linux" ];
+    hydraPlatforms = [ ];
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/fluffychat/default.nix b/pkgs/applications/networking/instant-messengers/fluffychat/default.nix
index 565c44f72e926..d50e7118cc18d 100644
--- a/pkgs/applications/networking/instant-messengers/fluffychat/default.nix
+++ b/pkgs/applications/networking/instant-messengers/fluffychat/default.nix
@@ -10,7 +10,7 @@ flutter.mkFlutterApp rec {
   pname = "fluffychat";
   version = "1.2.0";
 
-  vendorHash = "sha256-j5opwEFifa+DMG7Uziv4SWEPVokD6OSq8mSIr0AdDL0=";
+  vendorHash = "sha256-co+bnsVIyg42JpM9FimfGEjrd6A99GlBeow1Dgv7NBI=";
 
   src = fetchFromGitLab {
     owner = "famedly";
diff --git a/pkgs/applications/networking/instant-messengers/fractal-next/default.nix b/pkgs/applications/networking/instant-messengers/fractal-next/default.nix
new file mode 100644
index 0000000000000..e273127559b86
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/fractal-next/default.nix
@@ -0,0 +1,76 @@
+{ stdenv
+, lib
+, fetchFromGitLab
+, meson
+, ninja
+, rustPlatform
+, pkg-config
+, glib
+, gtk4
+, gtksourceview5
+, libadwaita
+, gstreamer
+, gst-plugins-base
+, gst-plugins-bad
+, libsecret
+, desktop-file-utils
+, appstream-glib
+, openssl
+, pipewire
+, libshumate
+, wrapGAppsHook4
+}:
+
+stdenv.mkDerivation rec {
+  pname = "fractal-next";
+  version = "unstable-2022-07-21";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "GNOME";
+    repo = "fractal";
+    rev = "d076bd24419ac6172c2c1a7cc023a5dca938ef07";
+    hash = "sha256-2bS6PZuMbR/VgSpMD31sQR4ZkhWNu1CLSl6MX0f/m5A=";
+  };
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    hash = "sha256-CJD9YmL06ELR3X/gIrsVCpDyJnWPbH/JF4HlXvWjiZ8=";
+  };
+
+  nativeBuildInputs = [
+    glib
+    gtk4
+    meson
+    ninja
+    pkg-config
+    rustPlatform.bindgenHook
+    rustPlatform.cargoSetupHook
+    rustPlatform.rust.cargo
+    rustPlatform.rust.rustc
+    desktop-file-utils
+    appstream-glib
+    wrapGAppsHook4
+  ];
+
+  buildInputs = [
+    glib
+    gstreamer
+    gst-plugins-base
+    gst-plugins-bad
+    gtk4
+    gtksourceview5
+    libadwaita
+    libsecret
+    openssl
+    pipewire
+    libshumate
+  ];
+
+  meta = with lib; {
+    description = "Matrix group messaging app (development version)";
+    homepage = "https://gitlab.gnome.org/GNOME/fractal";
+    license = licenses.gpl3Plus;
+    maintainers = teams.gnome.members ++ (with maintainers; [ anselmschueler ]);
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/franz/default.nix b/pkgs/applications/networking/instant-messengers/franz/default.nix
index b3d9194c6fe4b..a910105fde808 100644
--- a/pkgs/applications/networking/instant-messengers/franz/default.nix
+++ b/pkgs/applications/networking/instant-messengers/franz/default.nix
@@ -11,6 +11,7 @@ mkFranzDerivation rec {
   meta = with lib; {
     description = "A free messaging app that combines chat & messaging services into one application";
     homepage = "https://meetfranz.com";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.free;
     maintainers = [ maintainers.davidtwco ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/applications/networking/instant-messengers/franz/generic.nix b/pkgs/applications/networking/instant-messengers/franz/generic.nix
index 7438e5496acd4..44546aabe2239 100644
--- a/pkgs/applications/networking/instant-messengers/franz/generic.nix
+++ b/pkgs/applications/networking/instant-messengers/franz/generic.nix
@@ -85,9 +85,10 @@ stdenv.mkDerivation rec {
   dontWrapGApps = true;
 
   postFixup = ''
+    # make xdg-open overrideable at runtime
     wrapProgram $out/opt/${name}/${pname} \
       --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath runtimeDependencies}" \
-      --prefix PATH : ${xdg-utils}/bin \
+      --suffix PATH : ${xdg-utils}/bin \
       "''${gappsWrapperArgs[@]}"
   '';
 }
diff --git a/pkgs/applications/networking/instant-messengers/gajim/default.nix b/pkgs/applications/networking/instant-messengers/gajim/default.nix
index 7c18ebf763c8c..2cd6b897d7686 100644
--- a/pkgs/applications/networking/instant-messengers/gajim/default.nix
+++ b/pkgs/applications/networking/instant-messengers/gajim/default.nix
@@ -22,11 +22,11 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "gajim";
-  version = "1.4.3";
+  version = "1.4.7";
 
   src = fetchurl {
     url = "https://gajim.org/downloads/${lib.versions.majorMinor version}/gajim-${version}.tar.gz";
-    sha256 = "sha256:0n6v96pwgds8655877fjgsphq4rd4gb9mz7cbqp4nkd4m7kvr3xv";
+    sha256 = "sha256-GkgHvzo0sxBIgk5P/3Yr0eFiL0ZOc6QmwJaE3Ck2hPM=";
   };
 
   buildInputs = [
diff --git a/pkgs/applications/networking/instant-messengers/gitter/default.nix b/pkgs/applications/networking/instant-messengers/gitter/default.nix
index 8ed85cba8546f..04d8909f3d892 100644
--- a/pkgs/applications/networking/instant-messengers/gitter/default.nix
+++ b/pkgs/applications/networking/instant-messengers/gitter/default.nix
@@ -94,6 +94,7 @@ in stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Where developers come to talk";
     downloadPage = "https://gitter.im/apps";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.mit;
     maintainers = [ maintainers.imalison ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/applications/networking/instant-messengers/gotktrix/default.nix b/pkgs/applications/networking/instant-messengers/gotktrix/default.nix
index 9cab98156c81c..d0f9f3d9e52ea 100644
--- a/pkgs/applications/networking/instant-messengers/gotktrix/default.nix
+++ b/pkgs/applications/networking/instant-messengers/gotktrix/default.nix
@@ -10,16 +10,16 @@
 
 buildGoModule rec {
   pname = "gotktrix";
-  version = "0.1.3";
+  version = "0.1.4";
 
   src = fetchFromGitHub {
     owner = "diamondburned";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-/UDXqN7FnFvbiXp3pID1WbNfCuKDsMrFQvL1101xxOo=";
+    sha256 = "sha256-ZaE7L43fA9L5WbTAsBiIxlwYgjl1hMrtfrraAROz+7k=";
   };
 
-  vendorSha256 = "sha256-xA2DW4v6aT4fEW2WSa96oRr5Yrb2HoR054V1+BiWSvk=";
+  vendorSha256 = "sha256-k6T44aH1NogyrbUnflfEHkp0zpOOH1YFly/X2kwbMzs=";
 
   buildInputs = [
     gtk4
@@ -32,6 +32,12 @@ buildGoModule rec {
   # Checking requires a working display
   doCheck = false;
 
+  postInstall = ''
+    echo 'X-Purism-FormFactor=Workstation;Mobile;' >> .nix/com.github.diamondburned.gotktrix.desktop
+    install -Dm444 .nix/com.github.diamondburned.gotktrix.desktop -t $out/share/applications/
+    install -Dm444 .github/logo-256.png -T $out/share/icons/hicolor/256x256/apps/gotktrix.png
+  '';
+
   meta = with lib; {
     description = "Matrix client written in Go using GTK4";
     homepage = "https://github.com/diamondburned/gotktrix";
diff --git a/pkgs/applications/networking/instant-messengers/hipchat/default.nix b/pkgs/applications/networking/instant-messengers/hipchat/default.nix
index 6a677c9e0d612..8debefa0c11c4 100644
--- a/pkgs/applications/networking/instant-messengers/hipchat/default.nix
+++ b/pkgs/applications/networking/instant-messengers/hipchat/default.nix
@@ -81,6 +81,7 @@ in stdenv.mkDerivation {
   meta = with lib; {
     description = "Desktop client for HipChat services";
     homepage = "http://www.hipchat.com";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
     platforms = [ "x86_64-linux" ];
     maintainers = with maintainers; [ puffnfresh ];
diff --git a/pkgs/applications/networking/instant-messengers/jami/client-gnome.nix b/pkgs/applications/networking/instant-messengers/jami/client-gnome.nix
deleted file mode 100644
index 8cb748f540599..0000000000000
--- a/pkgs/applications/networking/instant-messengers/jami/client-gnome.nix
+++ /dev/null
@@ -1,64 +0,0 @@
-{ version
-, src
-, jami-meta
-, stdenv
-, lib
-, pkg-config
-, cmake
-, wrapQtAppsHook
-, wrapGAppsHook
-, gtk3-x11
-, networkmanager # for libnm
-, libayatana-appindicator
-, libnotify
-, clutter-gtk
-, libcanberra-gtk3
-, webkitgtk
-, qrencode
-, jami-libclient
-, qttools
-}:
-
-stdenv.mkDerivation {
-  pname = "jami-client-gnome";
-  inherit version src;
-
-  sourceRoot = "source/client-gnome";
-
-  preConfigure = ''
-    echo ${version} > version.txt
-  '';
-
-  nativeBuildInputs = [
-    pkg-config
-    cmake
-    wrapGAppsHook
-    wrapQtAppsHook
-  ];
-  # To spare double wrapping
-  dontWrapGApps = true;
-  preFixup = ''
-    qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
-    # Users that set CLUTTER_BACKEND=wayland in their default environment will
-    # encounter a segfault due to:
-    # https://git.jami.net/savoirfairelinux/jami-client-gnome/-/issues/1100 .
-    qtWrapperArgs+=("--unset" "CLUTTER_BACKEND")
-  '';
-
-  buildInputs = [
-    qttools
-    jami-libclient
-    gtk3-x11
-    networkmanager
-    libayatana-appindicator
-    libnotify
-    clutter-gtk
-    libcanberra-gtk3
-    webkitgtk
-    qrencode
-  ];
-
-  meta = jami-meta // {
-    description = "The client based on GTK" + jami-meta.description;
-  };
-}
diff --git a/pkgs/applications/networking/instant-messengers/jami/client-qt.nix b/pkgs/applications/networking/instant-messengers/jami/client-qt.nix
index 0c952fd1ecad2..840606bf19a92 100644
--- a/pkgs/applications/networking/instant-messengers/jami/client-qt.nix
+++ b/pkgs/applications/networking/instant-messengers/jami/client-qt.nix
@@ -1,27 +1,30 @@
 { version
 , src
 , jami-meta
-, mkDerivation
 , lib
+, stdenv
 , pkg-config
 , cmake
 , networkmanager # for libnm
 , python3
 , qttools # for translations
 , wrapQtAppsHook
+, ffmpeg-jami
+, jami-daemon
 , libnotify
-, qrencode
-, qtwebengine
+, qt5compat
+, qtbase
 , qtdeclarative
-, qtquickcontrols2
+, qrencode
 , qtmultimedia
+, qtnetworkauth
 , qtsvg
+, qtwebengine
 , qtwebchannel
-, qtgraphicaleffects # no gui without this
-, jami-libclient
+, withWebengine ? false
 }:
 
-mkDerivation {
+stdenv.mkDerivation {
   pname = "jami-client-qt";
   inherit version src;
 
@@ -33,6 +36,7 @@ mkDerivation {
   '';
 
   nativeBuildInputs = [
+    wrapQtAppsHook
     pkg-config
     cmake
     python3
@@ -40,17 +44,32 @@ mkDerivation {
   ];
 
   buildInputs = [
-    jami-libclient
-    networkmanager
+    ffmpeg-jami
+    jami-daemon
     libnotify
+    networkmanager
+    qtbase
+    qt5compat
     qrencode
-    qtwebengine
+    qtnetworkauth
     qtdeclarative
-    qtquickcontrols2
     qtmultimedia
     qtsvg
     qtwebchannel
-    qtgraphicaleffects
+  ] ++ lib.optionals withWebengine [
+    qtwebengine
+  ];
+
+  cmakeFlags = [
+    "-DRING_BUILD_DIR=${jami-daemon}/include"
+    "-DRING_XML_INTERFACES_DIR=${jami-daemon}/share/dbus-1/interfaces"
+  ] ++ lib.optionals (!withWebengine) [
+    "-DWITH_WEBENGINE=false"
+  ];
+
+  qtWrapperArgs = [
+    # With wayland the titlebar is not themed and the wmclass is wrong.
+    "--set-default QT_QPA_PLATFORM xcb"
   ];
 
   meta = jami-meta // {
diff --git a/pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_args_common b/pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_args_common
index 9376a38b18749..0aac24e24bb67 100644
--- a/pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_args_common
+++ b/pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_args_common
@@ -19,6 +19,9 @@
 --disable-muxers
 --enable-muxer=rtp
 --enable-muxer=g722
+--enable-muxer=g723_1
+--enable-muxer=g726
+--enable-muxer=g726le
 --enable-muxer=h263
 --enable-muxer=h264
 --enable-muxer=hevc
@@ -43,6 +46,9 @@
 --enable-demuxer=wav
 --enable-demuxer=ac3
 --enable-demuxer=g722
+--enable-demuxer=g723_1
+--enable-demuxer=g726
+--enable-demuxer=g726le
 --enable-demuxer=pcm_mulaw
 --enable-demuxer=pcm_alaw
 --enable-demuxer=pcm_s16be
@@ -59,6 +65,13 @@
 --enable-parser=opus
 --enable-encoder=adpcm_g722
 --enable-decoder=adpcm_g722
+--enable-encoder=adpcm_g726
+--enable-decoder=adpcm_g726
+--enable-encoder=adpcm_g726le
+--enable-decoder=adpcm_g726le
+--enable-decoder=g729
+--enable-encoder=g723_1
+--enable-decoder=g723_1
 --enable-encoder=rawvideo
 --enable-decoder=rawvideo
 --enable-encoder=libx264
diff --git a/pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_patches b/pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_patches
index 2422192c09f52..28f884e66769d 100644
--- a/pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_patches
+++ b/pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_patches
@@ -2,5 +2,6 @@ remove-mjpeg-log.patch
 change-RTCP-ratio.patch
 rtp_ext_abs_send_time.patch
 libopusdec-enable-FEC.patch
-libopusenc-enable-FEC.patch
+libopusenc-reload-packet-loss-at-encode.patch
+ios-disable-b-frames.patch
 screen-sharing-x11-fix.patch
diff --git a/pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_common b/pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_common
new file mode 100644
index 0000000000000..5c3f607e5c0e4
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_common
@@ -0,0 +1,19 @@
+--disable-sound
+--enable-video
+--enable-ext-sound
+--disable-speex-aec
+--disable-g711-codec
+--disable-l16-codec
+--disable-gsm-codec
+--disable-g722-codec
+--disable-g7221-codec
+--disable-speex-codec
+--disable-ilbc-codec
+--disable-opencore-amr
+--disable-silk
+--disable-sdl
+--disable-ffmpeg
+--disable-v4l2
+--disable-openh264
+--disable-resample
+--disable-libwebrtc
diff --git a/pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_linux b/pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_linux
new file mode 100644
index 0000000000000..d1292afe3a29f
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_linux
@@ -0,0 +1 @@
+--enable-epoll
diff --git a/pkgs/applications/networking/instant-messengers/jami/daemon.nix b/pkgs/applications/networking/instant-messengers/jami/daemon.nix
index f39b731132ea0..131ca7b913c06 100644
--- a/pkgs/applications/networking/instant-messengers/jami/daemon.nix
+++ b/pkgs/applications/networking/instant-messengers/jami/daemon.nix
@@ -2,80 +2,38 @@
 , version
 , jami-meta
 , stdenv
-, lib
-, fetchFromGitHub
 , autoreconfHook
 , pkg-config
 , perl # for pod2man
-, ffmpeg_4
-, pjsip
 , alsa-lib
 , asio
 , dbus
 , dbus_cplusplus
+, ffmpeg-jami
 , fmt
 , gmp
+, gnutls
+, http-parser
+, jack
+, jsoncpp
 , libarchive
 , libgit2
 , libnatpmp
-, secp256k1
-, openssl
-, opendht
-, speex
-, webrtc-audio-processing
-, jsoncpp
-, gnutls
-, zlib
-, libyamlcpp
 , libpulseaudio
-, jack
-, udev
 , libupnp
+, libyamlcpp
 , msgpack
+, opendht-jami
+, openssl
+, pjsip-jami
 , restinio
-, http-parser
+, secp256k1
+, speex
+, udev
+, webrtc-audio-processing
+, zlib
 }:
 
-let
-  readLinesToList = with builtins; file: filter (s: isString s && stringLength s > 0) (split "\n" (readFile file));
-
-  ffmpeg-jami = ffmpeg_4.overrideAttrs (old:
-    let
-      patch-src = src + "/daemon/contrib/src/ffmpeg/";
-    in
-    {
-      patches = old.patches ++ (map (x: patch-src + x) (readLinesToList ./config/ffmpeg_patches));
-      configureFlags = old.configureFlags
-        ++ (readLinesToList ./config/ffmpeg_args_common)
-        ++ lib.optionals stdenv.isLinux (readLinesToList ./config/ffmpeg_args_linux)
-        ++ lib.optionals (stdenv.isx86_32 || stdenv.isx86_64) (readLinesToList ./config/ffmpeg_args_x86);
-      outputs = [ "out" "doc" ];
-      meta = old.meta // {
-        # undefined reference to `ff_nlmeans_init_aarch64'
-        broken = stdenv.isAarch64;
-      };
-    });
-
-  pjsip-jami = pjsip.overrideAttrs (old:
-    let
-      src-args = import ./pjproject-src.nix;
-      version = lib.concatStrings (lib.lists.take 7 (lib.stringToCharacters src-args.rev));
-      patch-src = src + "/daemon/contrib/src/pjproject/";
-    in
-    {
-      inherit version;
-
-      src = fetchFromGitHub src-args;
-
-      patches = old.patches ++ (map (x: patch-src + x) (readLinesToList ./config/pjsip_patches));
-    });
-
-  opendht-jami = opendht.override {
-    enableProxyServerAndClient = true;
-    enablePushNotifications = true;
-  };
-
-in
 stdenv.mkDerivation {
   pname = "jami-daemon";
   inherit src version;
@@ -96,26 +54,25 @@ stdenv.mkDerivation {
     ffmpeg-jami
     gmp
     gnutls
+    http-parser
+    jack
+    jsoncpp
     libarchive
     libgit2
     libnatpmp
+    libpulseaudio
+    libupnp
+    libyamlcpp
+    msgpack
     opendht-jami
+    openssl
     pjsip-jami
+    restinio
     secp256k1
-    openssl
     speex
+    udev
     webrtc-audio-processing
     zlib
-    libyamlcpp
-    jsoncpp
-    libpulseaudio
-    jack
-    opendht
-    libupnp
-    udev
-    msgpack
-    restinio
-    http-parser
   ];
 
   doCheck = false; # The tests fail to compile due to missing headers.
@@ -124,9 +81,6 @@ stdenv.mkDerivation {
 
   passthru = {
     updateScript = ./update.sh;
-    ffmpeg = ffmpeg-jami;
-    pjsip = pjsip-jami;
-    opendht = opendht-jami;
   };
 
   meta = jami-meta // {
diff --git a/pkgs/applications/networking/instant-messengers/jami/default.nix b/pkgs/applications/networking/instant-messengers/jami/default.nix
index ef8959b57a97f..690f6534e9389 100644
--- a/pkgs/applications/networking/instant-messengers/jami/default.nix
+++ b/pkgs/applications/networking/instant-messengers/jami/default.nix
@@ -1,24 +1,30 @@
 { stdenv
 , lib
 , callPackage
+, fetchFromGitHub
 , fetchzip
+, ffmpeg_4
+, pjsip
+, opendht
 , jack
 , udev
-, libsForQt5
+, qt6Packages
 }:
 
-rec {
-  version = "20211223.2.37be4c3";
+let
+  version = "20220726.1515.da8d1da";
 
   src = fetchzip {
     url = "https://dl.jami.net/release/tarballs/jami_${version}.tar.gz";
-    sha256 = "1zw9azwmxr4991nq5kl527lbwlj7psrissgvrkl1kxxbfbdncbhh";
+    hash = "sha256-yK+xo+YpNYmmWyNAE31hiL6HLvDdEFkm8FO6LQmPCL0=";
 
     stripRoot = false;
     postFetch = ''
       cd $out
-      mv ring-project/* ./
-      rm -r ring-project.rst ring-project client-android client-ios client-macosx client-uwp
+      mv jami-project/daemon ./
+      mv jami-project/client-qt ./
+      mv jami-project/COPYING ./
+      rm -r jami-project.rst jami-project
       rm daemon/contrib/tarballs/*
     '';
   };
@@ -31,11 +37,56 @@ rec {
     maintainers = [ maintainers.linsui ];
   };
 
-  jami-daemon = callPackage ./daemon.nix { inherit version src udev jack jami-meta; };
+  readLinesToList = with builtins; file: filter (s: isString s && stringLength s > 0) (split "\n" (readFile file));
+in
+rec {
+  ffmpeg-jami = ffmpeg_4.overrideAttrs (old:
+    let
+      patch-src = src + "/daemon/contrib/src/ffmpeg/";
+    in
+    {
+      patches = old.patches ++ (map (x: patch-src + x) (readLinesToList ./config/ffmpeg_patches));
+      configureFlags = old.configureFlags
+        ++ (readLinesToList ./config/ffmpeg_args_common)
+        ++ lib.optionals stdenv.isLinux (readLinesToList ./config/ffmpeg_args_linux)
+        ++ lib.optionals (stdenv.isx86_32 || stdenv.isx86_64) (readLinesToList ./config/ffmpeg_args_x86);
+      outputs = [ "out" "doc" ];
+      meta = old.meta // {
+        # undefined reference to `ff_nlmeans_init_aarch64'
+        broken = stdenv.isAarch64;
+      };
+    });
+
+  pjsip-jami = pjsip.overrideAttrs (old:
+    let
+      patch-src = src + "/daemon/contrib/src/pjproject/";
+    in
+    rec {
+      version = "4af5d666d18837abaac94c8ec6bfc84984dcf1e2";
 
-  jami-libclient = libsForQt5.callPackage ./libclient.nix { inherit version src jami-meta; };
+      src = fetchFromGitHub {
+        owner = "savoirfairelinux";
+        repo = "pjproject";
+        rev = version;
+        sha256 = "sha256-ENRfQh/HCXqInTV0tu8tGQO7+vTbST6XXpptERXMACE=";
+      };
 
-  jami-client-gnome = libsForQt5.callPackage ./client-gnome.nix { inherit version src jami-meta; };
+      patches = old.patches ++ (map (x: patch-src + x) (readLinesToList ./config/pjsip_patches));
 
-  jami-client-qt = libsForQt5.callPackage ./client-qt.nix { inherit version src jami-meta; };
+      configureFlags = (readLinesToList ./config/pjsip_args_common)
+        ++ lib.optionals stdenv.isLinux (readLinesToList ./config/pjsip_args_linux);
+    });
+
+  opendht-jami = opendht.override {
+    enableProxyServerAndClient = true;
+    enablePushNotifications = true;
+  };
+
+  jami-daemon = callPackage ./daemon.nix {
+    inherit version src udev jack jami-meta ffmpeg-jami pjsip-jami opendht-jami;
+  };
+
+  jami-client-qt = qt6Packages.callPackage ./client-qt.nix {
+    inherit version src jami-meta ffmpeg-jami;
+  };
 }
diff --git a/pkgs/applications/networking/instant-messengers/jami/libclient-include-path.patch b/pkgs/applications/networking/instant-messengers/jami/libclient-include-path.patch
deleted file mode 100644
index 3ae017eb458bd..0000000000000
--- a/pkgs/applications/networking/instant-messengers/jami/libclient-include-path.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git i/CMakeLists.txt w/CMakeLists.txt
-index 0ee77dba..767e19df 100644
---- i/CMakeLists.txt
-+++ w/CMakeLists.txt
-@@ -635,7 +635,7 @@ if(ENABLE_SHARED)
-     )
- endif()
- 
--SET(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include)
-+SET(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_FULL_INCLUDEDIR})
- 
- INSTALL( FILES ${libringclient_LIB_HDRS} ${libringclient_extra_LIB_HDRS}
-   DESTINATION ${INCLUDE_INSTALL_DIR}/libringclient
diff --git a/pkgs/applications/networking/instant-messengers/jami/libclient.nix b/pkgs/applications/networking/instant-messengers/jami/libclient.nix
deleted file mode 100644
index b5ea7431b9150..0000000000000
--- a/pkgs/applications/networking/instant-messengers/jami/libclient.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ version
-, src
-, jami-meta
-, stdenv
-, lib
-, pkg-config
-, cmake
-, qtbase
-, jami-daemon
-}:
-
-stdenv.mkDerivation {
-  pname = "jami-libclient";
-  inherit version src;
-
-  sourceRoot = "source/lrc";
-
-  nativeBuildInputs = [
-    cmake
-    pkg-config
-  ];
-
-  buildInputs = [
-    jami-daemon
-  ];
-
-  patches = [
-    # Fix path to include dir when using split outputs
-    ./libclient-include-path.patch
-  ];
-
-  propagatedBuildInputs = [
-    qtbase
-  ];
-  outputs = [ "out" "dev" ];
-
-  cmakeFlags = [
-    "-DRING_BUILD_DIR=${jami-daemon}/include"
-    "-DRING_XML_INTERFACES_DIR=${jami-daemon}/share/dbus-1/interfaces"
-  ];
-
-  dontWrapQtApps = true;
-
-  meta = jami-meta // {
-    description = "The client library" + jami-meta.description;
-    license = lib.licenses.lgpl21Plus;
-  };
-}
diff --git a/pkgs/applications/networking/instant-messengers/jami/pjproject-src.nix b/pkgs/applications/networking/instant-messengers/jami/pjproject-src.nix
deleted file mode 100644
index 76e88d8875556..0000000000000
--- a/pkgs/applications/networking/instant-messengers/jami/pjproject-src.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  owner = "savoirfairelinux";
-  repo = "pjproject";
-  rev = "e1f389d0b905011e0cb62cbdf7a8b37fc1bcde1a";
-  sha256 = "0inpmyb6mhrzr0g309d6clkc99lddqdvyf9xajz0igvgp9pvgpza";
-}
diff --git a/pkgs/applications/networking/instant-messengers/jami/update.sh b/pkgs/applications/networking/instant-messengers/jami/update.sh
index 10d9bb885c35d..abc7728e0703f 100755
--- a/pkgs/applications/networking/instant-messengers/jami/update.sh
+++ b/pkgs/applications/networking/instant-messengers/jami/update.sh
@@ -3,11 +3,15 @@
 
 set -e
 
-jami_dir="$( dirname "${BASH_SOURCE[0]}" )"
+jami_dir=$(readlink -e $(dirname "${BASH_SOURCE[0]}"))
+
+cd $jami_dir/../../../../..
 
 # Update src version and hash
 version=$(curl -s 'https://dl.jami.net/release/tarballs/?C=M;O=D' | sed -n -E 's/^.*jami_([0-9.a-f]+)\.tar\.gz.*$/\1/p' | head -n 1)
-update-source-version jami-libclient "$version" --file=pkgs/applications/networking/instant-messengers/jami/default.nix
+echo "Latest version: ${version}"
+
+update-source-version jami-daemon "$version" --file=$jami_dir/default.nix
 
 src=$(nix-build --no-out-link -A jami-libclient.src)
 
@@ -17,7 +21,7 @@ mkdir -p $config_dir
 ffmpeg_rules="${src}/daemon/contrib/src/ffmpeg/rules.mak"
 
 # Update FFmpeg patches
-ffmpeg_patches=$(sed -n '/.sum-ffmpeg:/,/HAVE_IOS/p' ${ffmpeg_rules} | sed -n -E 's/.*ffmpeg\/(.*patch).*/\1/p')
+ffmpeg_patches=$(sed -n '/^ffmpeg:/,/^$/p' ${ffmpeg_rules} | sed -n -E 's/.*ffmpeg\/(.*patch).*/\1/p')
 echo -e "Patches for FFmpeg:\n${ffmpeg_patches}\n"
 echo "${ffmpeg_patches}" > "$config_dir/ffmpeg_patches"
 
@@ -43,8 +47,15 @@ echo "${pjsip_patches}" > "$config_dir/pjsip_patches"
 
 # Update pjsip version
 pjsip_version=$(sed -n -E 's/.*PJPROJECT_VERSION := ([0-9a-f]+).*/\1/p' ${src}/daemon/contrib/src/pjproject/rules.mak)
-nix-prefetch fetchFromGitHub \
-  --owner savoirfairelinux \
-  --repo pjproject \
-  --rev ${pjsip_version} \
-  --output nix > "${jami_dir}/pjproject-src.nix"
+update-source-version jami-daemon.pjsip "$pjsip_version" --file=pkgs/applications/networking/instant-messengers/jami/daemon.nix
+
+pjsip_rules="${src}/daemon/contrib/src/pjproject/rules.mak"
+
+# Update pjsip args
+pjsip_args_common=$(sed -n '/PJPROJECT_OPTIONS :=/,/with-gnutls/p' ${pjsip_rules} | sed -n -E 's/.*(--[0-9a-z=_-]+).*\\/\1/p')
+echo -e "Common args for pjsip:\n${pjsip_args_common}\n"
+echo "${pjsip_args_common}" > "$config_dir/pjsip_args_common"
+
+pjsip_args_linux=$(sed -n '/HAVE_LINUX/,/endif/p' ${pjsip_rules} | sed -n -E 's/.*(--[0-9a-z=_-]+).*/\1/p')
+echo -e "Linux args for pjsip:\n${pjsip_args_linux}\n"
+echo "${pjsip_args_linux}" > "$config_dir/pjsip_args_linux"
diff --git a/pkgs/applications/networking/instant-messengers/jitsi/default.nix b/pkgs/applications/networking/instant-messengers/jitsi/default.nix
index 9646738780802..0ef6b2e74d7b8 100644
--- a/pkgs/applications/networking/instant-messengers/jitsi/default.nix
+++ b/pkgs/applications/networking/instant-messengers/jitsi/default.nix
@@ -65,7 +65,10 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://jitsi.org/";
     description = "Open Source Video Calls and Chat";
-    sourceProvenance = with sourceTypes; [ binaryBytecode ];
+    sourceProvenance = with sourceTypes; [
+      binaryBytecode
+      binaryNativeCode
+    ];
     license = licenses.lgpl21Plus;
     platforms = platforms.linux;
     maintainers = teams.jitsi.members;
diff --git a/pkgs/applications/networking/instant-messengers/linphone/default.nix b/pkgs/applications/networking/instant-messengers/linphone/default.nix
index 306a53f0a3c0e..80b733955d770 100644
--- a/pkgs/applications/networking/instant-messengers/linphone/default.nix
+++ b/pkgs/applications/networking/instant-messengers/linphone/default.nix
@@ -33,7 +33,7 @@
 
 mkDerivation rec {
   pname = "linphone-desktop";
-  version = "4.4.1";
+  version = "4.4.8";
 
   src = fetchFromGitLab {
     domain = "gitlab.linphone.org";
@@ -41,7 +41,7 @@ mkDerivation rec {
     group = "BC";
     repo = pname;
     rev = version;
-    sha256 = "sha256-BBOTyKMZikkxMJSmzAuChVHpVeCvbAimn1K3REGbqEg=";
+    sha256 = "sha256-o/IyUvIthCrka6oTa0xMKg0sDj4zdon3kBr2gJ2Id8w=";
   };
 
   patches = [
@@ -83,6 +83,9 @@ mkDerivation rec {
   cmakeFlags = [
     "-DMINIZIP_INCLUDE_DIRS=${minizip2}/include"
     "-DMINIZIP_LIBRARIES=minizip"
+
+    # RPATH of binary /nix/store/.../bin/... contains a forbidden reference to /build/
+    "-DCMAKE_SKIP_BUILD_RPATH=ON"
   ];
 
   # The default install phase fails because the paths are somehow messed up in
diff --git a/pkgs/applications/networking/instant-messengers/matrix-commander/default.nix b/pkgs/applications/networking/instant-messengers/matrix-commander/default.nix
index ad3248fabba94..1535b694231e2 100644
--- a/pkgs/applications/networking/instant-messengers/matrix-commander/default.nix
+++ b/pkgs/applications/networking/instant-messengers/matrix-commander/default.nix
@@ -1,38 +1,58 @@
-{ stdenv, lib, fetchFromGitHub, cacert, python3 }:
+{ lib
+, fetchFromGitHub
+, buildPythonApplication
+, cacert
+, setuptools
+, matrix-nio
+, python-magic
+, markdown
+, pillow
+, urllib3
+, aiofiles
+, notify2
+, dbus-python
+, pyxdg
+, python-olm
+}:
 
-stdenv.mkDerivation {
+buildPythonApplication rec {
   pname = "matrix-commander";
-  version = "unstable-2021-08-05";
+  version = "3.5.0";
 
   src = fetchFromGitHub {
     owner = "8go";
     repo = "matrix-commander";
-    rev = "7ab3fd9a0ef4eb19d882cb3701d2025b4d41b63a";
-    sha256 = "sha256-WWf7GbJxGlqIdsS1d0T1DO0WN2RBepHGgJrl/nt7UIg=";
+    rev = "v${version}";
+    sha256 = "sha256-/hNTaajZTyeIcGILIXqUVbBvZ8AUNZKBDsZ4Gr5RL2o=";
   };
 
-  buildInputs = [
-    cacert
-    (python3.withPackages(ps: with ps; [
-      matrix-nio
-      magic
-      markdown
-      pillow
-      urllib3
-      aiofiles
-      notify2
-    ]))];
-
-  installPhase = ''
-    runHook preInstall
-
-    mkdir -p $out/bin
-    cp $src/matrix-commander.py $out/bin/matrix-commander
-    chmod +x $out/bin/matrix-commander
+  format = "pyproject";
 
-    runHook postInstall
+  postPatch = ''
+    # Dependencies already bundled with Python
+    sed -i \
+      -e '/uuid/d' \
+      -e '/argparse/d' \
+      -e '/asyncio/d' \
+      -e '/datetime/d' \
+      setup.cfg requirements.txt
   '';
 
+  propagatedBuildInputs = [
+    cacert
+    setuptools
+    matrix-nio
+    python-magic
+    markdown
+    pillow
+    urllib3
+    aiofiles
+    notify2
+    dbus-python
+    pyxdg
+    python-olm
+  ];
+
   meta = with lib; {
     description = "Simple but convenient CLI-based Matrix client app for sending and receiving";
     homepage = "https://github.com/8go/matrix-commander";
diff --git a/pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix b/pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix
index 6f53fe2b3a3b2..bb900654d1e8a 100644
--- a/pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix
@@ -14,17 +14,17 @@
 let
 
   pname = "mattermost-desktop";
-  version = "5.0.3";
+  version = "5.1.0";
 
   srcs = {
     "x86_64-linux" = {
       url = "https://releases.mattermost.com/desktop/${version}/${pname}-${version}-linux-x64.tar.gz";
-      hash = "sha256-KLSWJpNSMGmfugbkFIJLDnxcZtrtBZOGjLlR+kAoMTA=";
+      hash = "sha256-KmtQUqg2ODbZ6zJjsnwlvB+vhR1xbK2X9qqmZpyTR78=";
     };
 
     "i686-linux" = {
       url = "https://releases.mattermost.com/desktop/${version}/${pname}-${version}-linux-ia32.tar.gz";
-      hash = "sha256-4ofjOsfGbgO1PSqQpigNp90JsvlGP1kGexVAR/h3/88=";
+      hash = "sha256-X8Zrthw1hZOqmcYidt72l2vonh31iiA3EDGmCQr7e4c=";
     };
   };
 
@@ -84,6 +84,7 @@ stdenv.mkDerivation {
   meta = with lib; {
     description = "Mattermost Desktop client";
     homepage = "https://about.mattermost.com/";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.asl20;
     platforms = [ "x86_64-linux" "i686-linux" ];
     maintainers = [ maintainers.joko ];
diff --git a/pkgs/applications/networking/instant-messengers/nheko/default.nix b/pkgs/applications/networking/instant-messengers/nheko/default.nix
index 750511ebf152c..d3a7abae8205e 100644
--- a/pkgs/applications/networking/instant-messengers/nheko/default.nix
+++ b/pkgs/applications/networking/instant-messengers/nheko/default.nix
@@ -33,13 +33,13 @@
 
 mkDerivation rec {
   pname = "nheko";
-  version = "0.9.3";
+  version = "0.10.0";
 
   src = fetchFromGitHub {
     owner = "Nheko-Reborn";
     repo = "nheko";
     rev = "v${version}";
-    sha256 = "sha256-h1Yahz7Rt7+r55RFTSVj6E14nWnjCs0CecljceaWgaQ=";
+    sha256 = "sha256-JNAI1+GmRgee7bqeJi8JadV3W7vXMpEvvKqqinb97Ng=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/networking/instant-messengers/oysttyer/default.nix b/pkgs/applications/networking/instant-messengers/oysttyer/default.nix
index 33f3b90873d76..5dc09ae1f3eec 100644
--- a/pkgs/applications/networking/instant-messengers/oysttyer/default.nix
+++ b/pkgs/applications/networking/instant-messengers/oysttyer/default.nix
@@ -12,9 +12,9 @@ stdenv.mkDerivation rec {
     sha256 = "0cm1hvi68iqgjsg15xdii271pklgzjn9j9afb1c460z71kgy3wz2";
   };
 
+  nativeBuildInputs = [ makeWrapper ];
   buildInputs = [
     perl
-    makeWrapper
   ];
 
   propagatedBuildInputs = with perlPackages; [
diff --git a/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-signald/default.nix b/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-signald/default.nix
new file mode 100644
index 0000000000000..50ae99ceaecfe
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-signald/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchFromGitHub, pidgin, json-glib, signald }:
+
+stdenv.mkDerivation rec {
+  pname = "purple-signald";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner = "hoehermann";
+    repo = "libpurple-signald";
+    rev = "v${version}";
+    sha256 = "sha256-2LiHjVRBwdPbfravIVM+gvsh3Gq4bhjtRD6eWAbkWmc=";
+    fetchSubmodules = true;
+  };
+
+  buildInputs = [
+    pidgin
+    json-glib
+    signald
+  ];
+
+  PKG_CONFIG_PURPLE_PLUGINDIR = "${placeholder "out"}/lib/purple-2";
+  PKG_CONFIG_PURPLE_DATADIR = "${placeholder "out"}/share";
+  PKG_CONFIG_PIDGIN_DATADIR = "${placeholder "out"}/share";
+
+  meta = with lib; {
+    homepage = "https://github.com/hoehermann/libpurple-signald";
+    description = "Signal support for Pidgin / libpurple";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ hufman ];
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/pidgin-plugins/tdlib-purple/default.nix b/pkgs/applications/networking/instant-messengers/pidgin-plugins/tdlib-purple/default.nix
new file mode 100644
index 0000000000000..af123e98d5616
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/pidgin-plugins/tdlib-purple/default.nix
@@ -0,0 +1,39 @@
+{ lib, stdenv, fetchFromGitHub, fetchpatch, cmake, libwebp, pidgin, tdlib } :
+
+stdenv.mkDerivation rec {
+  pname = "tdlib-purple";
+  version = "0.8.1";
+
+  src = fetchFromGitHub {
+    owner = "ars3niy";
+    repo = "tdlib-purple";
+    rev = "v${version}";
+    sha256 = "sha256-mrowzTtNLyMc2WwLVIop8Mg2DbyiQs0OPXmJuM9QUnM=";
+  };
+
+  patches = [
+    # Update to tdlib 1.8.0
+    (fetchpatch {
+      url = "https://github.com/ars3niy/tdlib-purple/commit/8c87b899ddbec32ec6ab4a34ddf0dc770f97d396.patch";
+      sha256 = "sha256-sysPYPno+wS8mZwQAXtX5eVnhwKAZrtr5gXuddN3mko=";
+    })
+  ];
+
+  preConfigure = ''
+    sed -i -e 's|DESTINATION.*PURPLE_PLUGIN_DIR}|DESTINATION "lib/purple-2|' CMakeLists.txt
+    sed -i -e 's|DESTINATION.*PURPLE_DATA_DIR}|DESTINATION "share|' CMakeLists.txt
+  '';
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libwebp pidgin tdlib ];
+
+  cmakeFlags = [ "-DNoVoip=True" ]; # libtgvoip required
+
+  meta = with lib; {
+    homepage = "https://github.com/ars3niy/tdlib-purple";
+    description = "libpurple Telegram plugin using tdlib";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ sikmir ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix b/pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix
deleted file mode 100644
index 6f7aab564fac9..0000000000000
--- a/pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib, stdenv, fetchFromGitHub, pkg-config, pidgin, libwebp, libgcrypt, gettext } :
-
-stdenv.mkDerivation rec {
-  pname = "telegram-purple";
-  version = "1.3.1";
-
-  src = fetchFromGitHub {
-    owner = "majn";
-    repo = "telegram-purple";
-    rev = "v${version}";
-    sha256 = "sha256-14VzCMvzAEmye0N98r+P+ub5CeA9vu8c/xqefuWVI10=";
-  };
-
-  NIX_CFLAGS_COMPILE = "-Wno-error=cast-function-type";
-
-  nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ pidgin libwebp libgcrypt gettext ];
-
-  preConfigure = ''
-    sed -i "s|/etc/telegram-purple/server.tglpub|$out/lib/purple-2/server.tglpub|g" telegram-purple.c
-    echo "#define GIT_COMMIT \"${builtins.substring 0 10 src.rev}\"" > commit.h
-  '';
-
-  installPhase = ''
-    mkdir -p $out/lib/purple-2/
-    cp bin/*.so $out/lib/purple-2/ #*/
-    cp tg-server.tglpub $out/lib/purple-2/server.tglpub
-    mkdir -p $out/pixmaps/pidgin/protocols/{16,22,48}
-    cp imgs/telegram16.png $out/pixmaps/pidgin/protocols/16
-    cp imgs/telegram22.png $out/pixmaps/pidgin/protocols/22
-    cp imgs/telegram48.png $out/pixmaps/pidgin/protocols/48
-  '';
-
-  meta = with lib; {
-    homepage = "https://github.com/majn/telegram-purple";
-    description = "Telegram for Pidgin / libpurple";
-    license = licenses.gpl2;
-    maintainers = [ maintainers.jagajaga ];
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/applications/networking/instant-messengers/pidgin/default.nix b/pkgs/applications/networking/instant-messengers/pidgin/default.nix
index bd6febeaf9d13..84f8f327cad9a 100644
--- a/pkgs/applications/networking/instant-messengers/pidgin/default.nix
+++ b/pkgs/applications/networking/instant-messengers/pidgin/default.nix
@@ -9,11 +9,11 @@
 
 let unwrapped = stdenv.mkDerivation rec {
   pname = "pidgin";
-  version = "2.14.8";
+  version = "2.14.10";
 
   src = fetchurl {
     url = "mirror://sourceforge/pidgin/pidgin-${version}.tar.bz2";
-    sha256 = "1jjc15pfyw3012q5ffv7q4r88wv07ndqh0wakyxa2k0w4708b01z";
+    sha256 = "sha256-RUsbkovGvLsYM1OvMPv95VlfIkWjQjoaRubJei3yKBA=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
@@ -88,7 +88,7 @@ let unwrapped = stdenv.mkDerivation rec {
     homepage = "https://pidgin.im/";
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
-    maintainers = [ maintainers.vcunat ];
+    maintainers = [ ];
   };
 };
 
diff --git a/pkgs/applications/networking/instant-messengers/pidgin/wrapper.nix b/pkgs/applications/networking/instant-messengers/pidgin/wrapper.nix
index d5641c24fb07a..a2885d7194f4b 100644
--- a/pkgs/applications/networking/instant-messengers/pidgin/wrapper.nix
+++ b/pkgs/applications/networking/instant-messengers/pidgin/wrapper.nix
@@ -7,7 +7,7 @@ in symlinkJoin {
 
   paths = [ pidgin ] ++ plugins;
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   postBuild = ''
     wrapProgram $out/bin/pidgin \
diff --git a/pkgs/applications/networking/instant-messengers/psi-plus/default.nix b/pkgs/applications/networking/instant-messengers/psi-plus/default.nix
index fe3f90346f1cc..c5e5b063c4e28 100644
--- a/pkgs/applications/networking/instant-messengers/psi-plus/default.nix
+++ b/pkgs/applications/networking/instant-messengers/psi-plus/default.nix
@@ -43,13 +43,13 @@ assert enablePsiMedia -> enablePlugins;
 
 mkDerivation rec {
   pname = "psi-plus";
-  version = "1.5.1618";
+  version = "1.5.1633";
 
   src = fetchFromGitHub {
     owner = "psi-plus";
     repo = "psi-plus-snapshots";
     rev = version;
-    sha256 = "sha256-ueZYFOZFCPQrg9etZCrY5ZTn7PZMkcuwbXVPPbW9S/A=";
+    sha256 = "sha256-kXdDxpIOcwcFy+OmsqlE8a19sGPfMNI08fMy5OFuP9w=";
   };
 
   cmakeFlags = [
diff --git a/pkgs/applications/networking/instant-messengers/ripcord/darwin.nix b/pkgs/applications/networking/instant-messengers/ripcord/darwin.nix
index ef9dad66b5d65..39403ba774fa3 100644
--- a/pkgs/applications/networking/instant-messengers/ripcord/darwin.nix
+++ b/pkgs/applications/networking/instant-messengers/ripcord/darwin.nix
@@ -25,6 +25,7 @@ stdenvNoCC.mkDerivation rec {
   meta = with lib; {
     description = "Desktop chat client for Slack and Discord";
     homepage = "https://cancel.fm/ripcord/";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     # See: https://cancel.fm/ripcord/shareware-redistribution/
     license = licenses.unfreeRedistributable;
     maintainers = with maintainers; [ mikroskeem ];
diff --git a/pkgs/applications/networking/instant-messengers/ripcord/default.nix b/pkgs/applications/networking/instant-messengers/ripcord/default.nix
index 7379d769288bd..7fd0bd9bb1d34 100644
--- a/pkgs/applications/networking/instant-messengers/ripcord/default.nix
+++ b/pkgs/applications/networking/instant-messengers/ripcord/default.nix
@@ -60,6 +60,7 @@ mkDerivation rec {
   meta = with lib; {
     description = "Desktop chat client for Slack and Discord";
     homepage = "https://cancel.fm/ripcord/";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     # See: https://cancel.fm/ripcord/shareware-redistribution/
     license = licenses.unfreeRedistributable;
     maintainers = with maintainers; [ infinisil ];
diff --git a/pkgs/applications/networking/instant-messengers/rocketchat-desktop/default.nix b/pkgs/applications/networking/instant-messengers/rocketchat-desktop/default.nix
index 71379039de6f2..9dffd2f366b5e 100644
--- a/pkgs/applications/networking/instant-messengers/rocketchat-desktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/rocketchat-desktop/default.nix
@@ -4,11 +4,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "rocketchat-desktop";
-  version = "3.8.5";
+  version = "3.8.9";
 
   src = fetchurl {
     url = "https://github.com/RocketChat/Rocket.Chat.Electron/releases/download/${version}/rocketchat-${version}-linux-amd64.deb";
-    sha256 = "sha256-nKEfdbHfLjM4w79hzQdKiC4+IT3WXdDdlXkzelCKqOw";
+    sha256 = "sha256-IapGlEUUl+iyW1rTCZugN2YOJUpNwd5NP2QPD3FHd0s=";
   };
 
   nativeBuildInputs = [
@@ -89,6 +89,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Official Desktop client for Rocket.Chat";
     homepage = "https://github.com/RocketChat/Rocket.Chat.Electron";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.mit;
     maintainers = with maintainers; [ gbtb ];
     platforms = platforms.x86_64;
diff --git a/pkgs/applications/networking/instant-messengers/schildichat/schildichat-desktop.nix b/pkgs/applications/networking/instant-messengers/schildichat/schildichat-desktop.nix
index e2b4cafe99361..d1a1c8d64690a 100644
--- a/pkgs/applications/networking/instant-messengers/schildichat/schildichat-desktop.nix
+++ b/pkgs/applications/networking/instant-messengers/schildichat/schildichat-desktop.nix
@@ -19,7 +19,6 @@
 let
   pinData = lib.importJSON ./pin.json;
   executableName = "schildichat-desktop";
-  electron_exec = if stdenv.isDarwin then "${electron}/Applications/Electron.app/Contents/MacOS/Electron" else "${electron}/bin/electron";
 in
 stdenv.mkDerivation rec {
   pname = "schildichat-desktop";
@@ -88,7 +87,7 @@ stdenv.mkDerivation rec {
     done
 
     # executable wrapper
-    makeWrapper '${electron_exec}' "$out/bin/${executableName}" \
+    makeWrapper '${electron}/bin/electron' "$out/bin/${executableName}" \
       --add-flags "$out/share/element/electron" \
       --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}"
 
diff --git a/pkgs/applications/networking/instant-messengers/session-desktop-appimage/default.nix b/pkgs/applications/networking/instant-messengers/session-desktop/default.nix
index 61166a82f38e1..0f1e9f9e8ad9f 100644
--- a/pkgs/applications/networking/instant-messengers/session-desktop-appimage/default.nix
+++ b/pkgs/applications/networking/instant-messengers/session-desktop/default.nix
@@ -8,12 +8,12 @@
 }:
 
 let
-  version = "1.8.6";
-  pname = "session-desktop-appimage";
+  version = "1.9.1";
+  pname = "session-desktop";
 
   src = fetchurl {
     url = "https://github.com/oxen-io/session-desktop/releases/download/v${version}/session-desktop-linux-x86_64-${version}.AppImage";
-    sha256 = "h7uEdxBuqPNWGFp5wWWRI9VsK3HYOtLVgj7rIbeO9kY=";
+    sha256 = "sha256-Zc3btkvN4ic47IGigeFJGx4dwbM+b7iuIOxpmcWmrRQ=";
   };
   appimage = appimageTools.wrapType2 {
     inherit version pname src;
@@ -33,7 +33,7 @@ stdenvNoCC.mkDerivation {
       name = "Session";
       desktopName = "Session";
       comment = "Onion routing based messenger";
-      exec = "${appimage}/bin/session-desktop-appimage-${version}";
+      exec = "${appimage}/bin/session-desktop-${version}";
       icon = "${appimage-contents}/session-desktop.png";
       terminal = false;
       type = "Application";
@@ -44,10 +44,12 @@ stdenvNoCC.mkDerivation {
   installPhase = ''
     runHook preInstall
 
+    mv bin/session-desktop-${version} bin/session-desktop
+
     mkdir -p $out/
     cp -r bin $out/bin
 
-    wrapProgram $out/bin/session-desktop-appimage-${version} \
+    wrapProgram $out/bin/session-desktop \
       --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}"
 
     runHook postInstall
diff --git a/pkgs/applications/networking/instant-messengers/signal-cli/default.nix b/pkgs/applications/networking/instant-messengers/signal-cli/default.nix
index bca45576db713..dd2a34a60fa4f 100644
--- a/pkgs/applications/networking/instant-messengers/signal-cli/default.nix
+++ b/pkgs/applications/networking/instant-messengers/signal-cli/default.nix
@@ -2,12 +2,12 @@
 
 stdenv.mkDerivation rec {
   pname = "signal-cli";
-  version = "0.10.2";
+  version = "0.10.11";
 
   # Building from source would be preferred, but is much more involved.
   src = fetchurl {
-    url = "https://github.com/AsamK/signal-cli/releases/download/v${version}/signal-cli-${version}.tar.gz";
-    sha256 = "sha256-etCO7sy48A7aL3mnXWitClNiw/E122G4eD6YfVmXEPw=";
+    url = "https://github.com/AsamK/signal-cli/releases/download/v${version}/signal-cli-${version}-Linux.tar.gz";
+    sha256 = "sha256-tBgtSYKSoyze9qFWpy6IUdwMU9KCLZGEIpOkjLdHsHM=";
   };
 
   buildInputs = lib.optionals stdenv.isLinux [ libmatthew_java dbus dbus_java ];
diff --git a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
index 3133ec9dde1d9..fdedea7244b58 100644
--- a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
@@ -5,26 +5,11 @@
 , cups, expat, libuuid, at-spi2-core, libappindicator-gtk3, mesa
 # Runtime dependencies:
 , systemd, libnotify, libdbusmenu, libpulseaudio, xdg-utils
-# Unfortunately this also overwrites the UI language (not just the spell
-# checking language!):
-, hunspellDicts, spellcheckerLanguage ? null # E.g. "de_DE"
-# For a full list of available languages:
-# $ cat pkgs/development/libraries/hunspell/dictionaries.nix | grep "dictFileName =" | awk '{ print $3 }'
 }:
 
-let
-  customLanguageWrapperArgs = (with lib;
-    let
-      # E.g. "de_DE" -> "de-de" (spellcheckerLanguage -> hunspellDict)
-      spellLangComponents = splitString "_" spellcheckerLanguage;
-      hunspellDict = elemAt spellLangComponents 0 + "-" + toLower (elemAt spellLangComponents 1);
-    in lib.optionalString (spellcheckerLanguage != null) ''
-      --set HUNSPELL_DICTIONARIES "${hunspellDicts.${hunspellDict}}/share/hunspell" \
-      --set LC_MESSAGES "${spellcheckerLanguage}"'');
-
-in stdenv.mkDerivation rec {
+stdenv.mkDerivation rec {
   pname = "signal-desktop";
-  version = "5.45.0"; # Please backport all updates to the stable channel.
+  version = "5.57.0"; # Please backport all updates to the stable channel.
   # All releases have a limited lifetime and "expire" 90 days after the release.
   # When releases "expire" the application becomes unusable until an update is
   # applied. The expiration date for the current release can be extracted with:
@@ -34,7 +19,7 @@ in stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
-    sha256 = "sha256-RqzFUE43wbz8Hw7hXxqqX9iEatjIHe0SbHD1+ieIR34=";
+    sha256 = "sha256-42xKqK/7V2GPHk/L396O7UoWn5vTyILVTbLa0Tf6NaY=";
   };
 
   nativeBuildInputs = [
@@ -82,6 +67,7 @@ in stdenv.mkDerivation rec {
 
   runtimeDependencies = [
     (lib.getLib systemd)
+    libappindicator-gtk3
     libnotify
     libdbusmenu
     xdg-utils
@@ -122,7 +108,6 @@ in stdenv.mkDerivation rec {
   preFixup = ''
     gappsWrapperArgs+=(
       --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ stdenv.cc.cc ] }"
-      ${customLanguageWrapperArgs}
       --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}"
       --suffix PATH : ${lib.makeBinPath [ xdg-utils ]}
     )
@@ -149,5 +134,6 @@ in stdenv.mkDerivation rec {
     license     = lib.licenses.agpl3Only;
     maintainers = with lib.maintainers; [ mic92 equirosa ];
     platforms   = [ "x86_64-linux" ];
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
   };
 }
diff --git a/pkgs/applications/networking/instant-messengers/signalbackup-tools/apple-sdk-missing-utimensat.patch b/pkgs/applications/networking/instant-messengers/signalbackup-tools/apple-sdk-missing-utimensat.patch
deleted file mode 100644
index 61474d0ab4fc3..0000000000000
--- a/pkgs/applications/networking/instant-messengers/signalbackup-tools/apple-sdk-missing-utimensat.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff --git a/signalbackup/setfiletimestamp.cc b/signalbackup/setfiletimestamp.cc
-index f53a168..d2d1c5e 100644
---- a/signalbackup/setfiletimestamp.cc
-+++ b/signalbackup/setfiletimestamp.cc
-@@ -21,24 +21,23 @@
-
- #if !defined(_WIN32) && !defined(__MINGW64__)
-
--#include <fcntl.h>
--#include <sys/stat.h>
-+#include <sys/time.h>
-
- bool SignalBackup::setFileTimeStamp(std::string const &file, long long int time_usec) const
- {
--  struct timespec ntimes[] =
-+  struct timeval ntimes[] =
-   {
-     {                                   // ntimes[0] =
-       time_usec / 1000,                 // tv_sec, seconds
--      (time_usec % 1000) * 1000         // tv_usec, nanoseconds
-+      static_cast<int>(time_usec)       // tv_usec, nanoseconds
-     },
-     {                                   // ntimes[1] =
-       time_usec / 1000,                 // tv_sec, seconds
--      (time_usec % 1000) * 1000         // tv_usec, nanoseconds
-+      static_cast<int>(time_usec)       // tv_usec, nanoseconds
-     }
-   };
-
--  return (utimensat(AT_FDCWD, file.c_str(), ntimes, 0) == 0);
-+  return (utimes(file.c_str(), ntimes) == 0);
- }
-
- #else // this is poorly tested, I don't have windows
diff --git a/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix b/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix
index adbe34207c025..4e05b9a681c10 100644
--- a/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix
+++ b/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix
@@ -2,37 +2,38 @@
 
 stdenv.mkDerivation rec {
   pname = "signalbackup-tools";
-  version = "20220526";
+  version = "20220825";
 
   src = fetchFromGitHub {
     owner = "bepaald";
     repo = pname;
     rev = version;
-    sha256 = "sha256-vFq9NvQboqGVzwiH2KPhT6jsdY5i2oKIgEaZKfBsb/o=";
+    sha256 = "sha256-dqP30or4UvtnzUW6r0FqQxt1S6Y61Q1CljpAFGq2gSM=";
   };
 
-  # Remove when Apple SDK is >= 10.13
-  patches = lib.optional (stdenv.system == "x86_64-darwin") ./apple-sdk-missing-utimensat.patch;
+  postPatch = ''
+    patchShebangs BUILDSCRIPT_MULTIPROC.bash44
+  '';
 
   buildInputs = [ openssl sqlite ];
-  buildFlags = [
-    "-Wall"
-    "-Wextra"
-    "-Wshadow"
-    "-Wold-style-cast"
-    "-Woverloaded-virtual"
-    "-pedantic"
-    "-std=c++2a"
-    "-O3"
-    "-march=native"
-  ];
+
+  # Manually define `CXXFLAGS` and `LDFLAGS` on Darwin since the build scripts includes flags
+  # that don't work on Darwin.
   buildPhase = ''
-    $CXX $buildFlags */*.cc *.cc -lcrypto -lsqlite3 -o signalbackup-tools
+    runHook preBuild
+  '' + lib.optionalString stdenv.isDarwin ''
+    export CXXFLAGS="-Wall -Wextra -Wshadow -Wold-style-cast -Woverloaded-virtual -pedantic -O3"
+    export LDFLAGS="-Wall -Wextra -O3"
+  '' + ''
+    ./BUILDSCRIPT_MULTIPROC.bash44
+    runHook postBuild
   '';
 
   installPhase = ''
+    runHook preInstall
     mkdir -p $out/bin
     cp signalbackup-tools $out/bin/
+    runHook postInstall
   '';
 
   meta = with lib; {
diff --git a/pkgs/applications/networking/instant-messengers/signald/default.nix b/pkgs/applications/networking/instant-messengers/signald/default.nix
index ac7040a9aaca6..0b85524364515 100644
--- a/pkgs/applications/networking/instant-messengers/signald/default.nix
+++ b/pkgs/applications/networking/instant-messengers/signald/default.nix
@@ -4,18 +4,18 @@
 
 let
   pname = "signald";
-  version = "0.18.5";
+  version = "0.19.1";
 
   src = fetchFromGitLab {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "sha256-2cb1pyBOoOlFqJsNKXA0Q9x4wCE4yzzcfrDDtTp7HMk=";
+    sha256 = "sha256-Ma6kIKRVM8UUU/TvfVp2RVl/FLxFgBQU3mEypnujJ+c=";
   };
 
   jre' = jre_minimal.override {
     jdk = jdk17_headless;
-    # from https://gitlab.com/signald/signald/-/blob/0.18.5/build.gradle#L173
+    # from https://gitlab.com/signald/signald/-/blob/0.19.1/build.gradle#L173
     modules = [
       "java.base"
       "java.management"
diff --git a/pkgs/applications/networking/instant-messengers/sky/default.nix b/pkgs/applications/networking/instant-messengers/sky/default.nix
index 464d4d77f9461..e949625875e58 100644
--- a/pkgs/applications/networking/instant-messengers/sky/default.nix
+++ b/pkgs/applications/networking/instant-messengers/sky/default.nix
@@ -59,6 +59,7 @@ mkDerivation rec {
   meta = {
     description = "Lync & Skype for Business on Linux";
     homepage = "https://tel.red/";
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
     license = lib.licenses.unfree;
     maintainers = [ lib.maintainers.wucke13 ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix b/pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix
index 024ac9a143182..ec33f99809ef6 100644
--- a/pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix
+++ b/pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix
@@ -7,7 +7,7 @@ let
 
   # Please keep the version x.y.0.z and do not update to x.y.76.z because the
   # source of the latter disappears much faster.
-  version = "8.82.0.403";
+  version = "8.87.0.406";
 
   rpath = lib.makeLibraryPath [
     alsa-lib
@@ -68,7 +68,7 @@ let
           "https://mirror.cs.uchicago.edu/skype/pool/main/s/skypeforlinux/skypeforlinux_${version}_amd64.deb"
           "https://web.archive.org/web/https://repo.skype.com/deb/pool/main/s/skypeforlinux/skypeforlinux_${version}_amd64.deb"
         ];
-        sha256 = "sha256-45aHb6BI0kUnJOlRsglyGdZ6+8sLmHZK3FN8nYpuHXM=";
+        sha256 = "sha256-lWnQIdMmfz90h3tOWkQv0vo3HnRi3z6W27vK28+Ksjo=";
       }
     else
       throw "Skype for linux is not supported on ${stdenv.hostPlatform.system}";
@@ -120,6 +120,7 @@ in stdenv.mkDerivation {
   meta = with lib; {
     description = "Linux client for skype";
     homepage = "https://www.skype.com";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
     maintainers = with maintainers; [ panaeon jraygauthier ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/applications/networking/instant-messengers/slack/default.nix b/pkgs/applications/networking/instant-messengers/slack/default.nix
index 86ed37e54dc00..50693abe8ba7f 100644
--- a/pkgs/applications/networking/instant-messengers/slack/default.nix
+++ b/pkgs/applications/networking/instant-messengers/slack/default.nix
@@ -44,14 +44,14 @@ let
 
   pname = "slack";
 
-  x86_64-darwin-version = "4.26.1";
-  x86_64-darwin-sha256 = "0883nnnwjaii89x6idqcl68acw1fbijyhhrwy7inwgrdw233qqcd";
+  x86_64-darwin-version = "4.27.154";
+  x86_64-darwin-sha256 = "0a3cc9kkiq18vr4hk532vc59cza1hq8qh9x9hlhli4n72n3h7y3n";
 
-  x86_64-linux-version = "4.26.1";
-  x86_64-linux-sha256 = "0nw3cfypinzp8csli1myh3b9hvv2pg1d8p9izg7znfpnlwps8gy1";
+  x86_64-linux-version = "4.27.156";
+  x86_64-linux-sha256 = "sha256-/xtD+/+KGtPr4vQJm8ZczvpyPxfMBw0OE7hzTzFhSs0=";
 
-  aarch64-darwin-version = "4.26.1";
-  aarch64-darwin-sha256 = "1p5qn5zyibpyiv5is70g1la9y6wc038j3sxjyxflgqsdvania7vq";
+  aarch64-darwin-version = "4.27.154";
+  aarch64-darwin-sha256 = "1n3vgcsbi1w49w4xqc5hyadb9qwvsqdiirfw9v4s65wsnark1iz6";
 
   version = {
     x86_64-darwin = x86_64-darwin-version;
@@ -80,6 +80,7 @@ let
   meta = with lib; {
     description = "Desktop client for Slack";
     homepage = "https://slack.com";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
     maintainers = with maintainers; [ mmahut maxeaubrey ];
     platforms = [ "x86_64-darwin" "x86_64-linux" "aarch64-darwin" ];
@@ -163,11 +164,12 @@ let
         patchelf --set-rpath ${rpath}:$out/lib/slack $file || true
       done
 
-      # Replace the broken bin/slack symlink with a startup wrapper
+      # Replace the broken bin/slack symlink with a startup wrapper.
+      # Make xdg-open overrideable at runtime.
       rm $out/bin/slack
       makeWrapper $out/lib/slack/slack $out/bin/slack \
         --prefix XDG_DATA_DIRS : $GSETTINGS_SCHEMAS_PATH \
-        --prefix PATH : ${lib.makeBinPath [xdg-utils]} \
+        --suffix PATH : ${lib.makeBinPath [xdg-utils]} \
         --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}"
 
       # Fix the desktop link
diff --git a/pkgs/applications/networking/instant-messengers/stride/default.nix b/pkgs/applications/networking/instant-messengers/stride/default.nix
deleted file mode 100644
index 026dc5b640567..0000000000000
--- a/pkgs/applications/networking/instant-messengers/stride/default.nix
+++ /dev/null
@@ -1,68 +0,0 @@
-{ lib, stdenv, fetchurl, dpkg, alsa-lib, atk, cairo, cups, dbus, expat, fontconfig
-, freetype, gdk-pixbuf, glib, gnome2, gtk2, nspr, nss, pango, udev, xorg }:
-let
-  fullPath = lib.makeLibraryPath [
-    alsa-lib
-    atk
-    cairo
-    cups
-    dbus
-    expat
-    fontconfig
-    freetype
-    gdk-pixbuf
-    glib
-    gnome2.GConf
-    gtk2
-    nspr
-    nss
-    pango
-    udev
-    xorg.libX11
-    xorg.libXScrnSaver
-    xorg.libXcomposite
-    xorg.libXcursor
-    xorg.libXdamage
-    xorg.libXext
-    xorg.libXfixes
-    xorg.libXi
-    xorg.libXrandr
-    xorg.libXrender
-    xorg.libXtst
-    xorg.libxcb
-  ] + ":${stdenv.cc.cc.lib}/lib64";
-in
-stdenv.mkDerivation rec {
-  version = "1.17.82";
-  pname = "stride";
-
-  src = fetchurl {
-    url = "https://packages.atlassian.com/stride-apt-client/pool/stride_${version}_amd64.deb";
-    sha256 = "0lx61gdhw0kv4f9fwbfg69yq52dsp4db7c4li25d6wn11qanzqhy";
-  };
-
-  dontBuild = true;
-  dontFixup = true;
-
-  buildInputs = [ dpkg ];
-
-  unpackPhase = ''
-    dpkg-deb -x ${src} ./
-  '';
-
-  installPhase =''
-    mkdir "$out"
-    mv usr/* "$out/"
-    patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-      --set-rpath "${fullPath}:\$ORIGIN" \
-      "$out/bin/stride"
-  '';
-
-  meta = with lib; {
-    description = "Desktop client for Atlassian Stride";
-    homepage = "https://www.stride.com/";
-    license = licenses.unfree;
-    platforms = [ "x86_64-linux" ];
-    maintainers = with maintainers; [ puffnfresh ];
-  };
-}
diff --git a/pkgs/applications/networking/instant-messengers/teams/default.nix b/pkgs/applications/networking/instant-messengers/teams/default.nix
index 07462b4cc26f8..cebc1f9eb423d 100644
--- a/pkgs/applications/networking/instant-messengers/teams/default.nix
+++ b/pkgs/applications/networking/instant-messengers/teams/default.nix
@@ -28,6 +28,7 @@ let
     description = "Microsoft Teams";
     homepage = "https://teams.microsoft.com";
     downloadPage = "https://teams.microsoft.com/downloads";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
     maintainers = with maintainers; [ liff tricktron ];
     platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ];
@@ -57,7 +58,12 @@ let
     ];
 
     preFixup = ''
-      gappsWrapperArgs+=(--prefix PATH : "${coreutils}/bin:${gawk}/bin")
+      gappsWrapperArgs+=(
+        --prefix PATH : "${coreutils}/bin:${gawk}/bin"
+
+        # fix for https://docs.microsoft.com/en-us/answers/questions/298724/open-teams-meeting-link-on-linux-doens39t-work.html?childToView=309406#comment-309406
+        --append-flags '--disable-namespace-sandbox --disable-setuid-sandbox'
+      )
     '';
 
 
@@ -118,15 +124,6 @@ let
         echo "Adding runtime dependencies to RPATH of Node module $mod"
         patchelf --set-rpath "$runtime_rpath:$mod_rpath" "$mod"
       done;
-
-      # fix for https://docs.microsoft.com/en-us/answers/questions/298724/open-teams-meeting-link-on-linux-doens39t-work.html?childToView=309406#comment-309406
-      wrapped=$out/bin/.teams-old
-      mv "$out/bin/teams" "$wrapped"
-      cat > "$out/bin/teams" << EOF
-      #! ${runtimeShell}
-      exec $wrapped "\$@" --disable-namespace-sandbox --disable-setuid-sandbox
-      EOF
-      chmod +x "$out/bin/teams"
     '';
   };
 
@@ -140,7 +137,7 @@ let
       hash = "sha256-vLUEvOSBUyAJIWHOAIkTqTW/W6TkgmeyRzQbquZP810=";
     };
 
-    buildInputs = [ xar cpio makeWrapper ];
+    nativeBuildInputs = [ xar cpio makeWrapper ];
 
     unpackPhase = ''
       xar -xf $src
diff --git a/pkgs/applications/networking/instant-messengers/teamspeak/client.nix b/pkgs/applications/networking/instant-messengers/teamspeak/client.nix
index 80d04eabc824c..5a0a9006e0df5 100644
--- a/pkgs/applications/networking/instant-messengers/teamspeak/client.nix
+++ b/pkgs/applications/networking/instant-messengers/teamspeak/client.nix
@@ -93,6 +93,8 @@ stdenv.mkDerivation rec {
       wrapProgram $out/bin/ts3client \
         --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
         --set QT_PLUGIN_PATH "${qtbase}/${qtbase.qtPluginPrefix}" \
+    '' /* wayland is currently broken, remove when TS3 fixes that */ + ''
+        --set QT_QPA_PLATFORM xcb \
         --set NIX_REDIRECTS /usr/share/X11/xkb=${xkeyboard_config}/share/X11/xkb
     '';
 
@@ -102,6 +104,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "The TeamSpeak voice communication tool";
     homepage = "https://teamspeak.com/";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = {
       fullName = "Teamspeak client license";
       url = "https://www.teamspeak.com/en/privacy-and-terms/";
diff --git a/pkgs/applications/networking/instant-messengers/teamspeak/client5.nix b/pkgs/applications/networking/instant-messengers/teamspeak/client5.nix
new file mode 100644
index 0000000000000..aac37f441dacd
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/teamspeak/client5.nix
@@ -0,0 +1,109 @@
+{ lib
+, stdenv
+, fetchurl
+, autoPatchelfHook
+, copyDesktopItems
+, makeDesktopItem
+, makeWrapper
+, alsa-lib
+, at-spi2-atk
+, atk
+, cairo
+, cups
+, dbus
+, gcc-unwrapped
+, gdk-pixbuf
+, glib
+, gtk3
+, libdrm
+, libnotify
+, libpulseaudio
+, libxkbcommon
+, mesa
+, nss
+, udev
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "teamspeak5-client";
+  version = "5.0.0-beta70";
+
+  src = fetchurl {
+    # check https://teamspeak.com/en/downloads/#ts5 for version and checksum
+    url = "https://files.teamspeak-services.com/pre_releases/client/${version}/teamspeak-client.tar.gz";
+    sha256 = "44f1a29b915c3930e7385ce32b13e363a7be04c1e341226d0693600818411c6e";
+  };
+
+  sourceRoot = ".";
+
+  propagatedBuildInputs = [
+    alsa-lib
+    at-spi2-atk
+    atk
+    cairo
+    cups.lib
+    dbus
+    gcc-unwrapped.lib
+    gdk-pixbuf
+    glib
+    gtk3
+    libdrm
+    libnotify
+    libpulseaudio
+    libxkbcommon
+    mesa.drivers
+    nss
+    xorg.libX11
+    xorg.libXScrnSaver
+    xorg.libXdamage
+    xorg.libXfixes
+    xorg.libxshmfence
+  ];
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    copyDesktopItems
+    makeWrapper
+  ];
+
+  desktopItems = [
+    (makeDesktopItem {
+      name = "TeamSpeak";
+      exec = "TeamSpeak";
+      icon = pname;
+      desktopName = pname;
+      comment = "TeamSpeak Voice Communication Client";
+      categories = ["Audio" "AudioVideo" "Chat" "Network"];
+    })
+  ];
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin $out/share/${pname} $out/share/icons/hicolor/64x64/apps/
+
+    cp -a * $out/share/${pname}
+    cp logo-256.png $out/share/icons/hicolor/64x64/apps/${pname}.png
+
+    makeWrapper $out/share/${pname}/TeamSpeak $out/bin/TeamSpeak \
+      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ udev ]}"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "The TeamSpeak voice communication tool (beta version)";
+    homepage = "https://teamspeak.com/";
+    license = {
+      fullName = "Teamspeak client license";
+      url = "https://www.teamspeak.com/en/privacy-and-terms/";
+      free = false;
+    };
+    maintainers = with maintainers; [ jojosch ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/teamspeak/server.nix b/pkgs/applications/networking/instant-messengers/teamspeak/server.nix
index 44430ef62e2d3..577589f6a40b0 100644
--- a/pkgs/applications/networking/instant-messengers/teamspeak/server.nix
+++ b/pkgs/applications/networking/instant-messengers/teamspeak/server.nix
@@ -4,13 +4,13 @@ let
   arch = if stdenv.is64bit then "amd64" else "x86";
 in stdenv.mkDerivation rec {
   pname = "teamspeak-server";
-  version = "3.13.6";
+  version = "3.13.7";
 
   src = fetchurl {
     url = "https://files.teamspeak-services.com/releases/server/${version}/teamspeak3-server_linux_${arch}-${version}.tar.bz2";
     sha256 = if stdenv.is64bit
-      then "sha256-U3BNJ4Jjhd39gD7iMsHT8CGtm/GFQDE2kYQa2btyK+w="
-      else "sha256-8UKiFedv6w5bmqNvo3AXwQnUROwbZnU0ZTh9V17zmxQ=";
+      then "sha256-d1pXMamAmAHkyPkGbNm8ViobNoVTE5wSSfKgdA1QBB4="
+      else "sha256-aMEDOnvBeKfzG8lDFhU8I5DYgG53IsCDBMV2MUyJi2g=";
   };
 
   buildInputs = [ stdenv.cc.cc postgresql.lib ];
@@ -58,6 +58,7 @@ in stdenv.mkDerivation rec {
   meta = with lib; {
     description = "TeamSpeak voice communication server";
     homepage = "https://teamspeak.com/";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfreeRedistributable;
     platforms = platforms.linux;
     maintainers = with maintainers; [ arobyn gerschtli ];
diff --git a/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt.nix b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt.nix
index 9146da94530c7..e171622616ae2 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt.nix
@@ -73,7 +73,7 @@ stdenv.mkDerivation {
 
   nativeBuildInputs = [ pkg-config cmake ninja yasm ];
 
-  buildInputs = [
+  propagatedBuildInputs = [
     libjpeg
     openssl
     libopus
@@ -120,13 +120,5 @@ stdenv.mkDerivation {
 
   enableParallelBuilding = true;
 
-  propagatedBuildInputs = [
-    # Required for linking downstream binaries.
-    abseil-cpp
-    openh264
-    usrsctp
-    libvpx
-  ];
-
   meta.license = lib.licenses.bsd3;
 }
diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
index f871b610a41ae..b0f7b3d54feec 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
@@ -23,6 +23,7 @@
 , libopus
 , alsa-lib
 , libpulseaudio
+, pipewire
 , range-v3
 , tl-expected
 , hunspell
@@ -35,6 +36,7 @@
 , util-linuxMinimal
 , pcre
 , libpthreadstubs
+, libXdamage
 , libXdmcp
 , libselinux
 , libsepol
@@ -71,7 +73,7 @@ let
 in
 env.mkDerivation rec {
   pname = "telegram-desktop";
-  version = "3.7.3";
+  version = "4.1.1";
   # Note: Update via pkgs/applications/networking/instant-messengers/telegram/tdesktop/update.py
 
   # Telegram-Desktop with submodules
@@ -80,7 +82,7 @@ env.mkDerivation rec {
     repo = "tdesktop";
     rev = "v${version}";
     fetchSubmodules = true;
-    sha256 = "01b3nrhfbxhq4w63nsjnrhyfsdq3fm4l7sfkasbh8ib4qk3c9vwz";
+    sha256 = "0b8nwimks6hfnb3bqik8d4s9z689hhj4p9ykqgc36pmpr54nyma8";
   };
 
   postPatch = ''
@@ -127,6 +129,7 @@ env.mkDerivation rec {
     libopus
     alsa-lib
     libpulseaudio
+    pipewire
     range-v3
     tl-expected
     hunspell
@@ -139,6 +142,7 @@ env.mkDerivation rec {
     util-linuxMinimal # Required for libmount thus not nativeBuildInputs.
     pcre
     libpthreadstubs
+    libXdamage
     libXdmcp
     libselinux
     libsepol
@@ -169,7 +173,7 @@ env.mkDerivation rec {
     wrapProgram $out/bin/telegram-desktop \
       "''${gappsWrapperArgs[@]}" \
       "''${qtWrapperArgs[@]}" \
-      --prefix PATH : ${lib.makeBinPath [ xdg-utils]} \
+      --suffix PATH : ${lib.makeBinPath [ xdg-utils]} \
       --set XDG_RUNTIME_DIR "XDG-RUNTIME-DIR"
     sed -i $out/bin/telegram-desktop \
       -e "s,'XDG-RUNTIME-DIR',\"\''${XDG_RUNTIME_DIR:-/run/user/\$(id --user)}\","
diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix
index bb07989531468..590e8f337fe6b 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation {
   pname = "tg_owt";
-  version = "unstable-2022-04-14";
+  version = "unstable-2022-08-11";
 
   src = fetchFromGitHub {
     owner = "desktop-app";
     repo = "tg_owt";
-    rev = "63a934db1ed212ebf8aaaa20f0010dd7b0d7b396";
-    sha256 = "sha256-WddSsQ9KW1zYyYckzdUOvfFZArYAbyvXmABQNMtK6cM=";
+    rev = "a5fbc9123e056e611e69acf0ceb4252ddd838adb";
+    sha256 = "1hzck63spjjkqzkj0mlrxygrix4lw0n3i5cmc0vkxaphfzawz74n";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/applications/networking/instant-messengers/telegram/tg/default.nix b/pkgs/applications/networking/instant-messengers/telegram/tg/default.nix
new file mode 100644
index 0000000000000..0918bfee91e2e
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/telegram/tg/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonApplication, fetchFromGitHub, pythonOlder, python-telegram }:
+
+buildPythonApplication rec {
+  pname = "tg";
+  version = "0.19.0";
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "paul-nameless";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-apHd26XnOz5nak+Kz8PJPsonQfTWDyPz7Mi/tWf7zwM=";
+  };
+
+  propagatedBuildInputs = [ python-telegram ];
+
+  doCheck = false; # No tests
+
+  meta = with lib; {
+    description = "Terminal client for telegram";
+    homepage = "https://github.com/paul-nameless/tg";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ sikmir ];
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/threema-desktop/default.nix b/pkgs/applications/networking/instant-messengers/threema-desktop/default.nix
index 0951f1d3d8e7d..852abe8e6dc45 100644
--- a/pkgs/applications/networking/instant-messengers/threema-desktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/threema-desktop/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   pname = "threema-desktop";
-  version = "1.2.0";
+  version = "1.2.13";
 
   src = fetchurl {
     # As Threema only offers a Latest Release url, the plan is to upload each
     # new release url to web.archive.org until their Github releases page gets populated.
-    url = "https://web.archive.org/web/20220408213031if_/https://releases.threema.ch/web-electron/v1/release/Threema-Latest.deb";
-    sha256 = "7c8e1e76ad82a0cf776eb8b0a683a41a00dc8752bb79a24b0ae9d795fdedcde6";
+    url = "https://web.archive.org/web/20220621152620id_/https://releases.threema.ch/web-electron/v1/release/Threema-Latest.deb";
+    sha256 = "sha256-X16GMxUIKUloj0FxhzWQKUBf4zwfSBVg0cwLgGxHPHE=";
   };
 
   nativeBuildInputs = [
@@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Desktop client for Threema, a privacy-focused end-to-end encrypted mobile messenger";
     homepage = "https://threema.ch";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ wolfangaukang ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/applications/networking/instant-messengers/trillian-im/default.nix b/pkgs/applications/networking/instant-messengers/trillian-im/default.nix
new file mode 100644
index 0000000000000..0d4a6299adfce
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/trillian-im/default.nix
@@ -0,0 +1,78 @@
+{ lib
+, stdenv
+, fetchurl
+, autoPatchelfHook
+, dpkg
+, atkmm
+, cairo
+, cairomm
+, gtk3
+, gtkmm3
+, libnotify
+, libsecret
+, pangomm
+, xorg
+, libpulseaudio
+, librsvg
+, libzip
+, openssl
+, webkitgtk
+, libappindicator-gtk3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "trillian-im";
+  version = "6.3.0.1";
+
+  src = fetchurl {
+    url = "https://www.trillian.im/get/linux/6.3/trillian_${version}_amd64.deb";
+    sha256 = "42e3466ee236ac2644907059f0961eba3a6ed6b6156afb2c57f54ebe6065ac6f";
+  };
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    dpkg
+  ];
+
+  buildInputs = [
+    atkmm
+    cairo
+    cairomm
+    gtk3
+    gtkmm3
+    libnotify
+    libsecret
+    pangomm
+    xorg.libXScrnSaver
+    libpulseaudio
+    librsvg
+    libzip
+    openssl
+    webkitgtk
+    libappindicator-gtk3
+  ];
+
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out
+    dpkg -x $src $out
+    cp -av $out/usr/* $out
+    rm -rf $out/usr
+
+    rm $out/bin/trillian
+    ln -s "$out/share/trillian/trillian" "$out/bin/trillian"
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Modern instant messaging for home and work that prioritizes chat interoperability and security";
+    homepage = "https://www.trillian.im/";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ majiir ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/turses/default.nix b/pkgs/applications/networking/instant-messengers/turses/default.nix
index 42dd9f835c9ad..c368c049daf02 100644
--- a/pkgs/applications/networking/instant-messengers/turses/default.nix
+++ b/pkgs/applications/networking/instant-messengers/turses/default.nix
@@ -19,6 +19,10 @@ let
           rev = "v${version}";
           sha256 = "0k4bdlwjna6f1k19jki4xqgckrinkkw8b9wihzymr1l04rwd05nw";
         };
+        propagatedBuildInputs = oldAttrs.propagatedBuildInputs ++ [
+          super.six
+          super.requests.optional-dependencies.socks
+        ];
         doCheck = false;
       });
     };
diff --git a/pkgs/applications/networking/instant-messengers/twitch-tui/default.nix b/pkgs/applications/networking/instant-messengers/twitch-tui/default.nix
new file mode 100644
index 0000000000000..ec9df5ec10dd7
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/twitch-tui/default.nix
@@ -0,0 +1,25 @@
+{ lib, fetchFromGitHub, rustPlatform, pkg-config, openssl }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "twitch-tui";
+  version = "1.6.0";
+
+  src = fetchFromGitHub {
+    owner = "Xithrius";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-144yn/QQPIZJOgqKFUWjB7KCmEKfNpj6XjMGhTpQdEQ=";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ openssl ];
+
+  cargoHash = "sha256-zUeI01EyXsuoKzHbpVu3jyA3H2aBk6wMY+GW3h3v8vc=";
+
+  meta = with lib; {
+    description = "Twitch chat in the terminal";
+    homepage = "https://github.com/Xithrius/twitch-tui";
+    license = licenses.mit;
+    maintainers = [ maintainers.taha ];
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/viber/default.nix b/pkgs/applications/networking/instant-messengers/viber/default.nix
index f8e048edc4b02..be19ec257424b 100644
--- a/pkgs/applications/networking/instant-messengers/viber/default.nix
+++ b/pkgs/applications/networking/instant-messengers/viber/default.nix
@@ -101,6 +101,7 @@ stdenv.mkDerivation {
   meta = {
     homepage = "https://www.viber.com";
     description = "An instant messaging and Voice over IP (VoIP) app";
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
     license = lib.licenses.unfree;
     platforms = [ "x86_64-linux" ];
     maintainers = with lib.maintainers; [ jagajaga ];
diff --git a/pkgs/applications/networking/instant-messengers/vk-cli/default.nix b/pkgs/applications/networking/instant-messengers/vk-cli/default.nix
index bb34fd7534c95..a22437bf8da00 100644
--- a/pkgs/applications/networking/instant-messengers/vk-cli/default.nix
+++ b/pkgs/applications/networking/instant-messengers/vk-cli/default.nix
@@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "A console (ncurses) client for vk.com written in D";
     homepage = "https://github.com/vk-cli/vk";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.asl20;
     maintainers = with maintainers; [ dan4ik605743 ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/applications/networking/instant-messengers/vk-messenger/default.nix b/pkgs/applications/networking/instant-messengers/vk-messenger/default.nix
index 5fb0f14f36a04..1d249794d4431 100644
--- a/pkgs/applications/networking/instant-messengers/vk-messenger/default.nix
+++ b/pkgs/applications/networking/instant-messengers/vk-messenger/default.nix
@@ -24,6 +24,7 @@ let
   meta = with lib; {
     description = "Simple and Convenient Messaging App for VK";
     homepage = "https://vk.com/messenger";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
     maintainers = [ ];
     platforms = ["i686-linux" "x86_64-linux" "x86_64-darwin"];
diff --git a/pkgs/applications/networking/instant-messengers/wavebox/default.nix b/pkgs/applications/networking/instant-messengers/wavebox/default.nix
index 26a6b43d4489a..cf6410def0d1e 100644
--- a/pkgs/applications/networking/instant-messengers/wavebox/default.nix
+++ b/pkgs/applications/networking/instant-messengers/wavebox/default.nix
@@ -53,8 +53,9 @@ in stdenv.mkDerivation {
   '';
 
   postFixup = ''
+    # make xdg-open overrideable at runtime
     makeWrapper $out/opt/wavebox/Wavebox $out/bin/wavebox \
-      --prefix PATH : ${xdg-utils}/bin
+      --suffix PATH : ${xdg-utils}/bin
   '';
 
   meta = with lib; {
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 0000000000000..253c16b12e5d1
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/webex/default.nix
@@ -0,0 +1,175 @@
+{ lib
+, writeScript
+, stdenv
+, fetchurl
+, alsa-lib
+, 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.10.0.23251";
+
+  src = fetchurl {
+    url = "https://binaries.webex.com/WebexDesktop-Ubuntu-Blue/20220815132636/Webex_ubuntu.7z";
+    sha256 = "a30002585194a7cb01985184031ca6250f4f648590715376aa6f164bce8ed898";
+  };
+
+  buildInputs = [
+    alsa-lib
+    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/applications/networking/instant-messengers/wire-desktop/default.nix b/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix
index 4d7a2218e7dfa..97f8e4ea1aea0 100644
--- a/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix
@@ -23,13 +23,13 @@ let
   pname = "wire-desktop";
 
   version = {
-    x86_64-darwin = "3.27.4357";
-    x86_64-linux = "3.27.2944";
+    x86_64-darwin = "3.28.4393";
+    x86_64-linux = "3.28.2946";
   }.${system} or throwSystem;
 
   sha256 = {
-    x86_64-darwin = "0xihg9fzsbwib2fmb1yqx9015i9q4k0ph8lna4mzgicmrjkw54g8";
-    x86_64-linux = "1wqnrmp8q84izvqv25fgks5pv6la3vahm5dsn7bc6zxqb0xz2xvy";
+    x86_64-darwin = "03w8hafwxg4v85s8n3ss6bsr7fipksyjax30dnxxj72x947zygxw";
+    x86_64-linux = "03f1qz0mwn6f14w4g1w72sd5idfyvmv18r5y1h279p56x0i919kq";
   }.${system} or throwSystem;
 
   meta = with lib; {
@@ -47,6 +47,7 @@ let
     '';
     homepage = "https://wire.com/";
     downloadPage = "https://wire.com/download/";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [
       arianvp
diff --git a/pkgs/applications/networking/instant-messengers/zoom-us/default.nix b/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
index 06f9a2d3e8ee7..f1a0de7338344 100644
--- a/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
+++ b/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
@@ -1,6 +1,7 @@
 { stdenv
 , lib
 , fetchurl
+, pipewire
 , makeWrapper
 , xar
 , cpio
@@ -43,24 +44,26 @@ let
   throwSystem = throw "Unsupported system: ${system}";
 
   # Zoom versions are released at different times for each platform
-  version = {
-    aarch64-darwin = "5.10.4.6592";
-    x86_64-darwin = "5.10.4.6592";
-    x86_64-linux = "5.10.6.3192";
-   }.${system} or throwSystem;
+  # and often with different versions.  We write them on three lines
+  # like this (rather than using {}) so that the updater script can
+  # find where to edit them.
+  versions.aarch64-darwin = "5.11.9.10046";
+  versions.x86_64-darwin = "5.11.9.10046";
+  versions.x86_64-linux = "5.11.10.4400";
 
   srcs = {
     aarch64-darwin = fetchurl {
-       url = "https://zoom.us/client/${version}/Zoom.pkg?archType=arm64";
-       sha256 = "0jg5f9hvb67hhfnifpx5fzz65fcijldy1znlia6pqflxwci3m5rq";
+      url = "https://zoom.us/client/${versions.aarch64-darwin}/zoomusInstallerFull.pkg?archType=arm64";
+      name = "zoomusInstallerFull.pkg";
+      hash = "sha256-Z+K811azMRnhptZ1UvM+o5IgE0F4p9BrntJC9IgPU7U=";
     };
     x86_64-darwin = fetchurl {
-      url = "https://zoom.us/client/${version}/Zoom.pkg";
-      sha256 = "1p83691bid8kz5mw09x6l9zvjglfszi5vbhfmbbpiqhiqcxlfz83";
+      url = "https://zoom.us/client/${versions.x86_64-darwin}/zoomusInstallerFull.pkg";
+      hash = "sha256-7U7qT3xlm5LqcJByMWxhZnqs6XBzylEGhqTNUgiaXJY=";
     };
     x86_64-linux = fetchurl {
-      url = "https://zoom.us/client/${version}/zoom_x86_64.pkg.tar.xz";
-      sha256 = "8QIkF5+875VFoGK6T0CROsqML6bJDG934c1gkuz8Klk=";
+      url = "https://zoom.us/client/${versions.x86_64-linux}/zoom_x86_64.pkg.tar.xz";
+      hash = "sha256-Pi1MtuCHzkQACamsNOIS6pbM03L1CmyosbpdrYVNCkQ=";
     };
   };
 
@@ -76,6 +79,7 @@ let
     expat
     libdrm
     libGL
+    pipewire
     fontconfig
     freetype
     gtk3
@@ -107,7 +111,7 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "zoom";
-  inherit version;
+  version = versions.${system} or throwSystem;
 
   src = srcs.${system} or throwSystem;
 
@@ -148,7 +152,7 @@ stdenv.mkDerivation rec {
     substituteInPlace $out/share/applications/Zoom.desktop \
         --replace "Exec=/usr/bin/zoom" "Exec=$out/bin/zoom"
 
-    for i in zopen zoom ZoomLauncher; do
+    for i in aomhost zopen zoom ZoomLauncher; do
       patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/opt/zoom/$i
     done
 
@@ -183,6 +187,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://zoom.us/";
     description = "zoom.us video conferencing application";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
     platforms = builtins.attrNames srcs;
     maintainers = with maintainers; [ danbst tadfisher doronbehar ];
diff --git a/pkgs/applications/networking/instant-messengers/zoom-us/update.sh b/pkgs/applications/networking/instant-messengers/zoom-us/update.sh
index 3ec1cccd0d64a..3684f057a08c3 100755
--- a/pkgs/applications/networking/instant-messengers/zoom-us/update.sh
+++ b/pkgs/applications/networking/instant-messengers/zoom-us/update.sh
@@ -1,10 +1,34 @@
 #!/usr/bin/env nix-shell
-#!nix-shell -i bash -p curl pup common-updater-scripts
+#!nix-shell -i bash -p common-updater-scripts curl jq
 
 set -eu -o pipefail
 
-version="$(curl -Ls https://zoom.us/download\?os\=linux | \
-  pup '.linux-ver-text text{}' | \
-  awk -F'[ ().]' '{printf $2"."$3"."$4"."$6"\n"}')"
+scriptDir=$(cd "${BASH_SOURCE[0]%/*}" && pwd)
+nixpkgs=$(realpath "$scriptDir"/../../../../..)
 
-update-source-version zoom-us "$version"
+echo >&2 "=== Obtaining version data from https://zoom.us/rest/download ..."
+linux_data=$(curl -Ls 'https://zoom.us/rest/download?os=linux' | jq .result.downloadVO)
+mac_data=$(curl -Ls 'https://zoom.us/rest/download?os=mac' | jq .result.downloadVO)
+
+version_aarch64_darwin=$(jq -r .zoomArm64.version <<<"$mac_data")
+version_x86_64_darwin=$(jq -r .zoom.version <<<"$mac_data")
+version_x86_64_linux=$(jq -r .zoom.version <<<"$linux_data")
+
+echo >&2 "=== Downloading packages and computing hashes..."
+# We precalculate the hashes before calling update-source-version
+# because it attempts to calculate each architecture's package's hash
+# by running `nix-build --system <architecture> -A zoom-us.src` which
+# causes cross compiling headaches; using nix-prefetch-url with
+# hard-coded URLs is simpler.  Keep these URLs in sync with the ones
+# in default.nix where `srcs` is defined.
+hash_aarch64_darwin=$(nix hash to-sri --type sha256 $(nix-prefetch-url --type sha256 "https://zoom.us/client/${version_aarch64_darwin}/zoomusInstallerFull.pkg?archType=arm64"))
+hash_x86_64_darwin=$(nix hash to-sri --type sha256 $(nix-prefetch-url --type sha256 "https://zoom.us/client/${version_x86_64_darwin}/zoomusInstallerFull.pkg"))
+hash_x86_64_linux=$(nix hash to-sri --type sha256 $(nix-prefetch-url --type sha256 "https://zoom.us/client/${version_x86_64_linux}/zoom_x86_64.pkg.tar.xz"))
+
+echo >&2 "=== Updating default.nix ..."
+# update-source-version expects to be at the root of nixpkgs
+(cd "$nixpkgs" && update-source-version zoom-us "$version_aarch64_darwin" $hash_aarch64_darwin --system=aarch64-darwin --version-key=versions.aarch64-darwin)
+(cd "$nixpkgs" && update-source-version zoom-us "$version_x86_64_darwin" $hash_x86_64_darwin --system=x86_64-darwin --version-key=versions.x86_64-darwin)
+(cd "$nixpkgs" && update-source-version zoom-us "$version_x86_64_linux" $hash_x86_64_linux --system=x86_64-linux --version-key=versions.x86_64-linux)
+
+echo >&2 "=== Done!"
diff --git a/pkgs/applications/networking/instant-messengers/zulip-term/default.nix b/pkgs/applications/networking/instant-messengers/zulip-term/default.nix
index 1775ce9a48179..cf48ba4420e65 100644
--- a/pkgs/applications/networking/instant-messengers/zulip-term/default.nix
+++ b/pkgs/applications/networking/instant-messengers/zulip-term/default.nix
@@ -7,14 +7,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "zulip-term";
-  version = "0.6.0";
+  version = "0.7.0";
 
   # no tests on PyPI
   src = fetchFromGitHub {
     owner = "zulip";
     repo = "zulip-terminal";
     rev = version;
-    sha256 = "sha256-nlvZaGMVRRCu8PZHxPWjNSxkqhZs0T/tE1js/3pDUFk=";
+    sha256 = "sha256-ZouUU4p1FSGMxPuzDo5P971R+rDXpBdJn2MqvkJO+Fw=";
   };
 
   patches = [
@@ -22,15 +22,17 @@ python3.pkgs.buildPythonApplication rec {
   ];
 
   propagatedBuildInputs = with python3.pkgs; [
-    urwid
-    zulip
-    urwid-readline
     beautifulsoup4
     lxml
-    typing-extensions
+    pygments
+    pyperclip
     python-dateutil
     pytz
+    typing-extensions
     tzlocal
+    urwid
+    urwid-readline
+    zulip
   ];
 
   checkInputs = [
diff --git a/pkgs/applications/networking/instant-messengers/zulip-term/pytest-executable-name.patch b/pkgs/applications/networking/instant-messengers/zulip-term/pytest-executable-name.patch
index 4602a254ab88a..a816993b8c4b5 100644
--- a/pkgs/applications/networking/instant-messengers/zulip-term/pytest-executable-name.patch
+++ b/pkgs/applications/networking/instant-messengers/zulip-term/pytest-executable-name.patch
@@ -1,13 +1,22 @@
 diff --git a/tests/cli/test_run.py b/tests/cli/test_run.py
-index 459aa82..c6e434e 100644
+index 1452cfd..0a21c09 100644
 --- a/tests/cli/test_run.py
 +++ b/tests/cli/test_run.py
-@@ -180,7 +180,7 @@ def test_main_multiple_autohide_options(capsys, options):
-         assert str(e.value) == "2"
+@@ -240,7 +240,7 @@ def test_main_multiple_autohide_options(
+ 
      captured = capsys.readouterr()
-     lines = captured.err.strip('\n')
+     lines = captured.err.strip("\n")
 -    lines = lines.split("pytest: ", 1)[1]
 +    lines = lines.split("__main__.py: ", 1)[1]
-     expected = ("error: argument {}: not allowed "
-                 "with argument {}".format(options[1], options[0]))
+     expected = f"error: argument {options[1]}: not allowed with argument {options[0]}"
      assert lines == expected
+ 
+@@ -277,7 +277,7 @@ def test_main_multiple_notify_options(
+ 
+     captured = capsys.readouterr()
+     lines = captured.err.strip("\n")
+-    lines = lines.split("pytest: ", 1)[1]
++    lines = lines.split("__main__.py: ", 1)[1]
+     expected = f"error: argument {options[1]}: not allowed with argument {options[0]}"
+     assert lines == expected
+