{ 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"; # curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/authy?channel=stable' | jq '.download_url,.version' version = "2.1.0"; rev = "9"; 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 = "sha256-RxjxOYrbneVctyTJTMvoN/UdREohaZWb1kTdEeI6mUU="; }; 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" ]; }; }