diff options
author | worldofpeace <worldofpeace@protonmail.ch> | 2019-07-27 13:48:22 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-27 13:48:22 -0400 |
commit | ecc48146daa9a338a643bf858ac61b882d40331f (patch) | |
tree | 7ca9adb9f9b2b0f1fc09bbf8053e9ec0881685a8 | |
parent | b5590fff46b85fec36ceac6a84b29b4c4eb8c3f7 (diff) | |
parent | 4665e883b26bee9ca4d351a4a1f6abf0e36cfb25 (diff) | |
download | nixpkgs-ecc48146daa9a338a643bf858ac61b882d40331f.tar nixpkgs-ecc48146daa9a338a643bf858ac61b882d40331f.tar.gz nixpkgs-ecc48146daa9a338a643bf858ac61b882d40331f.tar.bz2 nixpkgs-ecc48146daa9a338a643bf858ac61b882d40331f.tar.lz nixpkgs-ecc48146daa9a338a643bf858ac61b882d40331f.tar.xz nixpkgs-ecc48146daa9a338a643bf858ac61b882d40331f.tar.zst nixpkgs-ecc48146daa9a338a643bf858ac61b882d40331f.zip |
Merge pull request #64931 from toonn/wire-desktop-refactor
wire-desktop: refactor to add Darwin support
-rw-r--r-- | pkgs/applications/networking/instant-messengers/wire-desktop/default.nix | 201 |
1 files changed, 115 insertions, 86 deletions
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 - ]; - -in - -stdenv.mkDerivation rec { + inherit (stdenv.hostPlatform) system; + 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}; + + sha256 = { + "x86_64-linux" = "0wrn95m64j4b7ym44h9zawq13kg4m12aixlyyzp56bfyczmjq4a5"; + "x86_64-darwin" = "1y1bzsjmjrj518q29xfx6gg1nhdbaz7y5hzaqrp241az6plp090k"; + }.${system}; + + meta = with stdenv.lib; { + 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/; + downloadPage = https://wire.com/download/; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ toonn worldofpeace ]; + platforms = [ "x86_64-darwin" "x86_64-linux" ]; }; - 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"; + 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" + ''; }; - dontBuild = true; - dontPatchELF = true; - dontConfigure = true; + darwin = stdenv.mkDerivation rec { + inherit pname version meta; - nativeBuildInputs = [ dpkg ]; - unpackPhase = "dpkg-deb -x $src ."; - installPhase = '' - mkdir -p "$out" - cp -R "opt" "$out" - cp -R "usr/share" "$out/share" + src = fetchurl { + url = "https://github.com/wireapp/wire-desktop/releases/download/" + + "macos%2F${version}/Wire.pkg"; + inherit sha256; + }; - chmod -R g-w "$out" + buildInputs = [ cpio xar ]; - # Patch wire-desktop - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - --set-rpath "${rpath}:$out/opt/Wire" \ - "$out/opt/Wire/wire-desktop" + unpackPhase = '' + xar -xf $src + cd com.wearezeta.zclient.mac.pkg + ''; - # 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" - ''; + buildPhase = '' + cat Payload | gunzip -dc | cpio -i + ''; - meta = with stdenv.lib; { - description = "A modern, secure messenger"; - homepage = https://wire.com/; - license = licenses.gpl3; - maintainers = with maintainers; [ worldofpeace ]; - platforms = [ "x86_64-linux" ]; + installPhase = '' + mkdir -p $out/Applications + cp -r Wire.app $out/Applications + ''; }; -} + +in if stdenv.isDarwin + then darwin + else linux |