{ pkgs, lib, ... }:
let
  getExtension = { id, url, sha256, version, updateUrl }: {
    inherit id;
    crxPath = builtins.fetchurl {
      url = "${url}";
      name = "${id}.crx";
      inherit sha256;
    };
    inherit version;
    inherit updateUrl;
  };
  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;
      };
      #updateUrl = "http://clients2.google.com/service/update2/crx?response=updatecheck&x=id%3D${id}%26uc";
      updateUrl = "https://clients2.google.com/service/update2/crx";
      inherit version;
    };
  createChromiumExtension =
    createChromiumExtensionFor (lib.versions.major pkgs.vivaldi.version);
in {
  programs.chromium = {
    enable = true;
    package = pkgs.vivaldi;
    extensions = [
      { id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; }
      { id = "clngdbkpkpeebahjckkjfobafhncgmne"; }
      { id = "adicoenigffoolephelklheejpcpoolk"; }
    ];
  };
}