From 58c42ed7d80c00a157dd251dca59b1e365e665fe Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 13 Mar 2025 12:29:44 +0100 Subject: [PATCH] Add librewolf module configuration --- modules/programs/browser/foxwrappers.nix | 17 ++++++ modules/programs/browser/librewolf.nix | 72 ++++++++++++++++++++++-- modules/programs/browser/zen.nix | 43 +++++++++++++- modules/programs/homePackages.nix | 5 +- 4 files changed, 127 insertions(+), 10 deletions(-) diff --git a/modules/programs/browser/foxwrappers.nix b/modules/programs/browser/foxwrappers.nix index 45fcd13..fc166cb 100644 --- a/modules/programs/browser/foxwrappers.nix +++ b/modules/programs/browser/foxwrappers.nix @@ -22,5 +22,22 @@ in { }; }; }) + (mkFirefoxModule { + modulePath = [ + "programs" + "librewolf-dashnix" + ]; + name = "LibreWolf"; + description = "LibreWolf is a privacy enhanced Firefox fork."; + wrappedPackageName = "librewolf"; + unwrappedPackageName = "librewolf-unwrapped"; + + platforms.linux = {configPath = ".librewolf";}; + platforms.darwin = { + configPath = "Library/Application Support/LibreWolf"; + }; + + enableBookmarks = false; + }) ]; } diff --git a/modules/programs/browser/librewolf.nix b/modules/programs/browser/librewolf.nix index 9a17bda..8bbbfd5 100644 --- a/modules/programs/browser/librewolf.nix +++ b/modules/programs/browser/librewolf.nix @@ -2,6 +2,7 @@ lib, config, options, + pkgs, ... }: { options.mods.browser.librewolf = { @@ -11,18 +12,79 @@ type = lib.types.bool; description = "Enables the librwolf browser"; }; - settings = lib.mkOption { - default = {}; + configuration = lib.mkOption { + default = { + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + DisplayBookmarksToolbar = "never"; + DisplayMenuBar = "default-off"; + CaptivePortal = false; + DisableFirefoxStudies = true; + DisableTelemetry = true; + DisableFirefoxAccounts = false; + NoDefaultBookmarks = true; + OfferToSaveLogins = false; + OfferToSaveLoginsDefault = false; + PasswordManagerEnabled = false; + FirefoxHome = { + Search = true; + Pocket = false; + Snippets = false; + TopSites = true; + Highlights = false; + }; + UserMessaging = { + ExtensionRecommendations = false; + SkipOnboarding = true; + }; + }; example = {}; type = with lib.types; attrsOf anything; - description = "librewolf settings"; + description = "Librewolf policy configuration. See https://mozilla.github.io/policy-templates/ for more information."; + }; + profiles = lib.mkOption { + default = [ + { + name = "${config.conf.username}"; + value = { + isDefault = true; + id = 0; + }; + } + { + name = "special"; + value = { + isDefault = false; + id = 1; + }; + } + ]; + example = [ + { + name = "custom"; + value = { + isDefault = true; + id = 0; + extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader]; + }; + } + ]; + type = with lib.types; listOf (attrsOf anything); + description = "Librewolf profiles"; }; }; config = lib.mkIf config.mods.browser.librewolf.enable ( lib.optionalAttrs (options ? home.packages) { - programs.librewolf = { + programs.librewolf-dashnix = { enable = true; - settings = config.mods.browser.librewolf.settings; + package = pkgs.librewolf; + policies = config.mods.browser.librewolf.configuration; + profiles = builtins.listToAttrs config.mods.browser.librewolf.profiles; }; } ); diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index ced52ea..33f2da8 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -46,13 +46,37 @@ }; example = {}; type = with lib.types; attrsOf anything; - description = "Zen policy configuration. See https://mozilla.github.io/policy-templates/ for more information."; + description = "Zen policy configuration. See https://mozilla.github.io/policy-templates for more information."; }; profiles = lib.mkOption { - default = [ + default = let + extensions = [ + pkgs.nur.repos.rycee.firefox-addons.darkreader + pkgs.nur.repos.rycee.firefox-addons.ublock-origin + pkgs.nur.repos.rycee.firefox-addons.ghostery + pkgs.nur.repos.rycee.firefox-addons.canvasblocker + pkgs.nur.repos.rycee.firefox-addons.i-dont-care-about-cookies + pkgs.nur.repos.rycee.firefox-addons.keepassxc-browser + pkgs.nur.repos.rycee.firefox-addons.vimium + pkgs.nur.repos.rycee.firefox-addons.react-devtools + pkgs.nur.repos.rycee.firefox-addons.reduxdevtools + pkgs.nur.repos.rycee.firefox-addons.user-agent-string-switcher + pkgs.nur.repos.rycee.firefox-addons.private-relay + ]; + in [ { name = "${config.conf.username}"; value = { + settings = { + zen.view.compact.hide-tabbar = false; + zen.view.compact.hide-toolbar = true; + zen.view.sidebar-expanded = false; + zen.view.use-single-toolbar = false; + zen.view.welcome-screen.seen = true; + zen.theme.accent-color = "#b4bbff"; + extensions.autoDisableScopes = 0; + }; + extensions.packages = extensions; isDefault = true; id = 0; }; @@ -60,6 +84,16 @@ { name = "special"; value = { + settings = { + zen.view.compact.hide-tabbar = false; + zen.view.compact.hide-toolbar = true; + zen.view.sidebar-expanded = false; + zen.view.use-single-toolbar = false; + zen.view.welcome-screen.seen = true; + zen.theme.accent-color = "#b4bbff"; + extensions.autoDisableScopes = 0; + }; + extensions.packages = extensions; isDefault = false; id = 1; }; @@ -69,9 +103,12 @@ { name = "custom"; value = { + settings = { + extensions.autoDisableScopes = 0; + }; + extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader]; isDefault = true; id = 0; - extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader]; }; } ]; diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index 4ca908b..8df753f 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -161,9 +161,10 @@ in { } else if config.mods.homePackages.browser == "librewolf" then { - librewolf = { + librewolf-dashnix = { enable = true; - settings = config.mods.browser.librewolf.settings; + policies = config.mods.browser.librewolf.configuration; + profiles = builtins.listToAttrs config.mods.browser.librewolf.profiles; }; } else {}