{ branch ? "stable", callPackage, fetchurl, lib, stdenv }: let versions = if stdenv.isLinux then { stable = "0.0.49"; ptb = "0.0.78"; canary = "0.0.346"; development = "0.0.17"; } else { stable = "0.0.300"; ptb = "0.0.107"; canary = "0.0.468"; development = "0.0.39"; }; version = versions.${branch}; srcs = rec { x86_64-linux = { stable = fetchurl { url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz"; hash = "sha256-rVSYAkTZTlurnbUeYJFCgsPcsCqjJ1bJneQQiyhmvwQ="; }; ptb = fetchurl { url = "https://dl-ptb.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz"; hash = "sha256-Fp94BsR6Fzy4tV+c5ToP9GKg6GC/TryGvHWLupew4Z8="; }; canary = fetchurl { url = "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz"; hash = "sha256-/FBVo3ptZk2YQPoq+VpyxMlSWYlVb8ChpKW5YH/BM7U="; }; development = fetchurl { url = "https://dl-development.discordapp.net/apps/linux/${version}/discord-development-${version}.tar.gz"; hash = "sha256-AmbaMVi/or+9QLuQO5u5btgKeKdrfo7bzZgGLILwgqo="; }; }; x86_64-darwin = { stable = fetchurl { url = "https://dl.discordapp.net/apps/osx/${version}/Discord.dmg"; hash = "sha256-f9YIlzRESzzxtD9/us1DY5acu2HYo+UrwS7GWk9RwCk="; }; ptb = fetchurl { url = "https://dl-ptb.discordapp.net/apps/osx/${version}/DiscordPTB.dmg"; hash = "sha256-etxXrO9Ksacbdes3DT1Tm4kKD/t40jGUeSAegdexRqc="; }; canary = fetchurl { url = "https://dl-canary.discordapp.net/apps/osx/${version}/DiscordCanary.dmg"; hash = "sha256-UOoXDwAa5pFukqTCmUfM89QVK5jB13id8ek/gwWajMM="; }; development = fetchurl { url = "https://dl-development.discordapp.net/apps/osx/${version}/DiscordDevelopment.dmg"; hash = "sha256-nZV9LK3eGpXK/2wQKJBn3K2Ud6uBk8aammkeE00rWx0="; }; }; aarch64-darwin = x86_64-darwin; }; src = srcs.${stdenv.hostPlatform.system}.${branch} or (throw "${stdenv.hostPlatform.system} not supported on ${branch}"); meta = with lib; { description = "All-in-one cross-platform voice and text chat for gamers"; homepage = "https://discordapp.com/"; downloadPage = "https://discordapp.com/download"; sourceProvenance = with sourceTypes; [ binaryNativeCode ]; license = licenses.unfree; maintainers = with maintainers; [ MP2E Scrumplex artturin infinidoge jopejoe1 ]; platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ]; mainProgram = "discord"; }; package = if stdenv.isLinux then ./linux.nix else ./darwin.nix; openasar = callPackage ./openasar.nix { }; packages = ( builtins.mapAttrs (_: value: callPackage package (value // { inherit src version openasar branch; meta = meta // { mainProgram = value.binaryName; }; })) { stable = rec { pname = "discord"; binaryName = "Discord"; desktopName = "Discord"; }; ptb = rec { pname = "discord-ptb"; binaryName = if stdenv.isLinux then "DiscordPTB" else desktopName; desktopName = "Discord PTB"; }; canary = rec { pname = "discord-canary"; binaryName = if stdenv.isLinux then "DiscordCanary" else desktopName; desktopName = "Discord Canary"; }; development = rec { pname = "discord-development"; binaryName = if stdenv.isLinux then "DiscordDevelopment" else desktopName; desktopName = "Discord Development"; }; } ); in packages.${branch}