2024-05-07 23:31:41 +02:00
|
|
|
{
|
|
|
|
pkgs,
|
|
|
|
config,
|
|
|
|
lib,
|
|
|
|
...
|
|
|
|
}:
|
2024-04-10 16:51:28 +02:00
|
|
|
let
|
2024-03-24 16:59:47 +01:00
|
|
|
cfg = config.grimmShared;
|
2024-04-10 16:51:28 +02:00
|
|
|
in
|
|
|
|
{
|
2024-05-07 23:31:41 +02:00
|
|
|
config =
|
|
|
|
with cfg;
|
|
|
|
lib.mkIf (enable && firefox.enable) {
|
|
|
|
environment.systemPackages =
|
|
|
|
[ ]
|
|
|
|
++ lib.optionals config.services.desktopManager.plasma6.enable [ pkgs.plasma-browser-integration ];
|
2024-03-24 16:59:47 +01:00
|
|
|
|
2024-05-07 23:31:41 +02:00
|
|
|
programs.firefox = {
|
|
|
|
package = pkgs.firefox-beta;
|
|
|
|
enable = true;
|
|
|
|
nativeMessagingHosts.packages =
|
|
|
|
[ ]
|
|
|
|
++ lib.optionals (cfg.tooling.enable && cfg.tooling.pass) [ pkgs.passff-host ];
|
|
|
|
languagePacks = lib.optionals cfg.locale [
|
|
|
|
"de"
|
|
|
|
"en-US"
|
|
|
|
];
|
|
|
|
policies = {
|
|
|
|
ExtensionSettings = lib.mkMerge [
|
|
|
|
(lib.mkIf cfg.firefox.disableUserPlugins { "*".installation_mode = "blocked"; })
|
|
|
|
(lib.mapAttrs (guid: shortId: {
|
2024-04-10 16:51:28 +02:00
|
|
|
# explicit plugins by config
|
|
|
|
install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi";
|
|
|
|
installation_mode = "force_installed";
|
2024-05-07 23:31:41 +02:00
|
|
|
}) cfg.firefox.plugins)
|
|
|
|
(lib.mkIf (cfg.tooling.enable && cfg.tooling.pass) {
|
|
|
|
# password-store support
|
|
|
|
"passff@invicem.pro" = {
|
|
|
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/passff/latest.xpi";
|
|
|
|
installation_mode = "force_installed";
|
|
|
|
};
|
2024-04-10 16:51:28 +02:00
|
|
|
})
|
2024-05-07 23:31:41 +02:00
|
|
|
];
|
|
|
|
DisableTelemetry = true;
|
|
|
|
DisableFirefoxStudies = true;
|
|
|
|
EnableTrackingProtection = {
|
|
|
|
Value = true;
|
|
|
|
Locked = true;
|
|
|
|
Cryptomining = true;
|
|
|
|
Fingerprinting = true;
|
|
|
|
};
|
|
|
|
DisablePocket = true;
|
|
|
|
DisableFirefoxAccounts = true;
|
|
|
|
DisableAccounts = true;
|
|
|
|
DisableFirefoxScreenshots = true;
|
|
|
|
OverrideFirstRunPage = "";
|
|
|
|
OverridePostUpdatePage = "";
|
|
|
|
DontCheckDefaultBrowser = true;
|
|
|
|
Preferences = {
|
|
|
|
"pdfjs.enableScripting" = false;
|
2024-04-22 11:04:46 +02:00
|
|
|
|
2024-05-07 23:31:41 +02:00
|
|
|
"media.hardware-video-decoding.enabled" = true;
|
|
|
|
"media.ffmpeg.vaapi.enabled" = true;
|
|
|
|
"media.rdd-ffmpeg.enabled" = true;
|
|
|
|
"media.navigator.mediadatadecoder_vpx_enabled" = true;
|
|
|
|
} // lib.optionalAttrs cfg.sway.enable { "browser.tabs.inTitlebar" = 0; };
|
|
|
|
};
|
2024-03-24 16:59:47 +01:00
|
|
|
};
|
|
|
|
};
|
2024-04-16 12:09:17 +02:00
|
|
|
|
|
|
|
options.grimmShared.firefox = with lib; {
|
|
|
|
enable = mkEnableOption "grimm-firefox";
|
|
|
|
|
|
|
|
plugins = mkOption {
|
|
|
|
type = types.attrsOf types.str;
|
|
|
|
default = { };
|
|
|
|
description = "set of plugins to install. Format: guid = short-id";
|
|
|
|
};
|
|
|
|
|
2024-04-26 22:03:03 +02:00
|
|
|
disableUserPlugins = lib.mkEnableOption "disables user controlled plugins";
|
2024-04-16 12:09:17 +02:00
|
|
|
};
|
2024-03-24 16:59:47 +01:00
|
|
|
}
|