From b7ab4668c6dd7d6b153b9bf7ea3923ebe93f1ddd Mon Sep 17 00:00:00 2001 From: brustybee Date: Sat, 7 Mar 2026 03:29:12 +0530 Subject: Add firefox and zen browser --- common/default.nix | 2 +- common/programs/default.nix | 4 + common/programs/firefox.nix | 159 ++++++++++++++++++++++++++++++++ common/programs/zenBrowser.nix | 115 +++++++++++++++++++++++ flake.lock | 201 +++++++++++++++++++++++++++++++++++++++++ flake.nix | 4 + users/bee/default.nix | 1 + users/common.nix | 2 +- 8 files changed, 486 insertions(+), 2 deletions(-) create mode 100644 common/programs/default.nix create mode 100644 common/programs/firefox.nix create mode 100644 common/programs/zenBrowser.nix create mode 100644 flake.lock diff --git a/common/default.nix b/common/default.nix index c6d3f68..6f1f7b4 100644 --- a/common/default.nix +++ b/common/default.nix @@ -5,5 +5,5 @@ inputs: (lib.modules.importApply ./modules { inherit inputs; }) ]; # flake.templates = import ./templates inputs; - # flake.homeModules.programs = import ./programs; + flake.homeModules.programs = import ./programs; } diff --git a/common/programs/default.nix b/common/programs/default.nix new file mode 100644 index 0000000..d170adb --- /dev/null +++ b/common/programs/default.nix @@ -0,0 +1,4 @@ +{ importer, ... }: +{ + imports = importer ./.; +} diff --git a/common/programs/firefox.nix b/common/programs/firefox.nix new file mode 100644 index 0000000..b63fc8d --- /dev/null +++ b/common/programs/firefox.nix @@ -0,0 +1,159 @@ +{ + pkgs, + lib, + config, + ... +}: +{ + programs.firefox = { + enable = false; + + policies = { + DisableTelemetry = true; + BlockAboutConfig = false; + DisableFirefoxAccounts = true; + DisablePocket = true; + DisableSetDesktopBackground = true; + DisableSystemAddonUpdate = true; + AutofillCreditCardEnabled = false; + AutofillAddressEnabled = false; + DisableFirefoxScreenshots = true; + DisableMasterPasswordCreation = true; + DontCheckDefaultBrowser = true; + NoDefaultBookmarks = true; + OfferToSaveLogins = false; + UserMessaging = { + WhatsNew = false; + ExtensionRecommendations = false; + FeatureRecommendations = false; + UrlbarInterventions = false; + SkipOnboarding = true; + MoreFromMozilla = false; + Locked = true; + }; + FirefoxHome = { + Search = false; + TopSites = false; + SponsoredTopSites = false; + Highlights = false; + Pocket = false; + Stories = false; + SponsoredPocket = false; + SponsoredStories = false; + Snippets = false; + Locked = true; + }; + FirefoxSuggest = { + WebSuggestions = false; + SponsoredSuggestions = false; + ImproveSuggest = false; + Locked = true; + }; + ExtensionSettings = { + "uBlock0@raymondhill.net" = { + default_area = "menupanel"; + installation_mode = "force_installed"; + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + private_browsing = true; + }; + # "addon@darkreader.org" = { + # installation_mode = "force_installed"; + # install_url = "https://addons.mozilla.org/firefox/downloads/latest/darkreader/latest.xpi"; + # }; + } + // lib.optionalAttrs config.hyprland.enable { + "pywalfox@frewacom.org" = { + installation_mode = "force_installed"; + install_url = "https://addons.mozilla.org/firefox/downloads/latest/pywalfox/latest.xpi"; + }; + }; + }; + + profiles.default = { + settings = { + # Always start fresh, no tab restore + "browser.aboutConfig.showWarning" = false; + "browser.sessionstore.resume_from_crash" = false; + "browser.sessionstore.restore_on_demand" = false; + "browser.sessionstore.max_tabs_undo" = 0; + "browser.sessionstore.max_windows_undo" = 0; + + # "userChrome.theme-material" = true; + + # "browser.startup.page" = 1; # Blank page + # "browser.newtabpage.enabled" = false; + + "privacy.trackingprotection.enabled" = true; + "privacy.trackingprotection.socialtracking.enabled" = true; + "privacy.globalprivacycontrol.enabled" = true; + "network.cookie.cookieBehavior" = 2; # Block all cookies + "browser.contentblocking.category" = "strict"; + + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "svg.context-properties.content.enabled" = true; + + # "beacon.enabled" = false; + + # Performance + "gfx.webrender.all" = true; # Enable WebRender + "layers.acceleration.enabled" = true; + # "dom.ipc.processCount" = 8; # Adjust based on CPU cores + "browser.cache.disk.enable" = false; # Disable disk cache + "browser.cache.memory.enable" = true; # Use memory cache + "browser.cache.memory.capacity" = 1048576; # 1gb memory cache + "browser.preferences.defaultPerformanceSettings.enabled" = false; + "media.hardware-video-decoding.force-enabled" = true; + "media.hardware-video-decoding.enabled" = true; + "browser.tabs.unloadOnLowMemory" = true; + "browser.low_commit_space_threshold_percent" = 100; + "browser.tabs.min_inactive_duration_before_unload" = 3600000; + + # Disable unnecessary features + "browser.aboutwelcome.enabled" = false; + "browser.discovery.enabled" = false; + "browser.onboarding.enabled" = false; + + "browser.tabs.inTitlebar" = 0; + "browser.toolbars.bookmarks.visibility" = "never"; + "widget.use-xdg-desktop-portal.file-picker" = 1; + }; + + search = { + force = true; + default = "ddg"; + engines = { + duck-duck-go = { + name = "DuckDuckGo"; + urls = [ { template = "https://duckduckgo.com/?q={searchTerms}"; } ]; + iconMapObj."16" = "https://duckduckgo.com/favicon.ico"; + definedAliases = [ ":ddg" ]; + }; + startpage = { + name = "Startpage"; + urls = [ { template = "https://www.startpage.com/do/search?query={searchTerms}"; } ]; + iconMapObj."16" = "https://www.startpage.com/favicon.ico"; + definedAliases = [ ":sp" ]; + }; + nixos-packages = { + name = "NixOS Packages"; + urls = [ { template = "https://search.nixos.org/packages?query={searchTerms}"; } ]; + iconMapObj."16" = "https://nixos.org/favicon.ico"; + definedAliases = [ ":n" ]; + }; + nixos-wiki = { + name = "NixOS Wiki"; + urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ]; + iconMapObj."16" = "https://wiki.nixos.org/favicon.ico"; + definedAliases = [ ":nw" ]; + }; + amazon.metaData.hidden = true; + ebay.metaData.hidden = true; + perplexity.metaData.hidden = true; + + google.metaData.alias = ":g"; + bing.metaData.alias = ":b"; + }; + }; + }; + }; +} diff --git a/common/programs/zenBrowser.nix b/common/programs/zenBrowser.nix new file mode 100644 index 0000000..60a4ae3 --- /dev/null +++ b/common/programs/zenBrowser.nix @@ -0,0 +1,115 @@ +{ + inputs, + pkgs, + lib, + ... +}: +let + extension = shortId: guid: { + name = guid; + value = { + install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi"; + installation_mode = "normal_installed"; + private_browsing = true; + default_area = "menupanel"; # menupanel = unpin, navbar = pin + }; + }; + + prefs = { + "browser.aboutConfig.showWarning" = false; + "browser.sessionstore.resume_from_crash" = false; + "browser.sessionstore.restore_on_demand" = false; + "browser.sessionstore.restore_tabs_lazily" = false; + "browser.sessionstore.restore_windows_to_virtual_desktop" = false; + "browser.sessionstore.max_resumed_crashes" = 0; + "gfx.webrender.all" = true; + "gfx.webrender.compositor" = true; + "gfx.x11-egl.force-enabled" = true; + "layers.acceleration.force-enabled" = true; + "media.ffmpeg.vaapi.enabled" = true; + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "zen.welcome-screen.seen" = true; + }; + + extensions = [ + (extension "ublock-origin" "uBlock0@raymondhill.net") + (extension "darkreader" "addon@darkreader.org") + ]; +in +{ + home.packages = [ + (pkgs.wrapFirefox + inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.zen-browser-unwrapped + { + extraPrefs = lib.concatLines ( + lib.mapAttrsToList ( + name: value: "lockPref(${lib.strings.toJSON name}, ${lib.strings.toJSON value});" + ) prefs + ); + + extraPolicies = { + DisableTelemetry = true; + AutofillAddressEnabled = true; + AutofillCreditCardEnabled = false; + DisableAppUpdate = true; + DisableFeedbackCommands = true; + DisableFirefoxStudies = true; + DisablePocket = true; + DontCheckDefaultBrowser = true; + NoDefaultBookmarks = true; + DisableFirefoxScreenshots = true; + OfferToSaveLogins = false; + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DNSOverHTTPS = { + Enabled = true; + ProviderURL = "https://dns.quad9.net/dns-query"; + Locked = true; + Fallback = true; + }; + + ExtensionSettings = builtins.listToAttrs extensions; + + SearchEngines = { + Default = "DuckDuckGo"; + PreventInstalls = true; + Remove = [ + "Google" + "Bing" + ]; + Add = [ + { + Name = "nixpkgs packages"; + URLTemplate = "https://search.nixos.org/packages?query={searchTerms}"; + IconURL = "https://wiki.nixos.org/favicon.ico"; + Alias = ":np"; + } + { + Name = "NixOS options"; + URLTemplate = "https://search.nixos.org/options?query={searchTerms}"; + IconURL = "https://wiki.nixos.org/favicon.ico"; + Alias = ":no"; + } + { + Name = "NixOS Wiki"; + URLTemplate = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; + IconURL = "https://wiki.nixos.org/favicon.ico"; + Alias = ":nw"; + } + { + Name = "noogle"; + URLTemplate = "https://noogle.dev/q?term={searchTerms}"; + IconURL = "https://noogle.dev/favicon.ico"; + Alias = ":ng"; + } + ]; + }; + }; + } + ) + ]; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..a53d028 --- /dev/null +++ b/flake.lock @@ -0,0 +1,201 @@ +{ + "nodes": { + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1772408722, + "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1749398372, + "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772807318, + "narHash": "sha256-Qjw6ILt8cb2HQQpCmWNLMZZ63wEo1KjTQt+1BcQBr7k=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "daa2c221320809f5514edde74d0ad0193ad54ed8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "mango": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "nixpkgs" + ], + "scenefx": "scenefx" + }, + "locked": { + "lastModified": 1772792509, + "narHash": "sha256-c2X+x/D8txqV5UaN6TYYh9PEXyMaWVZl4mAQ0Sl21f8=", + "owner": "DreamMaoMao", + "repo": "mango", + "rev": "9a17a0279c39b330d155d50282d1d2641d519dc3", + "type": "github" + }, + "original": { + "owner": "DreamMaoMao", + "repo": "mango", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1772624091, + "narHash": "sha256-QKyJ0QGWBn6r0invrMAK8dmJoBYWoOWy7lN+UHzW1jc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "80bdc1e5ce51f56b19791b52b2901187931f5353", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1772328832, + "narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-lib_2": { + "locked": { + "lastModified": 1748740939, + "narHash": "sha256-rQaysilft1aVMwF14xIdGS3sj1yHlI6oKQNBRTF40cc=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "656a64127e9d791a334452c6b6606d17539476e2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-parts": "flake-parts", + "home-manager": "home-manager", + "mango": "mango", + "nixpkgs": "nixpkgs", + "sops-nix": "sops-nix", + "zen-browser": "zen-browser" + } + }, + "scenefx": { + "inputs": { + "nixpkgs": [ + "mango", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1750785057, + "narHash": "sha256-tGX6j4W91rcb+glXJo43sjPI9zQvPotonknG1BdihR4=", + "owner": "wlrfx", + "repo": "scenefx", + "rev": "3a6cfb12e4ba97b43326357d14f7b3e40897adfc", + "type": "github" + }, + "original": { + "owner": "wlrfx", + "repo": "scenefx", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772495394, + "narHash": "sha256-hmIvE/slLKEFKNEJz27IZ8BKlAaZDcjIHmkZ7GCEjfw=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "1d9b98a29a45abe9c4d3174bd36de9f28755e3ff", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "zen-browser": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772685307, + "narHash": "sha256-5xthZHeqwBeXNhnRIlxnCuaZLky0SZ6vQsxtd+eqhTU=", + "owner": "youwen5", + "repo": "zen-browser-flake", + "rev": "dc92d88524ee83308795bc90f6a9f1d965265aaa", + "type": "github" + }, + "original": { + "owner": "youwen5", + "repo": "zen-browser-flake", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix index 9a13fba..100ac9a 100644 --- a/flake.nix +++ b/flake.nix @@ -21,6 +21,10 @@ url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; + zen-browser = { + url = "github:youwen5/zen-browser-flake"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = diff --git a/users/bee/default.nix b/users/bee/default.nix index 064ff78..fd37ca1 100644 --- a/users/bee/default.nix +++ b/users/bee/default.nix @@ -13,6 +13,7 @@ imports = with inputs.self.homeModules; [ ../common.nix beeMods + programs ]; beeMods = { diff --git a/users/common.nix b/users/common.nix index 6c95959..1e0670d 100644 --- a/users/common.nix +++ b/users/common.nix @@ -9,7 +9,7 @@ package = pkgs.git.override { withLibsecret = true; }; settings = { user = { - name = "beeb5k"; + name = "brustybee"; email = "bee@4d2.org"; signingkey = "42177A22EA630575"; }; -- cgit v1.3.1