From ad09957566386035f1c6922e6344f04172744750 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20de=20Kok?= Date: Sun, 28 Mar 2021 10:40:34 +0200 Subject: [PATCH] _1password-gui: use the upstream tarball rather than AppImage AgileBits now provides tarballs of 1Password for Linux, which is more convenient for us than AppImages. Also include the browser support and keyring helper programs. Thanks to Savanni D'Gerinel for providing many of the changes made in this PR. --- .../misc/1password-gui/default.nix | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/pkgs/applications/misc/1password-gui/default.nix b/pkgs/applications/misc/1password-gui/default.nix index 0b3e21cc03a0..3e4200a7c1bc 100644 --- a/pkgs/applications/misc/1password-gui/default.nix +++ b/pkgs/applications/misc/1password-gui/default.nix @@ -1,6 +1,6 @@ -{ lib, stdenv +{ lib +, stdenv , fetchurl -, appimageTools , makeWrapper , electron_11 , openssl @@ -11,18 +11,12 @@ stdenv.mkDerivation rec { version = "8.0.30"; src = fetchurl { - url = "https://onepassword.s3.amazonaws.com/linux/appimage/${pname}-${version}.AppImage"; - hash = "sha256-j+fp/f8nta+OOuOFU4mmUrGYlVmAqdaXO4rLJ0in+m8="; + url = "https://downloads.1password.com/linux/tar/1password-${version}.tar.gz"; + hash = "sha256-R4Tbu2TAig0iF/IN8hnO3Bzqqj6Ru1YyyGhzraM7/9Y="; }; nativeBuildInputs = [ makeWrapper ]; - appimageContents = appimageTools.extractType2 { - name = "${pname}-${version}"; - inherit src; - }; - - dontUnpack = true; dontConfigure = true; dontBuild = true; @@ -35,20 +29,33 @@ stdenv.mkDerivation rec { mkdir -p $out/bin $out/share/1password # Applications files. - cp -a ${appimageContents}/{locales,resources} $out/share/${pname} + cp -a {locales,resources} $out/share/${pname} + install -Dm0755 -t $out/share/${pname} {1Password-BrowserSupport,1Password-KeyringHelper} # Desktop file. - install -Dt $out/share/applications ${appimageContents}/${pname}.desktop + install -Dt $out/share/applications usr/share/applications/${pname}.desktop substituteInPlace $out/share/applications/${pname}.desktop \ - --replace 'Exec=AppRun' 'Exec=${pname}' + --replace 'Exec=/opt/1Password/${pname}' 'Exec=${pname}' # Icons. - cp -a ${appimageContents}/usr/share/icons $out/share + cp -a usr/share/icons $out/share # Wrap the application with Electron. makeWrapper "${electron_11}/bin/electron" "$out/bin/${pname}" \ --add-flags "$out/share/${pname}/resources/app.asar" \ --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath runtimeLibs}" + + # Set the interpreter for the helper binaries and wrap them with + # the runtime libraries. + interp="$(cat $NIX_CC/nix-support/dynamic-linker)" + patchelf --set-interpreter $interp \ + $out/share/$pname/{1Password-BrowserSupport,1Password-KeyringHelper} + + wrapProgram $out/share/${pname}/1Password-BrowserSupport \ + --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath runtimeLibs}" + + wrapProgram $out/share/${pname}/1Password-KeyringHelper \ + --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath runtimeLibs}" ''; passthru.updateScript = ./update.sh;