quint: init at 0.25.1 (#414584)

This commit is contained in:
Peder Bergebakken Sundt 2025-06-10 15:07:45 +02:00 committed by GitHub
commit 90fc73e748
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 125 additions and 0 deletions

View File

@ -3813,6 +3813,12 @@
githubId = 2379774;
name = "Sean Buckley";
};
bugarela = {
email = "gabrielamoreira05@gmail.com";
github = "bugarela";
githubId = 18356186;
name = "Gabriela Moreira";
};
bugworm = {
email = "bugworm@zoho.com";
github = "bugworm";

View File

@ -0,0 +1,119 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
nodejs,
nodejs_20,
makeWrapper,
jre,
fetchzip,
buildNpmPackage,
}:
let
version = "0.25.1";
apalacheVersion = "0.47.2";
evaluatorVersion = "0.2.0";
metaCommon = {
description = "Formal specification language with TLA+ semantics";
homepage = "https://quint-lang.org";
license = lib.licenses.asl20;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ bugarela ];
};
src = fetchFromGitHub {
owner = "informalsystems";
repo = "quint";
tag = "v${version}";
hash = "sha256-CYQesIoDlIGCKXIJ/hpZqOZBVd19Or5VEKVERchJz68=";
};
# Build the Quint CLI from source
quint-cli = buildNpmPackage {
pname = "quint-cli";
inherit version src;
nativeBuildInputs = [ nodejs_20 ];
sourceRoot = "${src.name}/quint";
npmDepsHash = "sha256-FYNSr5B0/oJ4PbU/HUVqSdPG8kFvq4vRFnYwwdMf+jQ=";
npmBuildScript = "compile";
dontNpmPrune = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/quint
cp -r node_modules $out/share/quint
cp -r dist $out/share/quint
runHook postInstall
'';
meta = metaCommon // {
description = "CLI for the Quint formal specification language";
};
};
# Build the Rust evaluator from source
quint-evaluator = rustPlatform.buildRustPackage {
pname = "quint-evaluator";
version = evaluatorVersion;
inherit src;
sourceRoot = "${src.name}/evaluator";
# Skip tests during build, as many rust tests rely on the Quint CLI
doCheck = false;
cargoHash = "sha256-beWqUDaWWCbGL+V1LNtf35wZrIqWCCbFLYo5HCZF7FI=";
meta = metaCommon // {
description = "Evaluator for the Quint formal specification language";
};
};
# Download Apalache. It runs on the JVM, so no need to build it from source.
apalacheDist = fetchzip {
url = "https://github.com/apalache-mc/apalache/releases/download/v${apalacheVersion}/apalache.tgz";
hash = "sha256-P0QOxB14OSlphqBALR1YL9WJ0XYaUYE/R52yZytVzds=";
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "quint";
inherit version src;
nativeBuildInputs = [ makeWrapper ];
dontBuild = true;
dontConfigure = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin
makeWrapper ${nodejs}/bin/node $out/bin/quint \
--add-flags "${quint-cli}/share/quint/dist/src/cli.js" \
--set QUINT_HOME "$out/share/quint" \
--prefix PATH : ${lib.makeBinPath [ jre ]}
install -Dm755 ${quint-evaluator}/bin/quint_evaluator -t $out/share/quint/rust-evaluator-v${evaluatorVersion}/
mkdir -p $out/share/quint/apalache-dist-${apalacheVersion}
cp -r ${apalacheDist} $out/share/quint/apalache-dist-${apalacheVersion}/apalache
chmod +x $out/share/quint/apalache-dist-${apalacheVersion}/apalache/bin/apalache-mc
runHook postInstall
'';
meta = metaCommon // {
mainProgram = "quint";
};
})