{ lib, stdenv, fetchurl, unzip, erlangVersion ? "28", }: let versions = { "28" = { eqcVersion = "1.48.3"; hash = "sha256-qWV8lsBGwCcrdgJdgpL2Blj3BU92NTfIFy3AkmkcR8o="; }; "27" = { eqcVersion = "1.48.3"; hash = "sha256-Y/JgElZkRtIP139/f+fmTESerMlFK3g++8lyNDLuBM8="; }; "26" = { eqcVersion = "1.48.1"; hash = "sha256-Acnm74iEEpdwYDJzFo0cBZd4DH9y9jXFtgKmodUHzBM="; }; "25" = { eqcVersion = "1.46.2"; hash = "sha256-oGclmRf15XpdO6J9CVIiC4rF9mq84r1C7nbvve4Qgrw="; }; "24" = { eqcVersion = "1.46.1"; hash = "sha256-crofH7OZ35Xs2JT9uONBO2YmCjTNaELkJ+dGfiGSM9c="; }; "23" = { eqcVersion = "1.45.1"; hash = "sha256-ifObOCNvQQniQFG9jf8FkMNYT2NhH6K12AX/D14rttY="; }; "22" = { eqcVersion = "1.45.1"; hash = "sha256-iIxI+UavRpbXWRcI6u50SX6PGzL5ZZ918rhLKyJFHqg="; }; "21" = { eqcVersion = "1.45.1"; hash = "sha256-k57376cDfStG72Jue6sDP830lTiIkCuPsSjf2kQ4="; }; "20" = { eqcVersion = "1.45.1"; hash = "sha256-Bi5nccILoJidDCHb7TK+Ha+YV2FRYZFiNVJ3WZFMCr0="; }; }; cfg = versions.${erlangVersion} or (throw "Unsupported Erlang/OTP version: ${erlangVersion}. Supported: ${builtins.concatStringsSep ", " (builtins.attrNames versions)}"); in stdenv.mkDerivation { name = "eqc"; version = cfg.eqcVersion; src = fetchurl { url = "https://www.quviq.com/downloads/eqcR${erlangVersion}.zip"; sha256 = cfg.hash; }; nativeBuildInputs = [ unzip ]; unpackPhase = '' unzip $src -d eqc ''; installPhase = '' mkdir -p $out/lib mv eqc/Quviq\ QuickCheck\ version\ */eqc-* $out/lib/ mv eqc/Quviq\ QuickCheck\ version\ */pulse-* $out/lib/ mv eqc/Quviq\ QuickCheck\ version\ */pulse_otp-* $out/lib/ ''; passthru = { erlangVersion = erlangVersion; eqcVersion = cfg.eqcVersion; }; }