diff --git a/hosts/chris-pc/default.nix b/hosts/chris-pc/default.nix index 0d7980d..b949ff1 100644 --- a/hosts/chris-pc/default.nix +++ b/hosts/chris-pc/default.nix @@ -66,6 +66,7 @@ browsers = { default = "firefox"; firefox.enable = true; + chrome.enable = true; }; }; diff --git a/modules/desktop/browsers/chrome.nix b/modules/desktop/browsers/chrome.nix new file mode 100644 index 0000000..b3a2c35 --- /dev/null +++ b/modules/desktop/browsers/chrome.nix @@ -0,0 +1,56 @@ +{ inputs, options, config, lib, pkgs, ... }: +let + inherit (builtins) toJSON; + inherit (lib.attrsets) attrValues mapAttrsToList; + inherit (lib.modules) mkIf mkMerge; + inherit (lib.strings) concatStrings; + + cfg = config.modules.desktop.browsers.chrome; +in { + options.modules.desktop.browsers.chrome = let + inherit (lib.options) mkEnableOption; + inherit (lib.types) attrsOf oneOf bool int lines str; + inherit (lib.my) mkOpt mkOpt'; + in { + enable = mkEnableOption "Enable Chrome"; + }; + + config = mkIf cfg.enable { + environment.systemPackages = [ + pkgs.ungoogled-chromium + ]; + + programs.chromium = { + enable = true; + package = pkgs.ungoogled-chromium; + extensions = + let + createChromiumExtensionFor = browserVersion: { id, sha256, version }: + { + inherit id; + crxPath = builtins.fetchurl { + url = "https://clients2.google.com/service/update2/crx?response=redirect&acceptformat=crx2,crx3&prodversion=${browserVersion}&x=id%3D${id}%26installsource%3Dondemand%26uc"; + name = "${id}.crx"; + inherit sha256; + }; + inherit version; + }; + createChromiumExtension = createChromiumExtensionFor (lib.versions.major package.version); + in + [ + (createChromiumExtension { + # ublock origin + id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; + sha256 = "sha256-u81DNkZw/LBVyjk5nmrrJEVjdc+GFCay+rQZGpDH3jA="; + version = "1.62.0"; + }) + (createChromiumExtension { + # dark reader + id = "eimadpbcbfnmbkopoojfekhnkhdbieeh"; + sha256 = "sha256-JcM2Ki3cTWdskFEFs2jk6LQUTFOojkBf+6HqO1GPK90="; + version = "4.9.34"; + }) + ]; + }; + }; +}