diff --git a/docs/release-notes/rl-2305.adoc b/docs/release-notes/rl-2305.adoc
index 6d16e784..befd1b64 100644
--- a/docs/release-notes/rl-2305.adoc
+++ b/docs/release-notes/rl-2305.adoc
@@ -8,7 +8,16 @@ This is the current unstable branch and the information in this section is there
This release has the following notable changes:
-* No highlights.
+* Firefox add-ons are now managed per-profile.
+That is, if you are currently having
++
+[source,nix]
+programs.firefox.extensions = [ foo bar ];
++
+in your configuration then you must change it to
++
+[source,nix]
+programs.firefox.profiles.myprofile.extensions = [ foo bar ];
[[sec-release-23.05-state-version-changes]]
=== State Version Changes
diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix
index 4b3f288c..7eb06465 100644
--- a/modules/programs/firefox.nix
+++ b/modules/programs/firefox.nix
@@ -25,11 +25,6 @@ let
# by future Firefox versions.
extensionPath = "extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}";
- extensionsEnvPkg = pkgs.buildEnv {
- name = "hm-firefox-extensions";
- paths = cfg.extensions;
- };
-
profiles = flip mapAttrs' cfg.profiles (_: profile:
nameValuePair "Profile${toString profile.id}" {
Name = profile.name;
@@ -117,6 +112,15 @@ in {
meta.maintainers = [ maintainers.rycee maintainers.kira-bruneau ];
imports = [
+ (mkRemovedOptionModule [ "programs" "firefox" "extensions" ] ''
+
+ Extensions are now managed per-profile. That is, change from
+
+ programs.firefox.extensions = [ foo bar ];
+
+ to
+
+ programs.firefox.profiles.myprofile.extensions = [ foo bar ];'')
(mkRemovedOptionModule [ "programs" "firefox" "enableAdobeFlash" ]
"Support for this option has been removed.")
(mkRemovedOptionModule [ "programs" "firefox" "enableGoogleTalk" ]
@@ -154,41 +158,6 @@ in {
'';
};
- extensions = mkOption {
- type = types.listOf types.package;
- default = [ ];
- example = literalExpression ''
- with pkgs.nur.repos.rycee.firefox-addons; [
- privacy-badger
- ]
- '';
- description = ''
- List of Firefox add-on packages to install. Some
- pre-packaged add-ons are accessible from NUR,
- .
- Once you have NUR installed run
-
-
- $nix-env -f '<nixpkgs>' -qaP -A nur.repos.rycee.firefox-addons
-
-
- to list the available Firefox add-ons.
-
-
-
- Note that it is necessary to manually enable these
- extensions inside Firefox after the first installation.
-
-
-
- Extensions listed here will only be available in Firefox
- profiles managed through the
-
- option. This is due to recent changes in the way Firefox
- handles extension side-loading.
- '';
- };
-
profiles = mkOption {
type = types.attrsOf (types.submodule ({ config, name, ... }: {
options = {
@@ -452,6 +421,34 @@ in {
'';
};
};
+
+ extensions = mkOption {
+ type = types.listOf types.package;
+ default = [ ];
+ example = literalExpression ''
+ with pkgs.nur.repos.rycee.firefox-addons; [
+ privacy-badger
+ ]
+ '';
+ description = ''
+ List of Firefox add-on packages to install for this profile.
+ Some pre-packaged add-ons are accessible from NUR,
+ .
+ Once you have NUR installed run
+
+
+ $nix-env -f '<nixpkgs>' -qaP -A nur.repos.rycee.firefox-addons
+
+
+ to list the available Firefox add-ons.
+
+
+
+ Note that it is necessary to manually enable these extensions
+ inside Firefox after the first installation.
+ '';
+ };
+
};
}));
default = { };
@@ -523,11 +520,6 @@ in {
in [ package ];
home.file = mkMerge ([{
- "${mozillaConfigPath}/${extensionPath}" = mkIf (cfg.extensions != [ ]) {
- source = "${extensionsEnvPkg}/share/mozilla/${extensionPath}";
- recursive = true;
- };
-
"${firefoxConfigPath}/profiles.ini" =
mkIf (cfg.profiles != { }) { text = profilesIni; };
}] ++ flip mapAttrsToList cfg.profiles (_: profile: {
@@ -674,8 +666,13 @@ in {
};
"${profilesPath}/${profile.path}/extensions" =
- mkIf (cfg.extensions != [ ]) {
- source = "${extensionsEnvPkg}/share/mozilla/${extensionPath}";
+ mkIf (profile.extensions != [ ]) {
+ source = let
+ extensionsEnvPkg = pkgs.buildEnv {
+ name = "hm-firefox-extensions";
+ paths = profile.extensions;
+ };
+ in "${extensionsEnvPkg}/share/mozilla/${extensionPath}";
recursive = true;
force = true;
};