forked from mirrors_public/oddlama_nix-config
415 lines
17 KiB
Nix
415 lines
17 KiB
Nix
{
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib) concatStringsSep escapeShellArg mapAttrsToList;
|
|
env = {
|
|
MOZ_WEBRENDER = 1;
|
|
# For a better scrolling implementation and touch support.
|
|
# Be sure to also disable "Use smooth scrolling" in about:preferences
|
|
MOZ_USE_XINPUT2 = 1;
|
|
# Required for hardware video decoding.
|
|
# See https://github.com/elFarto/nvidia-vaapi-driver?tab=readme-ov-file#firefox
|
|
MOZ_DISABLE_RDD_SANDBOX = 1;
|
|
LIBVA_DRIVER_NAME = "nvidia";
|
|
NVD_BACKEND = "direct";
|
|
};
|
|
envStr = concatStringsSep " " (mapAttrsToList (n: v: "${n}=${escapeShellArg v}") env);
|
|
|
|
betterfox = pkgs.fetchFromGitHub {
|
|
owner = "yokoffing";
|
|
repo = "Betterfox";
|
|
rev = "116.1";
|
|
hash = "sha256-Ai8Szbrk/4FhGhS4r5gA2DqjALFRfQKo2a/TwWCIA6g=";
|
|
};
|
|
in
|
|
{
|
|
programs.firefox = {
|
|
enable = true;
|
|
package = pkgs.firefox.overrideAttrs (old: {
|
|
buildCommand =
|
|
old.buildCommand
|
|
+ ''
|
|
substituteInPlace $out/bin/firefox \
|
|
--replace "exec -a" ${escapeShellArg envStr}" exec -a"
|
|
'';
|
|
});
|
|
|
|
profiles.default = {
|
|
id = 0;
|
|
isDefault = true;
|
|
|
|
# Hide tab bar because we have tree style tabs
|
|
userChrome = ''
|
|
#TabsToolbar {
|
|
visibility: collapse !important;
|
|
}
|
|
|
|
#titlebar-buttonbox {
|
|
height: 32px !important;
|
|
}
|
|
'';
|
|
|
|
extraConfig = builtins.concatStringsSep "\n" [
|
|
(builtins.readFile "${betterfox}/Securefox.js")
|
|
(builtins.readFile "${betterfox}/Fastfox.js")
|
|
(builtins.readFile "${betterfox}/Peskyfox.js")
|
|
];
|
|
|
|
settings = {
|
|
# General
|
|
"intl.accept_languages" = "en-US,en";
|
|
"browser.startup.page" = 3; # Resume previous session on startup
|
|
"browser.aboutConfig.showWarning" = false; # I sometimes know what I'm doing
|
|
"browser.ctrlTab.sortByRecentlyUsed" = false; # (default) Who wants that?
|
|
"browser.download.useDownloadDir" = false; # Ask where to save stuff
|
|
"browser.translations.neverTranslateLanguages" = "de"; # No need :)
|
|
"privacy.clearOnShutdown.history" = false; # We want to save history on exit
|
|
# Hi-DPI
|
|
"layout.css.devPixelsPerPx" = "1.5";
|
|
# Allow executing JS in the dev console
|
|
"devtools.chrome.enabled" = true;
|
|
# Disable browser crash reporting
|
|
"browser.tabs.crashReporting.sendReport" = false;
|
|
# Allow userCrome.css
|
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
|
# Why the fuck can my search window make bell sounds
|
|
"accessibility.typeaheadfind.enablesound" = false;
|
|
# Why the fuck can my search window make bell sounds
|
|
"general.autoScroll" = true;
|
|
|
|
# Hardware acceleration
|
|
# See https://github.com/elFarto/nvidia-vaapi-driver?tab=readme-ov-file#firefox
|
|
"gfx.webrender.all" = true;
|
|
"media.ffmpeg.vaapi.enabled" = true;
|
|
"media.rdd-ffmpeg.enabled" = true;
|
|
"widget.dmabuf.force-enabled" = true;
|
|
"media.av1.enabled" = false; # XXX: change once I've upgraded my GPU
|
|
# XXX: what is this?
|
|
"media.ffvpx.enabled" = false;
|
|
"media.rdd-vpx.enabled" = false;
|
|
|
|
# Privacy
|
|
"privacy.donottrackheader.enabled" = true;
|
|
"privacy.trackingprotection.enabled" = true;
|
|
"privacy.trackingprotection.socialtracking.enabled" = true;
|
|
"privacy.userContext.enabled" = true;
|
|
"privacy.userContext.ui.enabled" = true;
|
|
|
|
"browser.send_pings" = false; # (default) Don't respect <a ping=...>
|
|
|
|
# This allows firefox devs changing options for a small amount of users to test out stuff.
|
|
# Not with me please ...
|
|
"app.normandy.enabled" = false;
|
|
"app.shield.optoutstudies.enabled" = false;
|
|
|
|
"beacon.enabled" = false; # No bluetooth location BS in my webbrowser please
|
|
"device.sensors.enabled" = false; # This isn't a phone
|
|
"geo.enabled" = false; # Disable geolocation alltogether
|
|
|
|
# ESNI is deprecated ECH is recommended
|
|
"network.dns.echconfig.enabled" = true;
|
|
|
|
# Disable telemetry for privacy reasons
|
|
"toolkit.telemetry.archive.enabled" = false;
|
|
"toolkit.telemetry.enabled" = false; # enforced by nixos
|
|
"toolkit.telemetry.server" = "";
|
|
"toolkit.telemetry.unified" = false;
|
|
"extensions.webcompat-reporter.enabled" = false; # don't report compability problems to mozilla
|
|
"datareporting.policy.dataSubmissionEnabled" = false;
|
|
"datareporting.healthreport.uploadEnabled" = false;
|
|
"browser.ping-centre.telemetry" = false;
|
|
"browser.urlbar.eventTelemetry.enabled" = false; # (default)
|
|
|
|
# Disable some useless stuff
|
|
"extensions.pocket.enabled" = false; # disable pocket, save links, send tabs
|
|
"extensions.abuseReport.enabled" = false; # don't show 'report abuse' in extensions
|
|
"extensions.formautofill.creditCards.enabled" = false; # don't auto-fill credit card information
|
|
"identity.fxaccounts.enabled" = false; # disable firefox login
|
|
"identity.fxaccounts.toolbar.enabled" = false;
|
|
"identity.fxaccounts.pairing.enabled" = false;
|
|
"identity.fxaccounts.commands.enabled" = false;
|
|
"browser.contentblocking.report.lockwise.enabled" = false; # don't use firefox password manger
|
|
"browser.uitour.enabled" = false; # no tutorial please
|
|
"browser.newtabpage.activity-stream.showSponsored" = false;
|
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
|
|
|
# disable EME encrypted media extension (Providers can get DRM
|
|
# through this if they include a decryption black-box program)
|
|
"browser.eme.ui.enabled" = false;
|
|
"media.eme.enabled" = false;
|
|
|
|
# don't predict network requests
|
|
"network.predictor.enabled" = false;
|
|
"browser.urlbar.speculativeConnect.enabled" = false;
|
|
|
|
# disable annoying web features
|
|
"dom.push.enabled" = false; # no notifications, really...
|
|
"dom.push.connection.enabled" = false;
|
|
"dom.battery.enabled" = false; # you don't need to see my battery...
|
|
"dom.private-attribution.submission.enabled" = false; # No PPA for me pls
|
|
};
|
|
|
|
search = {
|
|
force = true;
|
|
default = "kagi";
|
|
order = [
|
|
"kagi"
|
|
"ddg"
|
|
];
|
|
|
|
engines = {
|
|
"bing".metaData.hidden = true;
|
|
"amazondotcom-us".metaData.hidden = true;
|
|
"google".metaData.hidden = true;
|
|
|
|
"kagi" = {
|
|
icon = "https://kagi.com/favicon.ico";
|
|
updateInterval = 24 * 60 * 60 * 1000;
|
|
definedAliases = [ "@k" ];
|
|
urls = [
|
|
{
|
|
template = "https://kagi.com/search";
|
|
params = [
|
|
{
|
|
name = "q";
|
|
value = "{searchTerms}";
|
|
}
|
|
];
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
profiles.empty = {
|
|
id = 1;
|
|
isDefault = false;
|
|
};
|
|
profiles.onlybetterfox = {
|
|
id = 2;
|
|
isDefault = false;
|
|
|
|
extraConfig = builtins.concatStringsSep "\n" [
|
|
(builtins.readFile "${betterfox}/Securefox.js")
|
|
(builtins.readFile "${betterfox}/Fastfox.js")
|
|
(builtins.readFile "${betterfox}/Peskyfox.js")
|
|
];
|
|
};
|
|
profiles.onlysettings = {
|
|
id = 3;
|
|
isDefault = false;
|
|
|
|
settings = {
|
|
# General
|
|
"intl.accept_languages" = "en-US,en";
|
|
"browser.startup.page" = 3; # Resume previous session on startup
|
|
"browser.aboutConfig.showWarning" = false; # I sometimes know what I'm doing
|
|
"browser.ctrlTab.sortByRecentlyUsed" = false; # (default) Who wants that?
|
|
"browser.download.useDownloadDir" = false; # Ask where to save stuff
|
|
"browser.translations.neverTranslateLanguages" = "de"; # No need :)
|
|
"privacy.clearOnShutdown.history" = false; # We want to save history on exit
|
|
# Hi-DPI
|
|
"layout.css.devPixelsPerPx" = "1.5";
|
|
# Allow executing JS in the dev console
|
|
"devtools.chrome.enabled" = true;
|
|
# Disable browser crash reporting
|
|
"browser.tabs.crashReporting.sendReport" = false;
|
|
# Why the fuck can my search window make bell sounds
|
|
"accessibility.typeaheadfind.enablesound" = false;
|
|
# Why the fuck can my search window make bell sounds
|
|
"general.autoScroll" = true;
|
|
|
|
# Hardware acceleration
|
|
# See https://github.com/elFarto/nvidia-vaapi-driver?tab=readme-ov-file#firefox
|
|
"gfx.webrender.all" = true;
|
|
"media.ffmpeg.vaapi.enabled" = true;
|
|
"media.rdd-ffmpeg.enabled" = true;
|
|
"widget.dmabuf.force-enabled" = true;
|
|
"media.av1.enabled" = false; # XXX: change once I've upgraded my GPU
|
|
# XXX: what is this?
|
|
"media.ffvpx.enabled" = false;
|
|
"media.rdd-vpx.enabled" = false;
|
|
|
|
# Privacy
|
|
"privacy.donottrackheader.enabled" = true;
|
|
"privacy.trackingprotection.enabled" = true;
|
|
"privacy.trackingprotection.socialtracking.enabled" = true;
|
|
"privacy.userContext.enabled" = true;
|
|
"privacy.userContext.ui.enabled" = true;
|
|
|
|
"browser.send_pings" = false; # (default) Don't respect <a ping=...>
|
|
|
|
# This allows firefox devs changing options for a small amount of users to test out stuff.
|
|
# Not with me please ...
|
|
"app.normandy.enabled" = false;
|
|
"app.shield.optoutstudies.enabled" = false;
|
|
|
|
"beacon.enabled" = false; # No bluetooth location BS in my webbrowser please
|
|
"device.sensors.enabled" = false; # This isn't a phone
|
|
"geo.enabled" = false; # Disable geolocation alltogether
|
|
|
|
# ESNI is deprecated ECH is recommended
|
|
"network.dns.echconfig.enabled" = true;
|
|
|
|
# Disable telemetry for privacy reasons
|
|
"toolkit.telemetry.archive.enabled" = false;
|
|
"toolkit.telemetry.enabled" = false; # enforced by nixos
|
|
"toolkit.telemetry.server" = "";
|
|
"toolkit.telemetry.unified" = false;
|
|
"extensions.webcompat-reporter.enabled" = false; # don't report compability problems to mozilla
|
|
"datareporting.policy.dataSubmissionEnabled" = false;
|
|
"datareporting.healthreport.uploadEnabled" = false;
|
|
"browser.ping-centre.telemetry" = false;
|
|
"browser.urlbar.eventTelemetry.enabled" = false; # (default)
|
|
|
|
# Disable some useless stuff
|
|
"extensions.pocket.enabled" = false; # disable pocket, save links, send tabs
|
|
"extensions.abuseReport.enabled" = false; # don't show 'report abuse' in extensions
|
|
"extensions.formautofill.creditCards.enabled" = false; # don't auto-fill credit card information
|
|
"identity.fxaccounts.enabled" = false; # disable firefox login
|
|
"identity.fxaccounts.toolbar.enabled" = false;
|
|
"identity.fxaccounts.pairing.enabled" = false;
|
|
"identity.fxaccounts.commands.enabled" = false;
|
|
"browser.contentblocking.report.lockwise.enabled" = false; # don't use firefox password manger
|
|
"browser.uitour.enabled" = false; # no tutorial please
|
|
"browser.newtabpage.activity-stream.showSponsored" = false;
|
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
|
|
|
# disable EME encrypted media extension (Providers can get DRM
|
|
# through this if they include a decryption black-box program)
|
|
"browser.eme.ui.enabled" = false;
|
|
"media.eme.enabled" = false;
|
|
|
|
# don't predict network requests
|
|
"network.predictor.enabled" = false;
|
|
"browser.urlbar.speculativeConnect.enabled" = false;
|
|
|
|
# disable annoying web features
|
|
"dom.push.enabled" = false; # no notifications, really...
|
|
"dom.push.connection.enabled" = false;
|
|
"dom.battery.enabled" = false; # you don't need to see my battery...
|
|
"dom.private-attribution.submission.enabled" = false; # No PPA for me pls
|
|
};
|
|
};
|
|
profiles.same = {
|
|
id = 4;
|
|
isDefault = false;
|
|
|
|
extraConfig = builtins.concatStringsSep "\n" [
|
|
(builtins.readFile "${betterfox}/Securefox.js")
|
|
(builtins.readFile "${betterfox}/Fastfox.js")
|
|
(builtins.readFile "${betterfox}/Peskyfox.js")
|
|
];
|
|
|
|
settings = {
|
|
# General
|
|
"intl.accept_languages" = "en-US,en";
|
|
"browser.startup.page" = 3; # Resume previous session on startup
|
|
"browser.aboutConfig.showWarning" = false; # I sometimes know what I'm doing
|
|
"browser.ctrlTab.sortByRecentlyUsed" = false; # (default) Who wants that?
|
|
"browser.download.useDownloadDir" = false; # Ask where to save stuff
|
|
"browser.translations.neverTranslateLanguages" = "de"; # No need :)
|
|
"privacy.clearOnShutdown.history" = false; # We want to save history on exit
|
|
# Hi-DPI
|
|
"layout.css.devPixelsPerPx" = "1.5";
|
|
# Allow executing JS in the dev console
|
|
"devtools.chrome.enabled" = true;
|
|
# Disable browser crash reporting
|
|
"browser.tabs.crashReporting.sendReport" = false;
|
|
# Why the fuck can my search window make bell sounds
|
|
"accessibility.typeaheadfind.enablesound" = false;
|
|
# Why the fuck can my search window make bell sounds
|
|
"general.autoScroll" = true;
|
|
|
|
# Hardware acceleration
|
|
# See https://github.com/elFarto/nvidia-vaapi-driver?tab=readme-ov-file#firefox
|
|
"gfx.webrender.all" = true;
|
|
"media.ffmpeg.vaapi.enabled" = true;
|
|
"media.rdd-ffmpeg.enabled" = true;
|
|
"widget.dmabuf.force-enabled" = true;
|
|
"media.av1.enabled" = false; # XXX: change once I've upgraded my GPU
|
|
# XXX: what is this?
|
|
"media.ffvpx.enabled" = false;
|
|
"media.rdd-vpx.enabled" = false;
|
|
|
|
# Privacy
|
|
"privacy.donottrackheader.enabled" = true;
|
|
"privacy.trackingprotection.enabled" = true;
|
|
"privacy.trackingprotection.socialtracking.enabled" = true;
|
|
"privacy.userContext.enabled" = true;
|
|
"privacy.userContext.ui.enabled" = true;
|
|
|
|
"browser.send_pings" = false; # (default) Don't respect <a ping=...>
|
|
|
|
# This allows firefox devs changing options for a small amount of users to test out stuff.
|
|
# Not with me please ...
|
|
"app.normandy.enabled" = false;
|
|
"app.shield.optoutstudies.enabled" = false;
|
|
|
|
"beacon.enabled" = false; # No bluetooth location BS in my webbrowser please
|
|
"device.sensors.enabled" = false; # This isn't a phone
|
|
"geo.enabled" = false; # Disable geolocation alltogether
|
|
|
|
# ESNI is deprecated ECH is recommended
|
|
"network.dns.echconfig.enabled" = true;
|
|
|
|
# Disable telemetry for privacy reasons
|
|
"toolkit.telemetry.archive.enabled" = false;
|
|
"toolkit.telemetry.enabled" = false; # enforced by nixos
|
|
"toolkit.telemetry.server" = "";
|
|
"toolkit.telemetry.unified" = false;
|
|
"extensions.webcompat-reporter.enabled" = false; # don't report compability problems to mozilla
|
|
"datareporting.policy.dataSubmissionEnabled" = false;
|
|
"datareporting.healthreport.uploadEnabled" = false;
|
|
"browser.ping-centre.telemetry" = false;
|
|
"browser.urlbar.eventTelemetry.enabled" = false; # (default)
|
|
|
|
# Disable some useless stuff
|
|
"extensions.pocket.enabled" = false; # disable pocket, save links, send tabs
|
|
"extensions.abuseReport.enabled" = false; # don't show 'report abuse' in extensions
|
|
"extensions.formautofill.creditCards.enabled" = false; # don't auto-fill credit card information
|
|
"identity.fxaccounts.enabled" = false; # disable firefox login
|
|
"identity.fxaccounts.toolbar.enabled" = false;
|
|
"identity.fxaccounts.pairing.enabled" = false;
|
|
"identity.fxaccounts.commands.enabled" = false;
|
|
"browser.contentblocking.report.lockwise.enabled" = false; # don't use firefox password manger
|
|
"browser.uitour.enabled" = false; # no tutorial please
|
|
"browser.newtabpage.activity-stream.showSponsored" = false;
|
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
|
|
|
# disable EME encrypted media extension (Providers can get DRM
|
|
# through this if they include a decryption black-box program)
|
|
"browser.eme.ui.enabled" = false;
|
|
"media.eme.enabled" = false;
|
|
|
|
# don't predict network requests
|
|
"network.predictor.enabled" = false;
|
|
"browser.urlbar.speculativeConnect.enabled" = false;
|
|
|
|
# disable annoying web features
|
|
"dom.push.enabled" = false; # no notifications, really...
|
|
"dom.push.connection.enabled" = false;
|
|
"dom.battery.enabled" = false; # you don't need to see my battery...
|
|
"dom.private-attribution.submission.enabled" = false; # No PPA for me pls
|
|
};
|
|
};
|
|
};
|
|
|
|
home.persistence."/state".directories = [
|
|
".cache/mozilla"
|
|
];
|
|
|
|
home.persistence."/persist".directories = [
|
|
".mozilla"
|
|
];
|
|
|
|
xdg.mimeApps.defaultApplications = {
|
|
"text/html" = [ "firefox.desktop" ];
|
|
"text/xml" = [ "firefox.desktop" ];
|
|
"x-scheme-handler/http" = [ "firefox.desktop" ];
|
|
"x-scheme-handler/https" = [ "firefox.desktop" ];
|
|
};
|
|
}
|