{ inputs, pkgs, lib, ... }: { home.sessionVariables = { BROWSER = "firefox"; }; home.file."firefox-gnome-theme" = { source = inputs.firefoxGnomeTheme; target = ".mozilla/firefox/katja/chrome/firefox-gnome-theme"; }; programs.firefox = { enable = true; package = pkgs.firefox; nativeMessagingHosts = [ pkgs.ff2mpv-rust ]; profiles.katja = { id = 0; isDefault = true; settings = { # required for firefox-gnome-theme "browser.toolbars.bookmarks.visibility" = "never"; "browser.tabs.drawInTitlebar" = true; "browser.theme.dark-private-windows" = false; "browser.uidensity" = 0; "svg.context-properties.content.enabled" = true; "toolkit.legacyUserProfileCustomizations.stylesheets" = true; }; userChrome = '' @import "firefox-gnome-theme/userChrome.css"; ''; userContent = '' @import "firefox-gnome-theme/userContent.css"; ''; search.force = true; # Required to prevent search engine symlink being overwritten. See https://github.com/nix-community/home-manager/issues/3698 search.engines = { "Noogle" = { icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; definedAliases = [ "@noogle" ]; urls = [{ template = "https://noogle.dev/q?term={searchTerms}"; }]; }; "NixOS Options" = { icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; definedAliases = [ "@nixos" ]; urls = [{ template = "https://search.nixos.org/options?query={searchTerms}"; }]; }; "Nix Packages" = { icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; definedAliases = [ "@nixpkgs" ]; urls = [{ template = "https://search.nixos.org/packages?query={searchTerms}"; }]; }; }; }; policies = { # disable tracking bullshit DisableTelemetry = true; DisablePocket = true; # disable password manager PasswordManagerEnabled = false; OfferToSaveLogins = false; PrimaryPassword = false; AutofillCreditCardEnabled = false; # disable bookmark-toolbar NoDefaultBookmarks = true; DisplayBookmarksToolbar = "never"; Homepage.StartPage = "previous-session"; Homepage.Locked = true; # disable DoH DNSOverHTTPS.Enabled = false; DNSOverHTTPS.Locked = true; # enable tracking protection EnableTrackingProtection.Cryptomining = true; EnableTrackingProtection.Fingerprinting = true; EnableTrackingProtection.Value = true; EnableTrackingProtection.Locked = true; UserMessaging.ExtensionRecommendations = false; UserMessaging.FeatureRecommendations = false; UserMessaging.UrlbarInterventions = false; UserMessaging.SkipOnboarding = true; UserMessaging.MoreFromMozilla = false; UserMessaging.FirefoxLabs = false; UserMessaging.Locked = true; Handlers.schemes.dbnav = { action = "useHelperApp"; ask = true; handlers = [{ name = "VDV PKPass DB Navigator Hook"; path = pkgs.writeShellScript "db-hook" '' #!/usr/bin/env bash if [[ "$1" == "dbnav:"* ]]; then url=$(echo -n $1 | base64) xdg-open "https://vdv-pkpass.magicalcodewit.ch/account/db_login/callback?url=$url" else xdg-open "$1" fi ''; }]; }; Preferences = { "browser.uiCustomization.state".Status = "default"; "browser.uiCustomization.state".Value = builtins.toJSON { currentVersion = 21; newElementCount = 7; seen = []; dirtyAreaCache = []; placements = { widget-overflow-fixed-list = []; toolbar-menubar = [ "menubar-items" ]; vertical-tabs = []; PersonalToolbar = []; unified-extensions-area = []; nav-bar = [ "back-button" "forward-button" "vertical-spacer" "stop-reload-button" "urlbar-container" "downloads-button" "_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action" "ublock0_raymondhill_net-browser-action" "unified-extensions-button" ]; TabsToolbar = [ "tabbrowser-tabs" "new-tab-button" ]; }; }; } // ({ # disable some password-manager/autofill features "signon.generation.enabled" = false; "signon.autofillForms" = false; "signon.firefoxRelay.feature" = "disabled"; "signon.management.page.breach-alerts.enabled" = false; # ask websites to not share or sell data "privacy.globalprivacycontrol.enabled" = true; # disable warning on `abou:config` "browser.aboutConfig.showWarning" = false; # disable telemetry stuff "browser.ping-centre.telemetry" = false; "browser.topsites.contile.enabled" = false; "browser.crashReports.unsubmittedCheck.autoSubmit2" = false; # disable trending search suggestions "browser.urlbar.suggest.trending" = false; # disable 'fancy' newtab page bullshit with tons of tracking and ads "browser.startup.homepage" = "chrome://browser/content/blanktab.html"; "browser.newtabpage.enabled" = false; "browser.newtabpage.activity-stream.telemetry" = false; "browser.newtabpage.activity-stream.showSearch" = false; "browser.newtabpage.activity-stream.showSponsored" = false; "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; "browser.newtabpage.activity-stream.feeds.telemetry" = false; "browser.newtabpage.activity-stream.feeds.topsites" = false; "browser.newtabpage.activity-stream.feeds.snippets" = false; "browser.newtabpage.activity-stream.feeds.system.topsites" = false; "browser.newtabpage.activity-stream.feeds.section.highlights" = false; "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false; "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false; "browser.newtabpage.activity-stream.section.highlights.includeVisited" = false; } |> lib.mapAttrs (name: value: { Status = "locked"; Value = value; })); ExtensionSettings = ([ [ "navbar" "{446900e4-71c2-419f-a6a7-df9c091e268b}" ] # Bitwarden Password Manager [ "navbar" "uBlock0@raymondhill.net" ] # uBlock Origin [ "menupanel" "@ublacklist" ] # uBlacklist [ "menupanel" "@contain-facebook" ] # Facebook Container [ "menupanel" "@contain-google" ] # Google Container [ "menupanel" "containerise@kinte.sh" ] # Containerise [ "menupanel" "{12cf650b-1822-40aa-bff0-996df6948878}" ] # cookies.txt [ "menupanel" "@testpilot-containers" ] # Firefox Multi-Account Containers [ "menupanel" "{252ee273-8c8d-4609-b54d-62ae345be0a1}" ] # IndicateTLS [ "menupanel" "ipvfoo@pmarks.net" ] # IPvFoo [ "menupanel" "{e9090647-32ff-48e4-9c3c-1361e8fd270e}" ] # Modern for Wikipedia [ "menupanel" "sponsorBlocker@ajay.app" ] # SponsorBlock for YouTube - Skip Sponsorships [ "menupanel" "de-DE@dictionaries.addons.mozilla.org" ] # German Dictionary ] |> lib.map (config: { name = (lib.elemAt config 1); value = { installation_mode = "normal_installed"; default_area = (lib.elemAt config 0); install_url = "https://addons.mozilla.org/firefox/downloads/latest/${lib.elemAt config 1}/latest.xpi"; }; }) |> lib.listToAttrs); }; }; wayland.windowManager.sway.config.startup = [ { command = "firefox"; } ]; xdg = { enable = true; mime.enable = true; #force hm to override existing mimeapps.list file configFile."mimeapps.list".force = true; mimeApps = { enable = true; defaultApplications = { "x-scheme-handler/http" = "firefox.desktop"; "x-scheme-handler/https" = "firefox.desktop"; "x-scheme-handler/chrome" = "firefox.desktop"; "image/svg+xml" = "firefox.desktop"; "text/html" = "firefox.desktop"; "text/xml" = "firefox.desktop"; }; }; }; }