67 lines
1.5 KiB
Nix
67 lines
1.5 KiB
Nix
{ modulePath, ... }@moduleArgs:
|
|
|
|
{
|
|
inputs,
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
|
|
let
|
|
mkFirefoxModule = import "${inputs.home-manager.outPath}/modules/programs/firefox/mkFirefoxModule.nix";
|
|
|
|
cfg = lib.getAttrFromPath modulePath config;
|
|
|
|
# HINT home-manager's Firefox module uses a read-only `finalPackage` option
|
|
# that creates a wrapper around `package`. However, this wrapper is not
|
|
# compatible with all Firefox-based browser packages. Thus, we adjust the module
|
|
# to always set `finalPackage` to `package` & remove unsupported options.
|
|
fixFirefoxModuleCompat =
|
|
module:
|
|
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
optionsPath = [ "options" ] ++ modulePath;
|
|
configPath = [
|
|
"config"
|
|
"content" # due to mkIf
|
|
] ++ modulePath;
|
|
in
|
|
lib.updateManyAttrsByPath
|
|
[
|
|
{
|
|
path = optionsPath ++ [ "languagePacks" ];
|
|
update = old: { };
|
|
}
|
|
{
|
|
path = configPath ++ [ "finalPackage" ];
|
|
update = old: cfg.package;
|
|
}
|
|
{
|
|
path = configPath ++ [ "policies" ];
|
|
update = old: { };
|
|
}
|
|
]
|
|
(module {
|
|
inherit config lib pkgs;
|
|
});
|
|
in
|
|
{
|
|
imports = [
|
|
(fixFirefoxModuleCompat (mkFirefoxModule moduleArgs))
|
|
];
|
|
|
|
options = lib.setAttrByPath modulePath { };
|
|
|
|
config = lib.mkIf cfg.enable (
|
|
{ }
|
|
// lib.setAttrByPath modulePath {
|
|
# Tor & Mullvad Browser don't support profile version 2 yet
|
|
profileVersion = lib.mkDefault null;
|
|
}
|
|
);
|
|
}
|