summary refs log tree commit diff
path: root/pkgs/applications/misc/authy/default.nix
blob: dc8786dcce2b9ea1b0dde1b8cf76610993f50537 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
{ alsa-lib, at-spi2-atk, at-spi2-core, atk, autoPatchelfHook, cairo, cups
, dbus, electron_9, expat, fetchurl, gdk-pixbuf, glib, gtk3, lib
, libappindicator-gtk3, libdbusmenu-gtk3, libuuid, makeWrapper
, nspr, nss, pango, squashfsTools, stdenv, systemd, xorg
}:

let
  # Currently only works with electron 9
  electron = electron_9;
in

stdenv.mkDerivation rec {
  pname = "authy";
  version = "1.8.3";
  rev = "5";

  buildInputs = [
    alsa-lib
    at-spi2-atk
    at-spi2-core
    atk
    cairo
    cups
    dbus
    expat
    gdk-pixbuf
    glib
    gtk3
    libappindicator-gtk3
    libdbusmenu-gtk3
    libuuid
    nspr
    nss
    pango
    stdenv.cc.cc
    systemd
    xorg.libX11
    xorg.libXScrnSaver
    xorg.libXcomposite
    xorg.libXcursor
    xorg.libXdamage
    xorg.libXext
    xorg.libXfixes
    xorg.libXi
    xorg.libXrandr
    xorg.libXrender
    xorg.libXtst
    xorg.libxcb
  ];

  src = fetchurl {
    url = "https://api.snapcraft.io/api/v1/snaps/download/H8ZpNgIoPyvmkgxOWw5MSzsXK1wRZiHn_${rev}.snap";
    sha256 = "1yfvkmy34mc1dan9am11yka88jv7a4dslsszy4kcc8vap4cjmgpn";
  };

  nativeBuildInputs = [ autoPatchelfHook makeWrapper squashfsTools ];

  unpackPhase = ''
    runHook preUnpack
    unsquashfs "$src"
    cd squashfs-root
    if ! grep -q '${version}' meta/snap.yaml; then
      echo "Package version differs from version found in snap metadata:"
      grep 'version: ' meta/snap.yaml
      echo "While the nix package specifies: ${version}."
      echo "You probably chose the wrong revision or forgot to update the nix version."
      exit 1
    fi
    runHook postUnpack
  '';

  installPhase = ''
    runHook preInstall

    mkdir -p $out/lib/

    cp -r ./* $out/
    rm -R ./*

    # The snap package has the `ffmpeg.so` file which is copied over with other .so files
    mv $out/*.so $out/lib/

    # Replace icon name in Desktop file
    sed -i 's|''${SNAP}/meta/gui/icon.png|authy|g' "$out/meta/gui/authy.desktop"

    # Move the desktop file, icon, binary to their appropriate locations
    mkdir -p $out/bin $out/share/applications $out/share/pixmaps/apps
    cp $out/meta/gui/authy.desktop $out/share/applications/
    cp $out/meta/gui/icon.png $out/share/pixmaps/authy.png
    cp $out/${pname} $out/bin/${pname}

    # Cleanup
    rm -r $out/{data-dir,gnome-platform,meta,scripts,usr,*.sh,*.so}

    runHook postInstall
  '';

  postFixup = ''
    makeWrapper ${electron}/bin/electron $out/bin/${pname} \
      --add-flags $out/resources/app.asar
  '';

  meta = with lib; {
    homepage = "https://www.authy.com";
    description = "Twilio Authy two factor authentication desktop application";
    license = licenses.unfree;
    maintainers = with maintainers; [ iammrinal0 ];
    platforms = [ "x86_64-linux" ];
  };
}