vanadium/zen-browser: init

This commit is contained in:
Primrose 2025-11-23 10:51:44 +08:00
parent b0813c1e96
commit d74245aff7
Signed by: primrose
GPG key ID: 4E887A4CA9714ADA
6 changed files with 378 additions and 11 deletions

View file

@ -129,15 +129,15 @@ in
};
};
xdg.mimeApps = lib.mkIf cfg.enable {
enable = true;
# source: https://unix.stackexchange.com/a/684582
defaultApplications = {
"text/html" = "firefox.desktop";
"x-scheme-handler/http" = "firefox.desktop";
"x-scheme-handler/https" = "firefox.desktop";
"x-scheme-handler/about" = "firefox.desktop";
"x-scheme-handler/unknown" = "firefox.desktop";
};
};
# xdg.mimeApps = lib.mkIf cfg.enable {
# enable = true;
# # source: https://unix.stackexchange.com/a/684582
# defaultApplications = {
# "text/html" = "firefox.desktop";
# "x-scheme-handler/http" = "firefox.desktop";
# "x-scheme-handler/https" = "firefox.desktop";
# "x-scheme-handler/about" = "firefox.desktop";
# "x-scheme-handler/unknown" = "firefox.desktop";
# };
# };
}

View file

@ -0,0 +1,169 @@
{
pkgs,
config,
lib,
...
}:
let
inherit (pkgs) nur;
cfg = config.programs.zen-browser;
in
{
programs.zen-browser = {
# TODO: upstream default is broken? They default to zen-twilight
package = pkgs.twilight;
# https://mozilla.github.io/policy-templates
# The following have more complex logic, keep them as policies and not profiles
policies = {
RequestedLocales = [
"fr-FR" # for fuck sake stop showing me translated version of French gov sites
"zh-TW"
"en-US"
];
SearchEngines = {
Remove = [
"Google"
"Bing"
"DuckDuckGo"
"Qwant"
"eBay"
"Perplexity"
];
Default = "Brave";
Add = [
{
Name = "Brave";
Alias = "@br";
URLTemplate = "https://search.brave.com/search?q={searchTerms}&source=web";
SuggestURLTemplate = "https://suggestqueries.google.com/complete/search?q={searchTerms}";
}
];
};
NoDefaultBookmarks = true;
DisplayMenuBar = "never";
DisplayBookmarksToolbar = "never";
DNSOverHTTPS = {
Enabled = false;
};
};
# https://searchfox.org/mozilla-central/source/browser/components/enterprisepolicies/Policies.sys.mjs
# Some policies can be rewritten to profiles configuration
#
# TODO: try out the "locked" semantic from zen
# https://github.com/0xc000022070/zen-browser-flake/tree/main#preferences
profiles.default = {
settings = {
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"browser.tabs.loadInBackground" = true;
"browser.ctrlTab.sortByRecentlyUsed" = false;
"layout.css.devPixelsPerPx" = 1.1;
# open links in new window
# this works a lot better with xmonad where I have a bunch of windows
"browser.link.open_newwindow" = 2;
# Sponsored crap
# Yes
"browser.newtabpage.activity-stream.showSearch" = true;
"browser.newtabpage.activity-stream.feeds.topsites" = true;
# No
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.activity-stream.feeds.section.highlights" = false;
"browser.newtabpage.activity-stream.feeds.system.topstories" = false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
"browser.newtabpage.activity-stream.showSponsored" = false;
# URL
# Yes
"browser.urlbar.suggest.quicksuggest.nonsponsored" = true;
# No
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
# Pasword manager
"signon.rememberSignons" = false;
"services.passwordSavingEnabled" = false;
"pref.privacy.disable_button.view_passwords" = false;
# Hardware acceleration
"layers.acceleration.disabled" = false;
# Screenshot
"screenshots.browser.component.enabled" = true;
# Recommendations
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false;
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false;
"extensions.htmlaboutaddons.recommendations.enabled" = false; # Addons
# Onboarding
"browser.aboutwelcome.enabled" = false;
# AI crap
"browser.ml.chat.enabled" = false;
"browser.ml.chat.page" = false;
"browser.ml.chat.shortcuts" = false;
"browser.ml.chat.sidebar" = false;
# Prevent WebRTC leak
# https://mullvad.net/en/help/webrtc
"media.peerconnection.enabled" = false;
};
extensions.packages =
let
addons = nur.repos.rycee.firefox-addons;
in
[
addons.ublock-origin
addons.privacy-badger
addons.user-agent-string-switcher
/*
Here's to you who want to remove news feed eradicator because you find it annoying:
It is here to annoy you so it is less likely for you to be on the agency inversion path.
DO NOT REMOVE IT. I repeat, DO NOT REMOVE IT.
If you think it's annoying, go do some jump rope, sing, live.
*/
addons.news-feed-eradicator # did you read the comment above?
addons.multi-account-containers
];
};
};
xdg.mimeApps =
let
associations = builtins.listToAttrs (
map
(name: {
inherit name;
value = cfg.package.meta.desktopFileName;
})
[
"application/x-extension-shtml"
"application/x-extension-xhtml"
"application/x-extension-html"
"application/x-extension-xht"
"application/x-extension-htm"
"x-scheme-handler/unknown"
"x-scheme-handler/mailto"
"x-scheme-handler/chrome"
"x-scheme-handler/about"
"x-scheme-handler/https"
"x-scheme-handler/http"
"application/xhtml+xml"
"application/json"
"text/plain"
"text/html"
]
);
in
lib.mkIf cfg.enable {
associations.added = associations;
defaultApplications = associations;
};
}