From 190ea7b09e4f24af8b8105cdf3a8e67d5b6828c0 Mon Sep 17 00:00:00 2001 From: chayleaf Date: Fri, 13 Oct 2023 04:24:16 +0700 Subject: [PATCH] keepassxc: add firefox native messaging host file When using a Firefox fork, upstream package relies on you entering the browser user config path manually and writes the native messaging host file to that path. It should be much more convenient to manage it in Nix. --- pkgs/applications/misc/keepassxc/default.nix | 6 ++++++ .../misc/keepassxc/firefox-native-messaging-host.json | 9 +++++++++ .../applications/networking/browsers/firefox/wrapper.nix | 2 ++ 3 files changed, 17 insertions(+) create mode 100644 pkgs/applications/misc/keepassxc/firefox-native-messaging-host.json diff --git a/pkgs/applications/misc/keepassxc/default.nix b/pkgs/applications/misc/keepassxc/default.nix index 762434ef12c1..49406fc0114b 100644 --- a/pkgs/applications/misc/keepassxc/default.nix +++ b/pkgs/applications/misc/keepassxc/default.nix @@ -97,6 +97,12 @@ stdenv.mkDerivation rec { wrapQtApp "$out/Applications/KeePassXC.app/Contents/MacOS/KeePassXC" ''; + # See https://github.com/keepassxreboot/keepassxc/blob/cd7a53abbbb81e468efb33eb56eefc12739969b8/src/browser/NativeMessageInstaller.cpp#L317 + postInstall = lib.optionalString withKeePassBrowser '' + mkdir -p "$out/lib/mozilla/native-messaging-hosts" + substituteAll "${./firefox-native-messaging-host.json}" "$out/lib/mozilla/native-messaging-hosts/org.keepassxc.keepassxc_browser.json" + ''; + buildInputs = [ curl botan2 diff --git a/pkgs/applications/misc/keepassxc/firefox-native-messaging-host.json b/pkgs/applications/misc/keepassxc/firefox-native-messaging-host.json new file mode 100644 index 000000000000..70f1b26041f3 --- /dev/null +++ b/pkgs/applications/misc/keepassxc/firefox-native-messaging-host.json @@ -0,0 +1,9 @@ +{ + "name": "org.keepassxc.keepassxc_browser", + "description": "KeePassXC integration with native messaging support", + "path": "@out@/bin/keepassxc-proxy", + "type": "stdio", + "allowed_extensions": [ + "keepassxc-browser@keepassxc.org" + ] +} diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index 6561e51d7d95..28e97bcaa41e 100644 --- a/pkgs/applications/networking/browsers/firefox/wrapper.nix +++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -8,6 +8,7 @@ , browserpass, gnome-browser-connector, uget-integrator, plasma5Packages, bukubrow, pipewire , tridactyl-native , fx-cast-bridge +, keepassxc , udev , libkrb5 , libva @@ -70,6 +71,7 @@ let ++ lib.optional (cfg.enableUgetIntegrator or false) uget-integrator ++ lib.optional (cfg.enablePlasmaBrowserIntegration or false) plasma5Packages.plasma-browser-integration ++ lib.optional (cfg.enableFXCastBridge or false) fx-cast-bridge + ++ lib.optional (cfg.enableKeePassXC or false) keepassxc ++ extraNativeMessagingHosts ; libs = lib.optionals stdenv.isLinux [ udev libva mesa libnotify xorg.libXScrnSaver cups pciutils ]