{ lib, config, pkgs, ... }: with lib; let merge = foldr (a: b: a // b) { }; cfg = config.modules.web.firefox; in { options.modules.web.firefox = { enable = mkEnableOption "enable Firefox web browser"; }; config = mkIf cfg.enable { nixpkgs.overlays = [ inputs.nur.overlay ]; programs.browserpass = { enable = true; browsers = ["firefox"]; }; programs.firefox = { package = pkgs.wrapFirefox pkgs.firefox-unwrapped { nativeMessagingHosts = [ # Tridactyl native connector pkgs.tridactyl-native pkgs.browserpass ]; }; enable = true; profiles.ephase = { id = 0; name = "ephase"; isDefault = true; extensions = with pkgs.nur.repos.rycee.firefox-addons; [ browserpass consent-o-matic cookie-autodelete darkreader decentraleyes tridactyl ublock-origin ]; search = { force = true; default = "DuckDuckGo"; }; settings = merge [ (import ./conf/doh.nix) (import ./conf/drm.nix) (import ./conf/experiments.nix) (import ./conf/extensions.nix) (import ./conf/preferences.nix) (import ./conf/privacy.nix) (import ./conf/safebrowsing.nix) (import ./conf/suggest.nix) (import ./conf/telemetry.nix) (import ./conf/theme.nix) (import ./conf/tracking.nix) ]; }; }; }; }