{ lib, config, pkgs, ... }: with lib; with lib.custom; let cfg = config.apps.web.librewolf; in { options.apps.web.librewolf = with types; { enable = mkBoolOpt false "Enable or disable librewolf"; setDefault = mkBoolOpt false "Set Librewolf as default browser"; }; config = mkIf cfg.enable { xdg.mimeApps.defaultApplications = mkIf cfg.setDefault { "text/html" = "librewolf.desktop"; "x-scheme-handler/http" = "librewolf.desktop"; "x-scheme-handler/https" = "librewolf.desktop"; }; programs.librewolf = { enable = true; profiles.${config.home.username} = { id = 0; isDefault = true; search = { default = "SearXNG"; engines = { "NixOS Options" = { urls = [ { template = "https://search.nixos.org/options?query={searchTerms}"; } ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; definedAliases = ["@nixos"]; }; "Nix Packages" = { urls = [ { template = "https://search.nixos.org/packages?query={searchTerms}"; } ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; definedAliases = ["@nixpkgs"]; }; "OpenStreetMap" = { urls = [ { template = "https://www.openstreetmap.org/search?query={searchTerms}"; } ]; icon = "https://www.openstreetmap.org/favicon.ico"; definedAliases = ["@openstreetmap" "@osm"]; }; "SearXNG" = { urls = [ { template = "https://search.zoeys.computer/searx/search?q={searchTerms}"; } ]; icon = "https://search.zoeys.computer/searx/static/themes/simple/img/favicon.svg"; definedAliases = ["@searx"]; }; "docs.rs" = { urls = [ { template = "https://docs.rs/releases/search?query={searchTerms}"; } ]; icon = "https://docs.rs/-/static/favicon.ico"; definedAliases = ["@docs"]; }; "crates.io" = { urls = [ { template = "https://crates.io/search?q={searchTerms}"; } ]; icon = "https://crates.io/assets/cargo.png"; definedAliases = ["@crates"]; }; }; force = true; # Required to prevent search engine symlink being overwritten. See https://github.com/nix-community/home-manager/issues/3698 }; }; policies = { DisableTelemetry = true; Preferences = { "app.normandy.api_url" = ""; "app.normandy.enabled" = false; "app.shield.optoutstudies.enabled" = false; "app.update.auto" = false; "beacon.enabled" = false; "breakpad.reportURL" = ""; "browser.aboutConfig.showWarning" = false; "browser.cache.offline.enable" = false; "browser.crashReports.unsubmittedCheck.autoSubmit" = false; "browser.crashReports.unsubmittedCheck.autoSubmit2" = false; "browser.crashReports.unsubmittedCheck.enabled" = false; "browser.disableResetPrompt" = true; "browser.newtab.preload" = false; "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; "browser.newtabpage.enhanced" = false; "browser.newtabpage.introShown" = true; "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; "browser.newtabpage.activity-stream.showSponsored" = false; "browser.newtabpage.activity-stream.system.showSponsored" = false; "browser.safebrowsing.appRepURL" = ""; "browser.safebrowsing.blockedURIs.enabled" = false; "browser.safebrowsing.downloads.enabled" = false; "browser.safebrowsing.downloads.remote.enabled" = false; "browser.safebrowsing.downloads.remote.url" = ""; "browser.safebrowsing.enabled" = false; "browser.safebrowsing.malware.enabled" = false; "browser.safebrowsing.phishing.enabled" = false; "browser.selfsupport.url" = ""; "browser.send_pings" = false; "browser.sessionstore.privacy_level" = 0; "browser.shell.checkDefaultBrowser" = false; "browser.startup.homepage_override.mstone" = ""; "browser.tabs.crashReporting.sendReport" = false; "browser.urlbar.groupLabels.enabled" = false; "browser.urlbar.quicksuggest.enabled" = false; "browser.urlbar.speculativeConnect.enabled" = false; "browser.urlbar.trimURLs" = false; "browser.urlbar.suggest.quicksuggest.sponsored" = false; "datareporting.healthreport.service.enabled" = false; "datareporting.healthreport.uploadEnabled" = false; "datareporting.policy.dataSubmissionEnabled" = false; "device.sensors.ambientLight.enabled" = false; "device.sensors.enabled" = false; "device.sensors.motion.enabled" = false; "device.sensors.orientation.enabled" = false; "device.sensors.proximity.enabled" = false; "dom.battery.enabled" = false; "dom.event.clipboardevents.enabled" = false; "dom.webaudio.enabled" = false; "experiments.activeExperiment" = false; "experiments.enabled" = false; "experiments.manifest.uri" = ""; "experiments.supported" = false; "extensions.ClearURLs@kevinr.whiteList" = ""; "extensions.Decentraleyes@ThomasRientjes.whiteList" = ""; "extensions.FirefoxMulti-AccountContainers@mozilla.whiteList" = ""; "extensions.TemporaryContainers@stoically.whiteList" = ""; "extensions.autoDisableScopes" = 14; "extensions.getAddons.cache.enabled" = false; "extensions.getAddons.showPane" = false; "extensions.greasemonkey.stats.optedin" = false; "extensions.greasemonkey.stats.url" = ""; "extensions.pocket.enabled" = false; "extensions.shield-recipe-client.api_url" = ""; "extensions.shield-recipe-client.enabled" = false; "extensions.webservice.discoverURL" = ""; "media.autoplay.default" = 0; "media.autoplay.enabled" = true; "media.eme.enabled" = false; "media.gmp-widevinecdm.enabled" = false; "media.navigator.enabled" = false; "media.peerconnection.enabled" = false; "media.video_stats.enabled" = false; "network.IDN_show_punycode" = true; "network.allow-experiments" = false; "network.captive-portal-service.enabled" = false; "network.cookie.cookieBehavior" = 1; "network.dns.disablePrefetch" = true; "network.dns.disablePrefetchFromHTTPS" = true; "network.http.referer.spoofSource" = true; "network.http.speculative-parallel-limit" = ""; "network.predictor.enable-prefetch" = false; "network.predictor.enabled" = false; "network.prefetch-next" = false; "network.trr.mode" = ""; "privacy.donottrackheader.enabled" = true; "privacy.donottrackheader.value" = ""; "privacy.firstparty.isolate" = true; "privacy.query_stripping" = true; "privacy.trackingprotection.cryptomining.enabled" = true; "privacy.trackingprotection.enabled" = true; "privacy.trackingprotection.fingerprinting.enabled" = true; "privacy.trackingprotection.pbmode.enabled" = true; "privacy.usercontext.about_newtab_segregation.enabled" = true; "security.ssl.disable_session_identifiers" = true; "services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsoredTopSite" = false; "signon.autofillForms" = false; "toolkit.telemetry.archive.enabled" = false; "toolkit.telemetry.bhrPing.enabled" = false; "toolkit.telemetry.cachedClientID" = ""; "toolkit.telemetry.enabled" = false; "toolkit.telemetry.firstShutdownPing.enabled" = false; "toolkit.telemetry.hybridContent.enabled" = false; "toolkit.telemetry.newProfilePing.enabled" = false; "toolkit.telemetry.prompted" = ""; "toolkit.telemetry.rejected" = true; "toolkit.telemetry.reportingpolicy.firstRun" = false; "toolkit.telemetry.server" = ""; "toolkit.telemetry.shutdownPingSender.enabled" = false; "toolkit.telemetry.unified" = false; "toolkit.telemetry.unifiedIsOptIn" = false; "toolkit.telemetry.updatePing.enabled" = false; "webgl.renderer-string-override" = " "; "webgl.vendor-string-override" = " "; }; ExtensionSettings = with builtins; let extension = shortId: uuid: { name = uuid; value = { install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi"; installation_mode = "normal_installed"; }; }; in listToAttrs [ (extension "ublock-origin" "uBlock0@raymondhill.net") (extension "privacy-badger17" "jid1-MnnxcxisBPnSXQ@jetpack") (extension "1password-x-password-manager" "{d634138d-c276-4fc8-924b-40a0ea21d284}") (extension "firefox-color" "FirefoxColor@mozilla.com") (extension "multi-account-containers" "@testpilot-containers") (extension "temporary-containers" "{c607c8df-14a7-4f28-894f-29e8722976af}") (extension "styl-us" "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}") (extension "betterttv" "firefox@betterttv.net") (extension "decentraleyes" "jid1-BoFifL9Vbdl2zQ@jetpack") (extension "canvasblocker" "CanvasBlocker@kkapsner.de") (extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}") (extension "mtab" "contact@maxhu.dev") ]; }; }; }; }