{ lib, config, pkgs, ... }: let inherit (lib) mkEnableOption mkIf; cfg = config.marleyos.programs.floorp; in { options.marleyos.programs.floorp.enable = mkEnableOption "floorp"; config = mkIf cfg.enable { programs.floorp = { enable = true; profiles = { "${config.marleyos.my.name}" = { extensions = (with pkgs.nur.repos.rycee.firefox-addons; [ bitwarden catppuccin-gh-file-explorer clearurls consent-o-matic darkreader facebook-container kagi-search # libredirect # proton-vpn raindropio refined-github shinigami-eyes snowflake stylus tampermonkey ublock-origin # vue-js-devtools # wappalyzer wayback-machine # xdebug-helper-for-firefox ]) ++ (with pkgs.marleyos.firefox-addons; [ axe-devtools # clockwork-dev-tools medium-parser readwise readwise-highlighter ]); settings = { # https://arkenfox.github.io/gui/ # # Introduction - - - - - - - - - - - - - - - - - - - - - - - - - - - "browser.aboutConfig.showWarning" = false; # Startup - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "browser.startup.page" = 1; # homepage "browser.startup.homepage" = "https://punkfairie.net/start/"; "browser.newtabpage.enabled" = false; "browser.newtabpage.activity-stream.showSponsored" = false; "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; "browser.newtabpage.activity-stream.default.sites" = ""; # Geolocation - - - - - - - - - - - - - - - - - - - - - - - - - - - "geo.provider.use_corelocation" = false; # mac "geo.provider.use_geoclue" = false; # linux # Quieter Fox - - - - - - - - - - - - - - - - - - - - - - - - - - - # Recommendations "extensions.getAddons.showPane" = false; # uses google analytics "extensions.htmlaboutaddons.reccomendations.enabled" = false; "browser.discovery.enabled" = false; "browser.shopping.experience2023.enabled" = false; # Telemetry "datareporting.policy.dataSubmissionEnabled" = false; "datareporting.healthreport.uploadEnabled" = false; "toolkit.telemetry.unified" = false; "toolkit.telemetry.enabled" = false; "toolkit.telemetry.server" = "data:,"; "toolkit.telemetry.archive.enabled" = false; "toolkit.telemetry.newProfilePing.enabled" = false; "toolkit.telemetry.shutdownPingSender.enabled" = false; "toolkit.telemetry.updatePing.enabled" = false; "toolkit.telemetry.bhrPing.enabled" = false; "toolkit.telemetry.firstShutdownPing.enabled" = false; "toolkit.telemetry.coverage.opt-out" = true; "toolkit.coverage.opt-out" = true; "toolkit.coverage.endpoint.base" = ""; "browser.newtabpage.activity-stream.feeds.telemetry" = false; "browser.newtabpage.activity-stream.telemetry" = false; # Studies "app.shield.optoutstudies.enabled" = false; "app.normandy.enabled" = false; "app.normandy.api_url" = ""; # Crash Reports "breakpad.reportURL" = ""; "browser.tabs.crashReporting.sendReport" = false; "browser.crashReports.unsubmittedCheck.autoSubmit2" = false; # Other "captivedetect.canonicalURL" = ""; "network.captive-portal-service.enabled" = false; "netowkr.connectivity-service.enabled" = false; # Safe Browsing - - - - - - - - - - - - - - - - - - - - - - - - - - # Sends info to google. "browser.safebrowsing.downloads.remote.enabled" = false; # Block Implicit Outbound - - - - - - - - - - - - - - - - - - - - - # Disables behavior related to non-explicitly asked for browsing # (speculative fetching of links not clicked on). "network.prefetch-next" = false; "network.dns.disablePrefetch" = true; "network.dns.disablePrefetchFromHTTPS" = true; "network.predictor.enabled" = false; "network.predictor.enable-prefetch" = false; "network.http.speculative-parallel-limit" = 0; "browser.places.speculativeConnect.enabled" = false; # DNS / DoH / PROXY / SOCKS - - - - - - - - - - - - - - - - - - - - "network.proxy.socks_remote_dns" = true; "network.file.disable_unc_paths" = true; "network.gio.supported-protocols" = ""; # Location Bar / Search Bar / Suggestions / History / Forms - - - - "browser.urlbar.speculativeConnect.enabled" = false; "browser.urlbar.quicksuggest.enabled" = false; "browser.urlbar.suggest.quicksuggest.nonsponsored" = false; "browser.urlbar.suggest.quicksuggest.sponsored" = false; "browser.urlbar.trending.featureGate" = false; "browser.urlbar.addons.featureGate" = false; "browser.urlbar.mdn.featureGate" = false; "browser.urlbar.pocket.featureGate" = false; "browser.urlbar.weather.featureGate" = false; "browser.urlbar.yelp.featureGate" = false; "browser.formfill.enable" = false; # Passwords - - - - - - - - - - - - - - - - - - - - - - - - - - - - "signon.autofillForms" = false; "signon.formlessCapture.enabled" = false; "network.auth.subresource-http-auth-allow" = 1; # Disk Avoidance - - - - - - - - - - - - - - - - - - - - - - - - - - "browser.privatebrowsing.forceMediaMemoryCache" = true; "media.memory_cache_max_size" = 65536; "browser.sessionstore.privacy_level" = 2; # HTTPS (SSL/TLS / OCSP / CERTS / HPKP) - - - - - - - - - - - - - - # SSL (Secure Sockets Layer) / TLS (Transport Layer Security) "security.ssl.require_safe_negotiation" = true; "security.tls.enable_0rtt_data" = false; # OCSP (Online Certificate Status Protocol) "security.OCSP.enabled" = 1; "security.OCSP.require" = true; # CERTS / HPKP (HTTP Public Key Pinning) "security.cert_pinning.enforcement_level" = 2; "security.remote_settings.crlite_filters.enabled" = true; "security.pki.crlite_mode" = 2; # Mixed Content "dom.security.https_only_mode" = true; "dom.security.https_only_mode_send_http_background_request" = false; # UI (User Interface) "security.ssl.treat_unsafe_negotiation_as_broken" = true; "browser.xul.error_pages.expert_bad_cert" = true; # Referers - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "network.http.referer.XOriginTrimmingPolicy" = 2; # Containers - - - - - - - - - - - - - - - - - - - - - - - - - - - - "privacy.userContext.enabled" = true; "privacy.userContext.ui.enabled" = true; # Plugins / Media / WebRTC - - - - - - - - - - - - - - - - - - - - - "media.peerconnection.ice.proxy_only_if_behind_proxy" = true; "media.peerconnection.ice.default_address_only" = true; # DOM (Document Object Model) - - - - - - - - - - - - - - - - - - - "dom.disable_window_move_resize" = true; # Miscellaneous - - - - - - - - - - - - - - - - - - - - - - - - - - "browser.download.start_downloads_in_tmp_dir" = true; "browser.helperApps.deleteTempFileOnExit" = true; "browser.uitour.enabled" = false; "devtools.debugger.remote-enabled" = false; "permissions.manager.defaultsUrl" = ""; "webchannel.allowObject.urlWhiteList" = ""; "network.IDN_show_punycode" = true; "browser.tabs.searchclipboardfor.middleclick" = false; "browser.contentanalysis.enabled" = false; "browser.contentanalysis.default_result" = 0; # Downloads "browser.download.alwaysOpenPanel" = false; "browser.download.manager.addToRecentDocs" = false; "browser.download.always_ask_before_handling_new_types" = true; # Extensions "extensions.enabledScopes" = 5; "extensions.autoDisableScopes" = 0; # auto-enable extensions "extensions.postDownloadThirdPartyPrompt" = false; # ETP (Enhanced Tracking Protection) - - - - - - - - - - - - - - - - "browser.contentblocking.category" = "strict"; # Shutdown & Sanitizing - - - - - - - - - - - - - - - - - - - - - - "privacy.sanitize.sanitizeOnShutdown" = true; # Sanitize On Shutdown: Ignores "Allow" Site Exceptions "privacy.clearOnShutdown.cache" = true; "privacy.clearOnShutdown_v2.cache" = true; "privacy.clearOnShutdown.downloads" = false; "privacy.clearOnShutdown.formdata" = true; "privacy.clearOnShutdown.history" = false; "privacy.clearOnShutdown_v2.historyFormDataAndDownloads" = false; # Sanitize On Shutdown: Respects "Allow" Site Exceptions "privacy.clearOnShutdown.cookies" = true; "privacy.clearOnShutdown.offlineApps" = true; "privacy.clearOnShutdown.sessions" = true; "privacy.clearOnShutdown_v2.cookiesAndStorage" = true; # Sanitize Site Data: Ignores "Allow" Site Exceptions "privacy.clearSiteData.cache" = true; "privacy.clearSiteData.cookiesAndStorage" = false; "privacy.clearSiteData.historyFormDataAndDownloads" = false; "privacy.cpd.cache" = true; "privacy.clearHistory.cache" = true; "privacy.cpd.formdata" = true; "privacy.cpd.history" = false; "privacy.clearHistory.historyFormDataAndDownloads" = true; "privacy.cpd.cookies" = false; "privacy.cpd.sessions" = true; "privacy.cpd.offlineApps" = false; "privacy.clearHistory.cookiesAndStorage" = false; "privacy.cpd.passwords" = false; # Sanitize Manual: Timerange "privacy.sanitize.timeSpan" = 0; # everything # Optional RFP (resistFingerprinting) - - - - - - - - - - - - - - - "privacy.window.maxInnerWidth" = 1200; "privacy.window.maxInnerHeight" = 900; "privacy.resistFingerprinting.block_mozAddonManager" = true; "privacy.spoof_english" = 1; "browser.display.use_system_colors" = false; "browser.link.open_newwindow" = 3; # open in new tab instead "browser.link.open_newwindow.restriction" = 0; # Optional OpSec - - - - - - - - - - - - - - - - - - - - - - - - - - "signon.rememberSignons" = false; "extensions.formautofill.addresses.enabled" = false; "extensions.formautofill.creditCards.enabled" = false; # Don't Touch - - - - - - - - - - - - - - - - - - - - - - - - - - - "extensions.blocklist.enabled" = true; "network.http.referer.spoofSource" = false; "security.dialog_enable_delay" = 1000; "privacy.firstparty.isolate" = false; "extensions.webcompat.enable_shims" = true; "security.tls.version.enable-deprecated" = false; "extensions.quarantinedDomains.enabled" = false; # Non-Project Related - - - - - - - - - - - - - - - - - - - - - - - "browser.startup.homepage_override.mstone" = "ignore"; "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false; "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false; "browser.urlbar.showSearchTerms.enabled" = false; # Floorp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "floorp.lepton.interface" = 3; "userChrome.tab.lepton_like_padding" = false; "floorp.browser.sidebar.enable" = false; "floorp.browser.sidebar2.data" = '' {"data":{"floorp__history":{"url":"floorp//history","width":415},"floorp__downloads":{"url":"floorp//downloads","width":415},"floorp__notes":{"url":"floorp//notes","width":550}},"index":["floorp__history","floorp__downloads","floorp__notes"]} ''; # marleyOS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "app.update.channel" = "default"; # disable updates "browser.search.region" = "US"; "browser.shell.checkDefaultBrowser" = false; "browser.toolbars.bookmarks.visibility" = "never"; }; }; }; }; }; }