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 1/2] _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 0b3e21cc03a..3e4200a7c1b 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; From f5c9166536988eeb29ff2aaebeb9b6623642bc02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20de=20Kok?= Date: Sat, 1 May 2021 11:11:43 +0200 Subject: [PATCH 2/2] _1password-gui: 8.0.30 -> 8.0.33-53.BETA Also modify the update script to work again. Note that prior versions were also part of the Linux beta. So, the use of BETA in the version does not mean that this update switch from a stable version to a beta version. --- pkgs/applications/misc/1password-gui/default.nix | 10 +++++----- pkgs/applications/misc/1password-gui/update.sh | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/applications/misc/1password-gui/default.nix b/pkgs/applications/misc/1password-gui/default.nix index 3e4200a7c1b..9f062aa20fc 100644 --- a/pkgs/applications/misc/1password-gui/default.nix +++ b/pkgs/applications/misc/1password-gui/default.nix @@ -8,11 +8,11 @@ stdenv.mkDerivation rec { pname = "1password"; - version = "8.0.30"; + version = "8.0.33-53.BETA"; src = fetchurl { - url = "https://downloads.1password.com/linux/tar/1password-${version}.tar.gz"; - hash = "sha256-R4Tbu2TAig0iF/IN8hnO3Bzqqj6Ru1YyyGhzraM7/9Y="; + url = "https://downloads.1password.com/linux/tar/beta/x86_64/1password-${version}.x64.tar.gz"; + hash = "sha256-YUYER+UiM1QEDgGl0P9bIT65YVacUnuGtQVkV91teEU="; }; nativeBuildInputs = [ makeWrapper ]; @@ -33,12 +33,12 @@ stdenv.mkDerivation rec { install -Dm0755 -t $out/share/${pname} {1Password-BrowserSupport,1Password-KeyringHelper} # Desktop file. - install -Dt $out/share/applications usr/share/applications/${pname}.desktop + install -Dt $out/share/applications resources/${pname}.desktop substituteInPlace $out/share/applications/${pname}.desktop \ --replace 'Exec=/opt/1Password/${pname}' 'Exec=${pname}' # Icons. - cp -a usr/share/icons $out/share + cp -a resources/icons $out/share # Wrap the application with Electron. makeWrapper "${electron_11}/bin/electron" "$out/bin/${pname}" \ diff --git a/pkgs/applications/misc/1password-gui/update.sh b/pkgs/applications/misc/1password-gui/update.sh index 7703aba9984..8ebdaca7117 100755 --- a/pkgs/applications/misc/1password-gui/update.sh +++ b/pkgs/applications/misc/1password-gui/update.sh @@ -1,5 +1,5 @@ #!/usr/bin/env nix-shell #!nix-shell -i bash -p curl gnused common-updater-scripts -version="$(curl -sL https://onepassword.s3.amazonaws.com/linux/debian/dists/edge/main/binary-amd64/Packages | sed -r -n 's/^Version: (.*)-[0-9]+/\1/p' | head -n1)" +version="$(curl -sL https://onepassword.s3.amazonaws.com/linux/debian/dists/edge/main/binary-amd64/Packages | sed -r -n 's/^Version: (.*)/\1/p' | head -n1)" update-source-version _1password-gui "$version"