From 5200f3903f44e05dd7230f794ef18ad7b8855676 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Fri, 10 Oct 2025 08:28:51 -0500 Subject: [PATCH] mkFirefoxModule: support extensions without addonID Properly handle extensions missing addonId without eval error. Signed-off-by: Austin Horstman --- modules/programs/firefox/mkFirefoxModule.nix | 22 +++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/modules/programs/firefox/mkFirefoxModule.nix b/modules/programs/firefox/mkFirefoxModule.nix index 252566624..f7ebb6ab5 100644 --- a/modules/programs/firefox/mkFirefoxModule.nix +++ b/modules/programs/firefox/mkFirefoxModule.nix @@ -830,9 +830,15 @@ in } ] ++ (builtins.concatMap ( - { addonId, meta, ... }: + { + addonId ? null, + name, + meta, + ... + }: let - permissions = config.extensions.settings.${addonId}.permissions or null; + safeAddonId = if addonId != null then addonId else name; + permissions = config.extensions.settings.${safeAddonId}.permissions or null; requireCheck = config.extensions.exhaustivePermissions || permissions != null; authorizedPermissions = lib.optionals (permissions != null) permissions; missingPermissions = lib.subtractLists authorizedPermissions meta.mozPermissions; @@ -847,20 +853,20 @@ in config.extensions.exactPermissions && missingPermissions != [ ] && redundantPermissions != [ ] then '' - Extension ${addonId} requests permissions that weren't + Extension ${safeAddonId} requests permissions that weren't authorized: ${builtins.toJSON missingPermissions}. Additionally, the following permissions were authorized, - but extension ${addonId} did not request them: + but extension ${safeAddonId} did not request them: ${builtins.toJSON redundantPermissions}. Consider adjusting the permissions in'' else if config.extensions.exactPermissions && redundantPermissions != [ ] then '' The following permissions were authorized, but extension - ${addonId} did not request them: ${builtins.toJSON redundantPermissions}. + ${safeAddonId} did not request them: ${builtins.toJSON redundantPermissions}. Consider removing the redundant permissions from'' else '' - Extension ${addonId} requests permissions that weren't + Extension ${safeAddonId} requests permissions that weren't authorized: ${builtins.toJSON missingPermissions}. Consider adding the missing permissions to''; in @@ -874,7 +880,7 @@ in profilePath ++ [ "extensions" - addonId + safeAddonId ] ) }.permissions'. @@ -885,7 +891,7 @@ in ++ (builtins.concatMap ( { name, value }: let - packages = builtins.filter (pkg: pkg.addonId == name) config.extensions.packages; + packages = builtins.filter (pkg: (pkg.addonId or pkg.name) == name) config.extensions.packages; in [ {