_1password-gui: 8.0.33-52 -> 8.0.34
This includes an overhaul of the install script, using patchelf to set the interpreter and the libraries. This reflects a lot of what I've learned about electron + nixos over the last few months. This change is motivated by the fact that 1Password's version of electron changed, probably leading to crashes that I've been seeing when I try to update the Nix derivation to the latest versions. Co-authored-by: Daniël de Kok <me@github.danieldk.eu>
This commit is contained in:
parent
6220c3ed54
commit
720de418f7
1 changed files with 81 additions and 45 deletions
|
@ -2,76 +2,112 @@
|
|||
, stdenv
|
||||
, fetchurl
|
||||
, makeWrapper
|
||||
, electron_11
|
||||
, openssl
|
||||
, alsaLib
|
||||
, at-spi2-atk
|
||||
, at-spi2-core
|
||||
, atk
|
||||
, cairo
|
||||
, cups
|
||||
, dbus
|
||||
, expat
|
||||
, gdk-pixbuf
|
||||
, glib
|
||||
, gtk3
|
||||
, libX11
|
||||
, libXcomposite
|
||||
, libXdamage
|
||||
, libXext
|
||||
, libXfixes
|
||||
, libXrandr
|
||||
, libdrm
|
||||
, libxcb
|
||||
, libxkbcommon
|
||||
, libxshmfence
|
||||
, mesa
|
||||
, nspr
|
||||
, nss
|
||||
, pango
|
||||
, systemd
|
||||
, xdg-utils
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "1password";
|
||||
version = "8.0.33-53.BETA";
|
||||
version = "8.0.34";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://downloads.1password.com/linux/tar/beta/x86_64/1password-${version}.x64.tar.gz";
|
||||
hash = "sha256-YUYER+UiM1QEDgGl0P9bIT65YVacUnuGtQVkV91teEU=";
|
||||
url = "https://downloads.1password.com/linux/tar/stable/x86_64/1password-${version}.x64.tar.gz";
|
||||
sha256 = "0mp119v5vgsva7pnxpsbq4xhh4vbhwv7ga9b5b7f6slx3biy1wmh";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
dontPatchELF = true;
|
||||
|
||||
installPhase = let
|
||||
runtimeLibs = [
|
||||
openssl.out
|
||||
stdenv.cc.cc
|
||||
];
|
||||
in ''
|
||||
mkdir -p $out/bin $out/share/1password
|
||||
installPhase =
|
||||
let rpath = lib.makeLibraryPath [
|
||||
alsaLib
|
||||
at-spi2-atk
|
||||
at-spi2-core
|
||||
atk
|
||||
cairo
|
||||
cups
|
||||
dbus
|
||||
expat
|
||||
gdk-pixbuf
|
||||
glib
|
||||
gtk3
|
||||
libX11
|
||||
libXcomposite
|
||||
libXdamage
|
||||
libXext
|
||||
libXfixes
|
||||
libXrandr
|
||||
libdrm
|
||||
libxcb
|
||||
libxkbcommon
|
||||
libxshmfence
|
||||
mesa
|
||||
nspr
|
||||
nss
|
||||
pango
|
||||
systemd
|
||||
] + ":${stdenv.cc.cc.lib}/lib64";
|
||||
in ''
|
||||
runHook preInstall
|
||||
|
||||
# Applications files.
|
||||
cp -a {locales,resources} $out/share/${pname}
|
||||
install -Dm0755 -t $out/share/${pname} {1Password-BrowserSupport,1Password-KeyringHelper}
|
||||
mkdir -p $out/bin $out/share/1password
|
||||
cp -a * $out/share/1password
|
||||
|
||||
# Desktop file.
|
||||
install -Dt $out/share/applications resources/${pname}.desktop
|
||||
substituteInPlace $out/share/applications/${pname}.desktop \
|
||||
--replace 'Exec=/opt/1Password/${pname}' 'Exec=${pname}'
|
||||
# Desktop file
|
||||
install -Dt $out/share/applications resources/${pname}.desktop
|
||||
substituteInPlace $out/share/applications/${pname}.desktop \
|
||||
--replace 'Exec=/opt/1Password/${pname}' 'Exec=${pname}'
|
||||
|
||||
# Icons.
|
||||
cp -a resources/icons $out/share
|
||||
# Icons
|
||||
cp -a resources/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}"
|
||||
interp="$(cat $NIX_CC/nix-support/dynamic-linker)"
|
||||
patchelf --set-interpreter $interp $out/share/1password/{1password,1Password-BrowserSupport,1Password-KeyringHelper}
|
||||
patchelf --set-rpath ${rpath}:$out/share/1password $out/share/1password/{1password,1Password-BrowserSupport,1Password-KeyringHelper}
|
||||
for file in $(find $out -type f -name \*.so\* ); do
|
||||
patchelf --set-rpath ${rpath}:$out/share/1password $file
|
||||
done
|
||||
|
||||
# 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}
|
||||
makeWrapper $out/share/1password/1password $out/bin/1password \
|
||||
--prefix PATH : ${xdg-utils}/bin
|
||||
|
||||
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}"
|
||||
'';
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.updateScript = ./update.sh;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Multi-platform password manager";
|
||||
longDescription = ''
|
||||
1Password is a multi-platform package manager.
|
||||
|
||||
The Linux version is currently a development preview and can
|
||||
only be used to search, view, and copy items. However items
|
||||
cannot be created or edited.
|
||||
'';
|
||||
homepage = "https://1password.com/";
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ danieldk timstott ];
|
||||
maintainers = with maintainers; [ danieldk timstott savannidgerinel ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue