feat(firefox): softened non-proxy profiles and hardened proxy profiles

This commit is contained in:
kenji
2026-07-05 17:24:12 -05:00
parent 38a93f44b7
commit 9706d4d95d
4 changed files with 32 additions and 32 deletions
+4 -3
View File
@@ -11,6 +11,7 @@
bindd = [ bindd = [
"SUPER, W, Open Browser, exec, uwsm app -- firefox" "SUPER, W, Open Browser, exec, uwsm app -- firefox"
"SUPER ALT, P, Open Browser, exec, uwsm app -- firefox -P VPN"
"SUPER, Y, Toggle YouTube, togglespecialworkspace, youtube" "SUPER, Y, Toggle YouTube, togglespecialworkspace, youtube"
"SUPER SHIFT, Y, Move to YouTube Special Workspace, movetoworkspace, special:youtube" "SUPER SHIFT, Y, Move to YouTube Special Workspace, movetoworkspace, special:youtube"
"SUPER, I, Toggle Jellyfin, togglespecialworkspace, jellyfin" "SUPER, I, Toggle Jellyfin, togglespecialworkspace, jellyfin"
@@ -88,7 +89,7 @@
}; };
vpn-proxy = import ./profiles/vpn-proxy.nix { vpn-proxy = import ./profiles/vpn-proxy.nix {
inherit pkgs myConfig; inherit pkgs myConfig;
id = 2; id = 4;
name = "VPN"; name = "VPN";
url = "https://browserleaks.com/ip"; url = "https://browserleaks.com/ip";
}; };
@@ -119,11 +120,11 @@
settings = { settings = {
# --- Privacy & Hardening --- # --- Privacy & Hardening ---
"browser.contentblocking.category" = "strict"; "browser.contentblocking.category" = "strict";
"geo.enabled" = false; "geo.enabled" = true;
"media.peerconnection.enabled" = false; # Prevents WebRTC IP leaks "media.peerconnection.enabled" = false; # Prevents WebRTC IP leaks
"network.dns.disablePrefetch" = true; "network.dns.disablePrefetch" = true;
"network.prefetch-next" = false; "network.prefetch-next" = false;
"privacy.resistFingerprinting" = true; # Note: Spoofs timezone and caps FPS to 60 "privacy.resistFingerprinting" = false; # Note: Spoofs timezone and caps FPS to 60
"privacy.trackingprotection.enabled" = true; "privacy.trackingprotection.enabled" = true;
# --- NixOS / Hyprland Integration --- # --- NixOS / Hyprland Integration ---
+23 -28
View File
@@ -4,9 +4,6 @@
id, id,
name, name,
url, url,
# Add default proxy parameters (can be overridden when imported)
proxyHost ? "192.168.68.70",
proxyPort ? 8888,
... ...
}: { }: {
inherit id name; inherit id name;
@@ -18,37 +15,32 @@
extensions.force = true; extensions.force = true;
extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [
ublock-origin ublock-origin
bitwarden
tridactyl
new-tab-override
pywalfox
]; ];
settings = { settings = {
# --- PROXY / VPN CONFIGURATION --- # --- PROXY CONFIGURATION (HTTP & HTTPS) ---
"network.proxy.type" = 1; # 1 = Manual proxy configuration (0 = Direct, 5 = System) "network.proxy.type" = 1; # 1 = Manual proxy configuration (0 = Direct, 5 = System)
# SOCKS5 Proxy Settings (Recommended for VPN tunnels) # HTTP Proxy Settings
"network.proxy.socks" = proxyHost; "network.proxy.http" = myConfig.proxy.ip;
"network.proxy.socks_port" = proxyPort; "network.proxy.http_port" = myConfig.proxy.port;
"network.proxy.socks_version" = 5;
# CRITICAL: Prevent DNS leaks by forcing DNS queries through the SOCKS proxy # HTTPS / SSL Proxy Settings (Routing HTTPS through the same HTTP proxy)
"network.proxy.socks_remote_dns" = true; "network.proxy.ssl" = myConfig.proxy.ip;
"network.proxy.proxy_over_tls" = true; "network.proxy.ssl_port" = myConfig.proxy.port;
# Optional: If using an HTTP/HTTPS proxy instead of SOCKS5, uncomment these and comment out SOCKS above: # Tell Firefox to share these settings across all protocols
# "network.proxy.http" = proxyHost; "network.proxy.share_proxy_settings" = true;
# "network.proxy.http_port" = proxyPort;
# "network.proxy.ssl" = proxyHost;
# "network.proxy.ssl_port" = proxyPort;
# Define what should NOT go through the proxy (local addresses) # Define what should NOT go through the proxy (local network addresses)
"network.proxy.no_proxies_on" = "localhost, 127.0.0.1, ::1, 192.168.0.0/16, 10.0.0.0/8"; "network.proxy.no_proxies_on" = "localhost, 127.0.0.1, ::1, 192.168.0.0/16, 10.0.0.0/8";
# Fail closed: Do NOT fall back to direct connection if the proxy fails # Fail closed: Do NOT fall back to direct connection if the proxy fails or times out
"network.proxy.failover_timeout" = 1800; "network.proxy.failover_timeout" = 1800;
# Optional: If your HTTP proxy itself is encrypted over TLS (HTTPS proxying to the server), uncomment:
# "network.proxy.proxy_over_tls" = true;
# --- New Tab Override --- # --- New Tab Override ---
"extensions.newtaboverride@agenedia.com.url" = url; "extensions.newtaboverride@agenedia.com.url" = url;
"extensions.newtaboverride@agenedia.com.type" = 1; # URL mode "extensions.newtaboverride@agenedia.com.type" = 1; # URL mode
@@ -56,9 +48,9 @@
# --- Privacy & Hardening --- # --- Privacy & Hardening ---
"browser.contentblocking.category" = "strict"; "browser.contentblocking.category" = "strict";
"privacy.trackingprotection.enabled" = true; "privacy.trackingprotection.enabled" = true;
"privacy.resistFingerprinting" = false; # Note: Spoofs timezone and caps FPS to 60 "privacy.resistFingerprinting" = true; # Note: Spoofs timezone and caps FPS to 60
"geo.enabled" = false; "geo.enabled" = false;
"media.peerconnection.enabled" = false; # Prevents WebRTC IP leaks (Essential for VPN use) "media.peerconnection.enabled" = false; # Prevents WebRTC IP leaks
"network.dns.disablePrefetch" = true; "network.dns.disablePrefetch" = true;
"network.prefetch-next" = false; "network.prefetch-next" = false;
@@ -97,11 +89,14 @@
"browser.sessionstore.max_tabs_undo" = 0; # Disable undo close tab "browser.sessionstore.max_tabs_undo" = 0; # Disable undo close tab
# --- DNS over HTTPS --- # --- DNS over HTTPS ---
# Note: When using SOCKS5 remote DNS, Trr (DoH) can conflict or bypass your VPN's internal DNS. # Mode 5 disables native DoH explicitly. When using an HTTP proxy, standard HTTP requests
# Mode 5 disables DoH explicitly so the SOCKS proxy handles all DNS resolution cleanly. # send the full URI and HTTPS requests use the CONNECT method with domain names, meaning
# DNS resolution is handled directly by the proxy server without local DNS leaks.
"network.trr.mode" = 5; "network.trr.mode" = 5;
# --- private ---
"browser.privatebrowsing.autostart" = true;
"extensions.allowPrivateBrowsingByDefault" = true;
}; };
# Optional: Keep your userChrome block here if you want the autohide UI applied to this profile too # Optional: Append your userChrome = '' ... ''; block here if needed
# userChrome = '' ... '';
} }
+1 -1
View File
@@ -29,7 +29,7 @@
"browser.contentblocking.category" = "strict"; "browser.contentblocking.category" = "strict";
"privacy.trackingprotection.enabled" = true; "privacy.trackingprotection.enabled" = true;
"privacy.resistFingerprinting" = false; # Note: Spoofs timezone and caps FPS to 60 "privacy.resistFingerprinting" = false; # Note: Spoofs timezone and caps FPS to 60
"geo.enabled" = false; "geo.enabled" = true;
"media.peerconnection.enabled" = false; # Prevents WebRTC IP leaks "media.peerconnection.enabled" = false; # Prevents WebRTC IP leaks
"network.dns.disablePrefetch" = true; "network.dns.disablePrefetch" = true;
"network.prefetch-next" = false; "network.prefetch-next" = false;
+4
View File
@@ -1,6 +1,10 @@
{ {
hakase = { hakase = {
myConfig = { myConfig = {
proxy = {
ip = "192.168.68.70";
port = "8634";
};
font = { font = {
monospace = "MonoLisa"; monospace = "MonoLisa";
monospaceScript = "MonoLisa Italic @ss02=1"; monospaceScript = "MonoLisa Italic @ss02=1";