diff --git a/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix b/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix index f2ae27e2c7d..3792c91ea91 100644 --- a/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix +++ b/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix @@ -1,103 +1,132 @@ -{ stdenv, fetchurl, dpkg, makeDesktopItem, libuuid, gtk3, atk, cairo, pango -, gdk_pixbuf, glib, freetype, fontconfig, dbus, libnotify, libX11, xorg, libXi -, libXcursor, libXdamage, libXrandr, libXcomposite, libXext, libXfixes -, libXrender, libXtst, libXScrnSaver, nss, nspr, alsaLib, cups, expat, udev -, xdg_utils, hunspell, pulseaudio, pciutils, at-spi2-atk +{ stdenv, fetchurl, makeDesktopItem + +, alsaLib, at-spi2-atk, atk, cairo, cups, dbus, dpkg, expat, fontconfig +, freetype, gdk_pixbuf, glib, gtk3, hunspell, libX11, libXScrnSaver +, libXcomposite, libXcursor, libXdamage, libXext, libXfixes, libXi, libXrandr +, libXrender, libXtst, libnotify, libuuid, nspr, nss, pango, pciutils +, pulseaudio, udev, xdg_utils, xorg + +, cpio, xar }: let - rpath = stdenv.lib.makeLibraryPath [ - alsaLib - atk - cairo - cups - dbus - expat - fontconfig - freetype - gdk_pixbuf - glib - gtk3 - at-spi2-atk - hunspell - libuuid - libnotify - libX11 - libXcomposite - libXcursor - libXdamage - libXext - libXfixes - libXi - libXrandr - libXrender - libXScrnSaver - libXtst - nspr - nss - pango - pciutils - pulseaudio - stdenv.cc.cc - udev - xdg_utils - xorg.libxcb - ]; + inherit (stdenv.hostPlatform) system; -in - -stdenv.mkDerivation rec { pname = "wire-desktop"; - version = "3.9.2895"; - src = fetchurl { - url = "https://wire-app.wire.com/linux/debian/pool/main/Wire-${version}_amd64.deb"; - sha256 = "0wrn95m64j4b7ym44h9zawq13kg4m12aixlyyzp56bfyczmjq4a5"; - }; + version = { + "x86_64-linux" = "3.9.2895"; + "x86_64-darwin" = "3.9.2943"; + }.${system}; - desktopItem = makeDesktopItem { - name = "wire-desktop"; - exec = "wire-desktop %U"; - icon = "wire-desktop"; - comment = "Secure messenger for everyone"; - desktopName = "Wire Desktop"; - genericName = "Secure messenger"; - categories = "Network;InstantMessaging;Chat;VideoConference"; - }; - - dontBuild = true; - dontPatchELF = true; - dontConfigure = true; - - nativeBuildInputs = [ dpkg ]; - unpackPhase = "dpkg-deb -x $src ."; - installPhase = '' - mkdir -p "$out" - cp -R "opt" "$out" - cp -R "usr/share" "$out/share" - - chmod -R g-w "$out" - - # Patch wire-desktop - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - --set-rpath "${rpath}:$out/opt/Wire" \ - "$out/opt/Wire/wire-desktop" - - # Symlink to bin - mkdir -p "$out/bin" - ln -s "$out/opt/Wire/wire-desktop" "$out/bin/wire-desktop" - - # Desktop file - mkdir -p "$out/share/applications" - cp "${desktopItem}/share/applications/"* "$out/share/applications" - ''; + sha256 = { + "x86_64-linux" = "0wrn95m64j4b7ym44h9zawq13kg4m12aixlyyzp56bfyczmjq4a5"; + "x86_64-darwin" = "1y1bzsjmjrj518q29xfx6gg1nhdbaz7y5hzaqrp241az6plp090k"; + }.${system}; meta = with stdenv.lib; { - description = "A modern, secure messenger"; + description = "A modern, secure messenger for everyone"; + longDescription = '' + Wire Personal is a secure, privacy-friendly messenger. It combines useful + and fun features, audited security, and a beautiful, distinct user + interface. It does not require a phone number to register and chat. + + * End-to-end encrypted chats, calls, and files + * Crystal clear voice and video calling + * File and screen sharing + * Timed messages and chats + * Synced across your phone, desktop and tablet + ''; homepage = https://wire.com/; - license = licenses.gpl3; - maintainers = with maintainers; [ worldofpeace ]; - platforms = [ "x86_64-linux" ]; + downloadPage = https://wire.com/download/; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ toonn worldofpeace ]; + platforms = [ "x86_64-darwin" "x86_64-linux" ]; }; -} + + linux = stdenv.mkDerivation rec { + inherit pname version meta; + + src = fetchurl { + url = "https://wire-app.wire.com/linux/debian/pool/main/" + + "Wire-${version}_amd64.deb"; + inherit sha256; + }; + + desktopItem = makeDesktopItem { + name = "wire-desktop"; + exec = "wire-desktop %U"; + icon = "wire-desktop"; + comment = "Secure messenger for everyone"; + desktopName = "Wire Desktop"; + genericName = "Secure messenger"; + categories = "Network;InstantMessaging;Chat;VideoConference"; + }; + + dontBuild = true; + dontPatchELF = true; + dontConfigure = true; + + nativeBuildInputs = [ dpkg ]; + rpath = stdenv.lib.makeLibraryPath [ + alsaLib at-spi2-atk atk cairo cups dbus expat fontconfig freetype + gdk_pixbuf glib gtk3 hunspell libX11 libXScrnSaver libXcomposite + libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender + libXtst libnotify libuuid nspr nss pango pciutils pulseaudio + stdenv.cc.cc udev xdg_utils xorg.libxcb + ]; + + unpackPhase = "dpkg-deb -x $src ."; + + installPhase = '' + mkdir -p "$out" + cp -R "opt" "$out" + cp -R "usr/share" "$out/share" + chmod -R g-w "$out" + + # Patch wire-desktop + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${rpath}:$out/opt/Wire" \ + "$out/opt/Wire/wire-desktop" + + # Symlink to bin + mkdir -p "$out/bin" + ln -s "$out/opt/Wire/wire-desktop" "$out/bin/wire-desktop" + + # Desktop file + mkdir -p "$out/share/applications" + cp "${desktopItem}/share/applications/"* "$out/share/applications" + ''; + }; + + darwin = stdenv.mkDerivation rec { + inherit pname version meta; + + src = fetchurl { + url = "https://github.com/wireapp/wire-desktop/releases/download/" + + "macos%2F${version}/Wire.pkg"; + inherit sha256; + }; + + buildInputs = [ cpio xar ]; + + unpackPhase = '' + xar -xf $src + cd com.wearezeta.zclient.mac.pkg + ''; + + + buildPhase = '' + cat Payload | gunzip -dc | cpio -i + ''; + + installPhase = '' + mkdir -p $out/Applications + cp -r Wire.app $out/Applications + ''; + }; + +in if stdenv.isDarwin + then darwin + else linux