diff --git a/pkgs/by-name/ma/maelstrom-clj/package.nix b/pkgs/by-name/ma/maelstrom-clj/package.nix new file mode 100644 index 000000000000..3f6a700e0bdc --- /dev/null +++ b/pkgs/by-name/ma/maelstrom-clj/package.nix @@ -0,0 +1,57 @@ +{ 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; + }; +}