mirror of
https://github.com/nix-community/home-manager
synced 2024-11-30 06:59:45 +01:00
firefox: backport extensions fix to release-19.09
This commit is contained in:
parent
57f3b72d3a
commit
7aa2bd5bf4
2 changed files with 51 additions and 14 deletions
|
@ -1222,6 +1222,32 @@ in
|
||||||
A new module is available: 'programs.readline'.
|
A new module is available: 'programs.readline'.
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
time = "2020-03-15T16:55:28+00:00";
|
||||||
|
condition = config.programs.firefox.enable;
|
||||||
|
message = ''
|
||||||
|
In anticipation of Firefox dropping support for extension
|
||||||
|
sideloading[1], we now install extensions directly to
|
||||||
|
Firefox profiles managed through Home Manager's
|
||||||
|
|
||||||
|
'programs.firefox.profiles'
|
||||||
|
|
||||||
|
option.
|
||||||
|
|
||||||
|
Unfortunately this will most likely trigger an "Existing
|
||||||
|
file is in the way" error when activating your configuration
|
||||||
|
since Firefox keeps a copy of the add-on in the location
|
||||||
|
Home Manager wants to overwrite. If this is the case, remove
|
||||||
|
the listed '.xpi' files and try again.
|
||||||
|
|
||||||
|
This change also means that extensions installed through
|
||||||
|
Home Manager may disappear from unmanaged profiles in future
|
||||||
|
Firefox releases.
|
||||||
|
|
||||||
|
[1] https://blog.mozilla.org/addons/2019/10/31/firefox-to-discontinue-sideloaded-extensions/
|
||||||
|
'';
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,21 @@ let
|
||||||
|
|
||||||
cfg = config.programs.firefox;
|
cfg = config.programs.firefox;
|
||||||
|
|
||||||
|
mozillaConfigPath = ".mozilla";
|
||||||
|
|
||||||
|
firefoxConfigPath = "${mozillaConfigPath}/firefox";
|
||||||
|
|
||||||
|
profilesPath = firefoxConfigPath;
|
||||||
|
|
||||||
|
# The extensions path shared by all profiles; will not be supported
|
||||||
|
# by future Firefox versions.
|
||||||
extensionPath = "extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}";
|
extensionPath = "extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}";
|
||||||
|
|
||||||
|
extensionsEnvPkg = pkgs.buildEnv {
|
||||||
|
name = "hm-firefox-extensions";
|
||||||
|
paths = cfg.extensions;
|
||||||
|
};
|
||||||
|
|
||||||
profiles =
|
profiles =
|
||||||
flip mapAttrs' cfg.profiles (_: profile:
|
flip mapAttrs' cfg.profiles (_: profile:
|
||||||
nameValuePair "Profile${toString profile.id}" {
|
nameValuePair "Profile${toString profile.id}" {
|
||||||
|
@ -250,32 +263,30 @@ in
|
||||||
|
|
||||||
home.file = mkMerge (
|
home.file = mkMerge (
|
||||||
[{
|
[{
|
||||||
".mozilla/${extensionPath}" = mkIf (cfg.extensions != []) (
|
"${mozillaConfigPath}/${extensionPath}" = mkIf (cfg.extensions != []) {
|
||||||
let
|
source = "${extensionsEnvPkg}/share/mozilla/${extensionPath}";
|
||||||
extensionsEnv = pkgs.buildEnv {
|
|
||||||
name = "hm-firefox-extensions";
|
|
||||||
paths = cfg.extensions;
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
source = "${extensionsEnv}/share/mozilla/${extensionPath}";
|
|
||||||
recursive = true;
|
recursive = true;
|
||||||
}
|
};
|
||||||
);
|
|
||||||
|
|
||||||
".mozilla/firefox/profiles.ini" = mkIf (cfg.profiles != {}) {
|
"${firefoxConfigPath}/profiles.ini" = mkIf (cfg.profiles != {}) {
|
||||||
text = profilesIni;
|
text = profilesIni;
|
||||||
};
|
};
|
||||||
}]
|
}]
|
||||||
++ flip mapAttrsToList cfg.profiles (_: profile: {
|
++ flip mapAttrsToList cfg.profiles (_: profile: {
|
||||||
".mozilla/firefox/${profile.path}/chrome/userChrome.css" =
|
"${profilesPath}/${profile.path}/chrome/userChrome.css" =
|
||||||
mkIf (profile.userChrome != "") {
|
mkIf (profile.userChrome != "") {
|
||||||
text = profile.userChrome;
|
text = profile.userChrome;
|
||||||
};
|
};
|
||||||
|
|
||||||
".mozilla/firefox/${profile.path}/user.js" =
|
"${profilesPath}/${profile.path}/user.js" =
|
||||||
mkIf (profile.settings != {} || profile.extraConfig != "") {
|
mkIf (profile.settings != {} || profile.extraConfig != "") {
|
||||||
text = mkUserJs profile.settings profile.extraConfig;
|
text = mkUserJs profile.settings profile.extraConfig;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"${profilesPath}/${profile.path}/extensions" = mkIf (cfg.extensions != []) {
|
||||||
|
source = "${extensionsEnvPkg}/share/mozilla/${extensionPath}";
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue