goldwarden: package GUI, drop pinentry

The correct way is to use goldwarden through the programs.goldwarden module
and the correct pinentry flavor based on programs.gnupg.agent.pinentryFlavor is now used.
This commit is contained in:
Sandro Jäckel 2024-03-04 00:59:59 +01:00
parent 3b2d1bebd6
commit 32adfce17c
No known key found for this signature in database
GPG Key ID: 3AF5A43A3EECC2E5
1 changed files with 53 additions and 11 deletions

View File

@ -1,11 +1,14 @@
{ lib
, bash
, buildGoModule
, fetchFromGitHub
, makeBinaryWrapper
, gobject-introspection
, gtk4
, libadwaita
, libfido2
, dbus
, pinentry-gnome3
, nix-update-script
, libnotify
, python3
, wrapGAppsHook
}:
buildGoModule rec {
@ -19,25 +22,64 @@ buildGoModule rec {
hash = "sha256-4KxPtsIEW46p+cFx6yeSdNlsffy9U31k+ZSkE6V0AFc=";
};
postPatch = ''
substituteInPlace browserbiometrics/manifests.go \
--replace-fail "/bin/bash" "${lib.getExe bash}"
substituteInPlace gui/com.quexten.Goldwarden.desktop \
--replace-fail "Exec=goldwarden_ui_main.py" "Exec=$out/bin/goldwarden-gui"
substituteInPlace gui/src/gui/browserbiometrics.py \
--replace-fail "flatpak run --filesystem=home --command=goldwarden com.quexten.Goldwarden" "goldwarden"
substituteInPlace gui/src/gui/ssh.py \
--replace-fail "flatpak run --command=goldwarden com.quexten.Goldwarden" "goldwarden" \
--replace-fail 'SSH_AUTH_SOCK=/home/$USER/.var/app/com.quexten.Goldwarden/data/ssh-auth-sock' 'SSH_AUTH_SOCK=/home/$USER/.goldwarden-ssh-agent.sock'
substituteInPlace gui/src/{linux/main.py,linux/monitors/dbus_monitor.py,gui/settings.py} \
--replace-fail "python3" "${(python3.buildEnv.override { extraLibs = pythonPath; }).interpreter}"
'';
vendorHash = "sha256-IH0p7t1qInA9rNYv6ekxDN/BT5Kguhh4cZfmL+iqwVU=";
ldflags = [ "-s" "-w" ];
nativeBuildInputs = [makeBinaryWrapper];
nativeBuildInputs = [
gobject-introspection
python3.pkgs.wrapPython
wrapGAppsHook
];
buildInputs = [libfido2];
buildInputs = [
gtk4
libadwaita
libfido2
libnotify
];
pythonPath = with python3.pkgs; [
dbus-python
pygobject3
tendo
];
postInstall = ''
wrapProgram $out/bin/goldwarden \
--suffix PATH : ${lib.makeBinPath [dbus pinentry-gnome3]}
chmod +x gui/goldwarden_ui_main.py
ln -s $out/share/goldwarden/goldwarden_ui_main.py $out/bin/goldwarden-gui
mkdir -p $out/share/goldwarden
cp -r gui/* $out/share/goldwarden/
rm $out/share/goldwarden/{com.quexten.Goldwarden.desktop,com.quexten.Goldwarden.metainfo.xml,goldwarden.svg,python3-requirements.json,requirements.txt}
install -Dm644 $src/resources/com.quexten.goldwarden.policy -t $out/share/polkit-1/actions
install -D gui/com.quexten.Goldwarden.desktop -t $out/share/applications
install -D gui/goldwarden.svg -t $out/share/icons/hicolor/scalable/apps
install -Dm644 gui/com.quexten.Goldwarden.metainfo.xml -t $out/share/metainfo
install -Dm644 resources/com.quexten.goldwarden.policy -t $out/share/polkit-1/actions
'';
passthru.updateScript = nix-update-script {};
dontWrapGApps = true;
postFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
wrapPythonProgramsIn $out/share/goldwarden "$out/share/goldwarden $pythonPath"
'';
meta = with lib; {
description = "A feature-packed Bitwarden compatible desktop integration";
description = "Feature-packed Bitwarden compatible desktop integration";
homepage = "https://github.com/quexten/goldwarden";
license = licenses.mit;
maintainers = with maintainers; [ arthsmn ];