From 6e5f9cbf200dbc87380ae9a879eb1c492cf10d5f Mon Sep 17 00:00:00 2001 From: Fredrik Robertsen Date: Wed, 1 Apr 2026 14:13:04 +0200 Subject: [PATCH] add zen browser --- flake.lock | 23 ++++++++++- flake.nix | 8 +++- hosts/laptop/default.nix | 1 + modules/zen.nix | 86 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 modules/zen.nix diff --git a/flake.lock b/flake.lock index 786f446..b8bd864 100644 --- a/flake.lock +++ b/flake.lock @@ -18,7 +18,28 @@ }, "root": { "inputs": { - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "zen-browser": "zen-browser" + } + }, + "zen-browser": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1774759885, + "narHash": "sha256-Y3D2GnZTO6BhGWeVcO6qUkiO5g0dDL2tmokLVWNC1WY=", + "owner": "youwen5", + "repo": "zen-browser-flake", + "rev": "16e3f4cd221a030186a96015d82dcb3fb4afa4d6", + "type": "github" + }, + "original": { + "owner": "youwen5", + "repo": "zen-browser-flake", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index 6222d5e..f1defa6 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,13 @@ { description = "multi-machine nixos config"; - inputs.nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + zen-browser = { + url = "github:youwen5/zen-browser-flake"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; outputs = { self, nixpkgs, ... }@inputs: let diff --git a/hosts/laptop/default.nix b/hosts/laptop/default.nix index 4c99ac2..e7685ce 100644 --- a/hosts/laptop/default.nix +++ b/hosts/laptop/default.nix @@ -7,6 +7,7 @@ ../../modules/niri.nix ../../modules/japanese.nix ../../modules/gc.nix + ../../modules/zen.nix ]; networking.hostName = "laptop"; diff --git a/modules/zen.nix b/modules/zen.nix new file mode 100644 index 0000000..f6c3fa4 --- /dev/null +++ b/modules/zen.nix @@ -0,0 +1,86 @@ +{ + 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; + "browser.ctrlTab.sortByRecentlyUsed" = true; + "privacy.sanitize.sanitizeOnShutdown" = true; + "sidebar.visibility" = "hide-sidebar"; + "zen.view.compact.enable-at-startup" = true; + "zen.welcome-screen.seen" = true; + }; + + 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") + (extension "darkreader" "addon@darkreader.org") + (extension "kagi-search-for-firefox" "search@kagi.com") + (extension "proton-pass" "78272b6fa58f4a1abaac99321d503a20@proton.me") + ]; + +in +{ + environment.systemPackages = [ + (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 = "kagi"; + 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"; + } + ]; + }; + }; + } + ) + ]; +}