syntax = "proto3"; package elpe; message AddPathRequest { message File { string name = 1; int64 length = 2; int32 permissions = 3; } message FileContents { int64 start = 1; bytes content = 2; } message Directory { string name = 1; int32 permissions = 3; } oneof request { File file = 1; Directory directory = 2; FileContents contents = 3; } } message DerivationRequest { string name = 1; string builder = 2; repeated string paths = 3; string target = 4; optional string output_hash = 5; } message PathPattern { string pattern = 1; repeated string matches = 2; } message DerivationResult { repeated string destdir = 1; repeated string paths = 2; repeated PathPattern path_patterns = 3; } message DerivationReply { oneof result { DerivationResult ok = 1; string error = 2; } } enum Arch { amd64 = 0; aarch64 = 1; } message UbuntuReleaseRequest { string release = 1; Arch arch = 2; string repository = 3; } message UbuntuPackageRequest { repeated string index = 1; string name = 2; repeated string path_patterns = 3; } service Elpe { rpc Derivation (DerivationRequest) returns (DerivationReply); rpc AddPath (stream AddPathRequest) returns (DerivationReply); rpc UbuntuRelease (UbuntuReleaseRequest) returns (DerivationReply); rpc UbuntuPackage (UbuntuPackageRequest) returns (DerivationReply); }