diff options
Diffstat (limited to 'pkgs/applications/networking/instant-messengers')
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 + |