nixpkgs/pkgs/by-name/ma/maelstrom-clj/package.nix
2024-07-13 14:15:45 +02:00

58 lines
1.4 KiB
Nix

{ stdenv
, lib
, fetchurl
, makeWrapper
, git
, coreutils
, jdk
, gnuplot
, graphviz
}:
stdenv.mkDerivation rec {
pname = "maelstrom";
version = "0.2.3";
src = fetchurl {
url = "https://github.com/jepsen-io/maelstrom/releases/download/v${version}/maelstrom.tar.bz2";
hash = "sha256-ISS2qma139Jz9eDxLJvULkqDZeu1vyx9ot4uO0LIVho=";
};
installPhase = ''
runHook preInstall
mkdir $out
cp -R lib $out/lib
# see https://github.com/jepsen-io/maelstrom/blob/b91beef83ee40add17dfe0baf2df272869e144cf/pkg/maelstrom
makeWrapper ${jdk}/bin/java $out/bin/maelstrom \
--add-flags -Djava.awt.headless=true \
--add-flags "-jar $out/lib/maelstrom.jar" \
--set PATH ${lib.makeBinPath runtimeDependencies}
runHook postInstall
'';
nativeBuildInputs = [
makeWrapper
];
runtimeDependencies = [
git
coreutils
jdk
gnuplot
graphviz
];
meta = with lib; {
description = "Workbench for writing toy implementations of distributed systems";
homepage = "https://github.com/jepsen-io/maelstrom";
changelog = "https://github.com/jepsen-io/maelstrom/releases/tag/${version}";
mainProgram = "maelstrom";
sourceProvenance = [ sourceTypes.binaryBytecode ];
license = licenses.epl10;
maintainers = [ maintainers.emilioziniades ];
platforms = platforms.linux ++ platforms.darwin;
};
}