{ lib , stdenv , fetchFromGitHub , rustPlatform , darwin , libiconv , makeBinaryWrapper , pkg-config }: rustPlatform.buildRustPackage rec { pname = "proto"; version = "0.38.3"; src = fetchFromGitHub { owner = "moonrepo"; repo = "proto"; rev = "v${version}"; hash = "sha256-o/du9XmiS7U5ypm6osQtVTjrJY60iLCkJ4DWCYOeIoY="; }; cargoHash = "sha256-Z0XPouvv6eR9eKLQurI/UGSiRZyGUo/x1c/XbcJlO5A="; buildInputs = lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.SystemConfiguration libiconv ]; nativeBuildInputs = [ makeBinaryWrapper pkg-config ]; # Tests requires network access doCheck = false; cargoBuildFlags = [ "--bin proto" "--bin proto-shim" ]; postInstall = '' # proto looks up a proto-shim executable file in $PROTO_LOOKUP_DIR wrapProgram $out/bin/proto \ --set PROTO_LOOKUP_DIR $out/bin ''; meta = { description = "Pluggable multi-language version manager"; longDescription = '' proto is a pluggable next-generation version manager for multiple programming languages. A unified toolchain. ''; homepage = "https://moonrepo.dev/proto"; changelog = "https://github.com/moonrepo/proto/releases/tag/v${version}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ nokazn ]; mainProgram = "proto"; platforms = lib.platforms.linux ++ lib.platforms.darwin; }; }