summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorK900 <me@0upti.me>2023-10-22 01:30:48 +0300
committerK900 <me@0upti.me>2023-10-22 14:22:35 +0300
commit0f6a3ce2a8cf02a733ef0136a35f77741b4a42fb (patch)
treefb10f959bc3f418827fc6c4d4e795c4d8ba818b1
parentmoodle: 4.1.4 -> 4.3 (#260399) (diff)
downloadnixpkgs-origin/continued-firefox-cleanups.tar.gz
firefox: start killing all the per-extension optionsorigin/continued-firefox-cleanups
-rw-r--r--nixos/modules/programs/browserpass.nix2
-rw-r--r--nixos/modules/programs/firefox.nix96
-rw-r--r--nixos/modules/services/desktops/gnome/gnome-browser-connector.nix2
-rw-r--r--nixos/modules/services/x11/desktop-managers/plasma5.nix2
-rw-r--r--pkgs/applications/networking/browsers/firefox/wrapper.nix37
5 files changed, 92 insertions, 47 deletions
diff --git a/nixos/modules/programs/browserpass.nix b/nixos/modules/programs/browserpass.nix
index abd99056ff3b..a9670a37e618 100644
--- a/nixos/modules/programs/browserpass.nix
+++ b/nixos/modules/programs/browserpass.nix
@@ -27,6 +27,6 @@ with lib;
"opt/brave/native-messaging-hosts/${appId}".source = source "hosts/chromium";
"opt/brave/policies/managed/${appId}".source = source "policies/chromium";
};
- programs.firefox.wrapperConfig.enableBrowserpass = true;
+ programs.firefox.nativeMessagingHosts.packages = [ pkgs.browserpass ];
};
}
diff --git a/nixos/modules/programs/firefox.nix b/nixos/modules/programs/firefox.nix
index 813e0e0105f6..9b59c7ad44b8 100644
--- a/nixos/modules/programs/firefox.nix
+++ b/nixos/modules/programs/firefox.nix
@@ -5,8 +5,6 @@ with lib;
let
cfg = config.programs.firefox;
- nmh = cfg.nativeMessagingHosts;
-
policyFormat = pkgs.formats.json { };
organisationInfo = ''
@@ -17,6 +15,50 @@ let
given control of your browser, unless of course they also control your
NixOS configuration.
'';
+
+ # deprecated per-native-messaging-host options
+ nmhOptions = {
+ browserpass = {
+ name = "Browserpass";
+ package = pkgs.browserpass;
+ };
+ bukubrow = {
+ name = "Bukubrow";
+ package = pkgs.bukubrow;
+ };
+ euwebid = {
+ name = "Web eID";
+ package = pkgs.web-eid-app;
+ };
+ ff2mpv = {
+ name = "ff2mpv";
+ package = pkgs.ff2mpv;
+ };
+ fxCast = {
+ name = "fx_cast";
+ package = pkgs.fx-cast-bridge;
+ };
+ gsconnect = {
+ name = "GSConnect";
+ package = pkgs.gnomeExtensions.gsconnect;
+ };
+ jabref = {
+ name = "JabRef";
+ package = pkgs.jabref;
+ };
+ passff = {
+ name = "PassFF";
+ package = pkgs.passff-host;
+ };
+ tridactyl = {
+ name = "Tridactyl";
+ package = pkgs.tridactyl-native;
+ };
+ ugetIntegrator = {
+ name = "Uget Integrator";
+ package = pkgs.uget-integrator;
+ };
+ };
in
{
options.programs.firefox = {
@@ -204,31 +246,30 @@ in
'';
};
- nativeMessagingHosts = mapAttrs (_: v: mkEnableOption (mdDoc v)) {
- browserpass = "Browserpass support";
- bukubrow = "Bukubrow support";
- euwebid = "Web eID support";
- ff2mpv = "ff2mpv support";
- fxCast = "fx_cast support";
- gsconnect = "GSConnect support";
- jabref = "JabRef support";
- passff = "PassFF support";
- tridactyl = "Tridactyl support";
- ugetIntegrator = "Uget Integrator support";
- };
+ nativeMessagingHosts = ({
+ packages = mkOption {
+ type = types.listOf types.package;
+ default = [];
+ description = mdDoc ''
+ Additional packages containing native messaging hosts that should be made available to Firefox extensions.
+ '';
+ };
+ }) // (mapAttrs (k: v: mkEnableOption (mdDoc "${v.name} support")) nmhOptions);
};
- config = mkIf cfg.enable {
+ config = let
+ forEachEnabledNmh = fn: flatten (mapAttrsToList (lib.optional cfg.nativeMessagingHosts.${k} (fn k v)) fn nmhOptions);
+ in mkIf cfg.enable {
+ warnings = forEachEnabledNmh (k: v:
+ "The `programs.firefox.nativeMessagingHosts.${k}` option is deprecated, " +
+ "please add `${v.package.pname}` to `programs.firefox.nativeMessagingHosts.packages` instead."
+ );
+ programs.firefox.nativeMessagingHosts.packages = forEachEnabledNmh (_: v: v.package);
+
environment.systemPackages = [
(cfg.package.override (old: {
- extraPrefs = cfg.autoConfig;
- extraNativeMessagingHosts =
- old.extraNativeMessagingHosts or []
- ++ optional nmh.ff2mpv pkgs.ff2mpv
- ++ optional nmh.euwebid pkgs.web-eid-app
- ++ optional nmh.gsconnect pkgs.gnomeExtensions.gsconnect
- ++ optional nmh.jabref pkgs.jabref
- ++ optional nmh.passff pkgs.passff-host;
+ extraPrefs = old.extraPrefs // cfg.autoConfig;
+ nativeMessagingHosts = old.nativeMessagingHosts or [] ++ cfg.nativeMessagingHosts.packages;
cfg = let
# copy-pasted from the wrapper; TODO: figure out fix
applicationName = cfg.package.binaryName or (lib.getName cfg.package);
@@ -236,14 +277,7 @@ in
oldCfg = old.cfg or {};
nixpkgsConfig = pkgs.config.${applicationName} or {};
optionConfig = cfg.wrapperConfig;
- nmhConfig = {
- enableBrowserpass = nmh.browserpass;
- enableBukubrow = nmh.bukubrow;
- enableTridactylNative = nmh.tridactyl;
- enableUgetIntegrator = nmh.ugetIntegrator;
- enableFXCastBridge = nmh.fxCast;
- };
- in oldCfg // nixpkgsConfig // optionConfig // nmhConfig;
+ in oldCfg // nixpkgsConfig // optionConfig;
}))
];
diff --git a/nixos/modules/services/desktops/gnome/gnome-browser-connector.nix b/nixos/modules/services/desktops/gnome/gnome-browser-connector.nix
index d18e303891e4..4f680eabbe15 100644
--- a/nixos/modules/services/desktops/gnome/gnome-browser-connector.nix
+++ b/nixos/modules/services/desktops/gnome/gnome-browser-connector.nix
@@ -42,6 +42,6 @@ in
services.dbus.packages = [ pkgs.gnome-browser-connector ];
- programs.firefox.wrapperConfig.enableGnomeExtensions = true;
+ programs.firefox.nativeMessagingHosts.packages = [ pkgs.gnome-browser-connector ];
};
}
diff --git a/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixos/modules/services/x11/desktop-managers/plasma5.nix
index 285d0a181931..fc3287045710 100644
--- a/nixos/modules/services/x11/desktop-managers/plasma5.nix
+++ b/nixos/modules/services/x11/desktop-managers/plasma5.nix
@@ -379,7 +379,7 @@ in
# Update the start menu for each user that is currently logged in
system.userActivationScripts.plasmaSetup = activationScript;
- programs.firefox.wrapperConfig.enablePlasmaBrowserIntegration = true;
+ programs.firefox.nativeMessagingHosts.packages = [ pkgs.plasma5Packages.plasma-browser-integration ];
})
(mkIf (cfg.kwinrc != {}) {
diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix
index 28e97bcaa41e..ed1ec5692a0c 100644
--- a/pkgs/applications/networking/browsers/firefox/wrapper.nix
+++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix
@@ -34,6 +34,7 @@ let
, nameSuffix ? ""
, icon ? applicationName
, wmClass ? applicationName
+ , nativeMessagingHosts ? []
, extraNativeMessagingHosts ? []
, pkcs11Modules ? []
, useGlvnd ? true
@@ -62,18 +63,28 @@ let
# PCSC-Lite daemon (services.pcscd) also must be enabled for firefox to access smartcards
smartcardSupport = cfg.smartcardSupport or false;
- nativeMessagingHosts =
- [ ]
- ++ lib.optional (cfg.enableBrowserpass or false) (lib.getBin browserpass)
- ++ lib.optional (cfg.enableBukubrow or false) bukubrow
- ++ lib.optional (cfg.enableTridactylNative or false) tridactyl-native
- ++ lib.optional (cfg.enableGnomeExtensions or false) gnome-browser-connector
- ++ 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
- ;
+ deprecatedNativeMessagingHost = option: pkg:
+ if (cfg.${option} or false)
+ then
+ lib.warn "The cfg.${option} argument for `firefox.override` is deprecated, please add `pkgs.${pkg.pname}` to `nativeMessagingHosts` instead"
+ [pkg]
+ else [];
+
+ allNativeMessagingHosts = builtins.map lib.getBin (
+ nativeMessagingHosts
+ ++ deprecatedNativeMessagingHost "enableBrowserpass" browserpass
+ ++ deprecatedNativeMessagingHost "enableBukubrow" bukubrow
+ ++ deprecatedNativeMessagingHost "enableTridactylNative" tridactyl-native
+ ++ deprecatedNativeMessagingHost "enableGnomeExtensions" gnome-browser-connector
+ ++ deprecatedNativeMessagingHost "enableUgetIntegrator" uget-integrator
+ ++ deprecatedNativeMessagingHost "enablePlasmaBrowserIntegration" plasma5Packages.plasma-browser-integration
+ ++ deprecatedNativeMessagingHost "enableFXCastBridge" fx-cast-bridge
+ ++ deprecatedNativeMessagingHost "enableKeePassXC" keepassxc
+ ++ (if extraNativeMessagingHosts != []
+ then lib.warn "The extraNativeMessagingHosts argument for the Firefox wrapper is deprecated, please use `nativeMessagingHosts`" extraNativeMessagingHosts
+ else [])
+ );
+
libs = lib.optionals stdenv.isLinux [ udev libva mesa libnotify xorg.libXScrnSaver cups pciutils ]
++ lib.optional pipewireSupport pipewire
++ lib.optional ffmpegSupport ffmpeg_5
@@ -338,7 +349,7 @@ let
install -D -t $out/share/applications $desktopItem/share/applications/*
mkdir -p $out/lib/mozilla/native-messaging-hosts
- for ext in ${toString nativeMessagingHosts}; do
+ for ext in ${toString allNativeMessagingHosts}; do
ln -sLt $out/lib/mozilla/native-messaging-hosts $ext/lib/mozilla/native-messaging-hosts/*
done