{ config, pkgs, ... }:

let
  version = "1.10.1b";

  zenbrowser = pkgs.appimageTools.wrapType2 {
    name = "zen";
    src = pkgs.fetchurl {
      url = "https://github.com/zen-browser/desktop/releases/download/${version}/zen-x86_64.AppImage";
      hash = "sha256-1NoDIdzeADVLOhtesR0QZefhAdRBSNWg4++MjqdkfIs=";
    };
    extraInstallCommands = ''
      mkdir -p $out/share/applications
      cat > $out/share/applications/zenbrowser.desktop <<EOF
      [Desktop Entry]
      Type=Application
      Name=Zen Browser
      Icon=${icon}
      Exec=zen %F
      Comment=Internet Browser
      EOF
    '';
  };

  # Fetch and convert the icon
  icon =
    pkgs.runCommand "zenbrowser-icon"
      {
        nativeBuildInputs = [ pkgs.imagemagick ];
        src = pkgs.fetchurl {
          url = "https://raw.githubusercontent.com/zen-browser/desktop/163cc6b6bdfbf81673a0b5ea55ee7bf2eba46a42/configs/branding/release/logo.png";
          sha256 = "9e27e02a924c73c0101757aa6f726ec6a91f7e908bcc900e9a4dab2c8cd3e61a";
        };
      }
      ''
        mkdir -p $out/share/icons/hicolor/512x512/apps
        magick convert $src $out/share/icons/hicolor/512x512/apps/zen-browser.png
      '';

in
{
  environment.systemPackages = with pkgs; [
    zenbrowser
  ];
}