diff --git a/flake.lock b/flake.lock index ef4174b..99e623a 100644 --- a/flake.lock +++ b/flake.lock @@ -306,7 +306,8 @@ "nixvim": "nixvim", "nur": "nur", "sops-nix": "sops-nix", - "yazi": "yazi" + "yazi": "yazi", + "zen-browser": "zen-browser" } }, "rust-overlay": { @@ -399,6 +400,26 @@ "repo": "yazi", "type": "github" } + }, + "zen-browser": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1779946062, + "narHash": "sha256-M/2bCPYjiBTkDNV29J/00z10RM3yYnL9X74RqAHDme0=", + "owner": "youwen5", + "repo": "zen-browser-flake", + "rev": "2e2c38ba20a3d614d0196e0aa44851547306e861", + "type": "github" + }, + "original": { + "owner": "youwen5", + "repo": "zen-browser-flake", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 1445ac6..9a3daa4 100644 --- a/flake.nix +++ b/flake.nix @@ -35,6 +35,11 @@ }; yazi.url = "github:sxyazi/yazi"; + + zen-browser = { + url = "github:youwen5/zen-browser-flake"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = @@ -48,6 +53,7 @@ nur, sops-nix, yazi, + zen-browser, ... }@inputs: { diff --git a/home/programs/default.nix b/home/programs/default.nix index 396531c..3d818c9 100644 --- a/home/programs/default.nix +++ b/home/programs/default.nix @@ -28,5 +28,6 @@ ./zathura.nix ./zoom.nix ./zsh.nix + ./zen.nix ]; } diff --git a/home/programs/river/default.nix b/home/programs/river/default.nix index 1c5aa2f..b2e0368 100644 --- a/home/programs/river/default.nix +++ b/home/programs/river/default.nix @@ -119,7 +119,7 @@ # Powerbutton "None XF86PowerOff" = "spawn '/home/$USER/.config/eww/scripts/powermenu.sh'"; # Program - "Super C" = "spawn 'firefox'"; + "Super C" = "spawn 'zen'"; "Super Y" = "spawn 'signal-desktop'"; "Super X" = "spawn 'Telegram'"; "Super V" = "spawn 'thunderbird'"; diff --git a/home/programs/zen.nix b/home/programs/zen.nix new file mode 100644 index 0000000..dea7e8e --- /dev/null +++ b/home/programs/zen.nix @@ -0,0 +1,80 @@ +{ + 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"; + }; + }; + + prefs = { + # Check these out at about:config + "extensions.autoDisableScopes" = 0; + "extensions.pocket.enabled" = false; + # ... + }; + + extensions = [ + # To add additional extensions, find it on addons.mozilla.org, find + # the short ID in the url (like https://addons.mozilla.org/en-US/firefox/addon/!SHORT_ID!/) + # Then go to https://addons.mozilla.org/api/v5/addons/addon/!SHORT_ID!/ to get the guid + (extension "ublock-origin" "uBlock0@raymondhill.net") + # ... + ]; + +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; + ExtensionSettings = builtins.listToAttrs extensions; + + SearchEngines = { + Default = "ecosia"; + 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"; + } + ]; + }; + }; + } + ) + ]; +}