about summary refs log tree commit diff
path: root/third_party/nix/src/proto
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/nix/src/proto')
-rw-r--r--third_party/nix/src/proto/worker.proto88
1 files changed, 88 insertions, 0 deletions
diff --git a/third_party/nix/src/proto/worker.proto b/third_party/nix/src/proto/worker.proto
new file mode 100644
index 000000000000..8db1a9e808d2
--- /dev/null
+++ b/third_party/nix/src/proto/worker.proto
@@ -0,0 +1,88 @@
+syntax = "proto3";
+
+package nix.proto;
+
+// Service representing a worker used for building and interfacing
+// with the Nix store.
+service Worker {
+  // Validates whether the supplied path is a valid store path.
+  rpc IsValidPath (IsValidPathRequest) returns (IsValidPathResponse);
+
+  // Checks whether any substitutes exist for the given path.
+  rpc HasSubstitutes (HasSubstitutesRequest) returns (HasSubstitutesResponse);
+
+  // Query referrers for a given path.
+  rpc QueryReferrers (QueryReferrersRequest) returns (QueryReferrersResponse);
+
+  // Add a NAR (I think?) to the store. The first stream request
+  // should be a message indicating metadata, the rest should be file
+  // chunks.
+  rpc AddToStore (stream AddToStoreRequest) returns (AddToStoreResponse);
+
+  // Adds the supplied string to the store, as a text file.
+  rpc AddTextToStore (AddTextToStoreRequest) returns (AddTextToStoreResponse);
+}
+
+enum HashType {
+  MD5 = 0; // TODO(tazjin): still needed?
+  SHA1 = 1;
+  SHA256 = 2;
+  SHA512 = 3;
+}
+
+message IsValidPathRequest {
+  string path = 1;
+}
+
+message IsValidPathResponse {
+  bool is_valid = 1;
+}
+
+message HasSubstitutesRequest {
+  string path = 1;
+}
+
+message HasSubstitutesResponse {
+  bool has_substitutes = 1;
+}
+
+message QueryReferrersRequest {
+  string path = 1;
+}
+
+message QueryReferrersResponse {
+  repeated string paths = 1;
+}
+
+message AddToStoreRequest {
+  message Metadata {
+    bool fixed = 1;
+    bool recursive = 2; // TODO(tazjin): what is this? "obsolete" comment?
+    HashType hash_type = 3;
+    string base_name = 4;
+  }
+
+  message Chunk {
+    bytes content = 1;
+    bool final = 2;
+  }
+
+  oneof add_oneof {
+    Metadata meta = 1;
+    Chunk chunk = 2;
+  }
+}
+
+message AddToStoreResponse {
+  string path = 1;
+}
+
+message AddTextToStoreRequest {
+  string name = 1;
+  string content = 2;
+  repeated string references = 3;
+}
+
+message AddTextToStoreResponse {
+  string path = 1;
+}