{ lib, config, pkgs, ... }: let cfg = config.suites.desktop; in { config = lib.mkIf cfg.enable { programs.chromium = lib.mkIf cfg.chromium.enable { enable = true; package = pkgs.ungoogled-chromium.override { enableWideVine = cfg.chromium.enableWideVine; }; commandLineArgs = [ "--extension-mime-request-handling=always-prompt-for-install" # Enable Extension-Install Dialogue "--enable-features=NoReferrers,SpoofWebGLInfo" # Feature Flags "--no-default-browser-check" ]; 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 pkgs.ungoogled-chromium.version); in (lib.lists.optionals (cfg.chromium.disableChromiumWebStore == false) [{ # Chromium Web Store id = "ocaahdebbfolfmndjeplogmgcagdmblk"; crxPath = builtins.fetchurl { url = "https://github.com/NeverDecaf/chromium-web-store/releases/download/v1.5.5.2/Chromium.Web.Store.crx"; name = "ocaahdebbfolfmndjeplogmgcagdmblk.crx"; sha256 = "sha256-0g4AKed9vPf0TPI6OawpjiusvyBJEab5XYNHmg9BpfE="; }; version = "1.5.5.2"; }]) ++ (lib.lists.optionals (cfg.chromium.disableuBlockOrigin == false) [(createChromiumExtension { # uBlock Origin id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; sha256 = "sha256-7Q4HPf4cIdi63SudWwzLVy9n3uba2H6cmzhSzxdBXjA="; version = "1.67.0"; })]) ++ (lib.lists.optionals (cfg.chromium.disableIDontCareAboutCookies == false) [(createChromiumExtension { # I still don't care about cookies id = "edibdbjcniadpccecjdfdjjppcpchdlm"; sha256 = "sha256:11k7cxcjafs8ziaxl4bilbfwbgl2yf1p6v1bvwszadcr14xyvgsj"; version = "1.1.8"; })]) ++ (lib.lists.optionals (cfg.chromium.disableKeepassxcBrowser == false) [(createChromiumExtension { # KeePassXC-Browser id = "oboonakemofpalcgghocfoadofidjkkk"; sha256 = "sha256-Xrpca6iyVN4okVLCQmrtn73dZYDP28S5LBMUX1Qz/nI="; version = "1.9.11"; })]) ++ (lib.lists.optionals (cfg.chromium.disableLanguageTool == false) [(createChromiumExtension { # LanguageTool id = "oldceeleldhonbafppcapldpdifcinji"; sha256 = "sha256-UEIQ9nOg7f31nRPQB7Jxbl7PlWx7d9ixAfHXXmKPT5A="; version = "10.0.1"; })]) ++ (lib.lists.optionals (cfg.chromium.disableDarkReader == false) [(createChromiumExtension { # dark reader id = "eimadpbcbfnmbkopoojfekhnkhdbieeh"; sha256 = "sha256-8/tzlj4xc1h/+Zeek4r9l0I4/Kw3EJgLaqTTxZbRGcU="; version = "4.9.115"; })]); }; }; }