Requests & Responses

All Nix daemon protocol operations, organized by op code. Each operation module defines a *Request (subclass of WireRequest) and a *Response (subclass of WireResponse).

The standard operations below live in nix_daemon_protocol. Operations in the pynixd.daemon_extensions namespace are private pynixd additions beyond the standard Nix daemon protocol. Forwarding and extension fallback are pynixd daemon-dispatch policy, not codec behavior.


Standard Operations

Op 1 — IsValidPath

IsValidPath operation — WireRequest/WireResponse types.

class nix_daemon_protocol.is_valid_path.IsValidPathResponse(*, logs=<factory>, valid)[source]

IsValidPath response — valid bool as uint64 on wire.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • valid (bool)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.is_valid_path.IsValidPathRequest(*, path)[source]

IsValidPath request — single StorePath on wire.

Parameters:

path (StorePath)

response_type

alias of IsValidPathResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 6 — QueryReferrers

QueryReferrers operation — WireRequest/WireResponse types.

class nix_daemon_protocol.query_referrers.QueryReferrersResponse(*, logs=<factory>, paths=<factory>)[source]

QueryReferrers response — set of referrer StorePaths.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • paths (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.query_referrers.QueryReferrersRequest(*, path)[source]

QueryReferrers request — single StorePath on wire.

Parameters:

path (StorePath)

response_type

alias of QueryReferrersResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 7 — AddToStore (streaming request)

AddToStore operation — WireRequest/WireResponse types.

The request has a structured header followed by framed NAR data. Only the header fields are modeled here — the NAR streaming is handled by the transport layer, not the model.

class nix_daemon_protocol.add_to_store.AddToStoreResponse(*, logs=<factory>, info)[source]

AddToStore response — ValidPathInfo on success, stderr error on failure.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • info (ValidPathInfo)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.add_to_store.AddToStoreRequest(*, path_name, cam, references, repair)[source]

AddToStore request header — NAR data follows but is not part of the model.

Parameters:
response_type

alias of AddToStoreResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 9 — BuildPaths

forward = False

BuildPaths operation — WireRequest/WireResponse types.

class nix_daemon_protocol.build_paths.BuildPathsResponse(*, logs=<factory>, value)[source]

BuildPaths response — single uint64 value.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • value (int)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.build_paths.BuildPathsRequest(*, derived_paths=<factory>, build_mode)[source]

BuildPaths request — the derived paths in order, and the build mode.

A list, and not a set. DerivedPaths of Nix is a std::vector<DerivedPath>, and Store::buildPaths keeps the order of it. BuildPathsWithResults then answers one result for each request, in the same order, and a client reads the answers by position. A set also drops a repeated path, and Nix answers one result for each one. Issue nixidae/nixidae#219.

Parameters:
  • derived_paths (Annotated[list[DerivedPath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • build_mode (int)

response_type

alias of BuildPathsResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 10 — EnsurePath

EnsurePath operation — WireRequest/WireResponse types.

class nix_daemon_protocol.ensure_path.EnsurePathResponse(*, logs=<factory>, value)[source]

EnsurePath response — single uint64 value.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • value (int)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.ensure_path.EnsurePathRequest(*, path)[source]

EnsurePath request — single StorePath on wire.

Parameters:

path (StorePath)

response_type

alias of EnsurePathResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 11 — AddTempRoot

AddTempRoot operation — WireRequest/WireResponse types.

class nix_daemon_protocol.add_temp_root.AddTempRootResponse(*, logs=<factory>, value)[source]

AddTempRoot response — single uint64 value (always 1 on success).

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • value (int)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.add_temp_root.AddTempRootRequest(*, path)[source]

AddTempRoot request — single StorePath on wire.

Parameters:

path (StorePath)

response_type

alias of AddTempRootResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 12 — AddIndirectRoot

AddIndirectRoot operation — WireRequest/WireResponse types.

class nix_daemon_protocol.add_indirect_root.AddIndirectRootResponse(*, logs=<factory>, value)[source]

AddIndirectRoot response — single uint64 value.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • value (int)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.add_indirect_root.AddIndirectRootRequest(*, path)[source]

AddIndirectRoot request — one file system path on the wire.

Not a `StorePath`. An indirect root is the symlink that nix build leaves behind, and it lives outside the store: /tmp/nix-build-<pid>-<n>/result. Nix takes it as a plain path -- IndirectRootStore::addIndirectRoot(const std::filesystem::path &), src/libstore/include/nix/store/indirect-root-store.hh:73 -- and LocalStore::addIndirectRoot at src/libstore/gc.cc:47 is what reads it.

It was declared StorePath and nothing complained, because that class was a str subclass that validated nothing. The class now refuses an absolute path of another store, which is what found this.

Parameters:

path (str)

response_type

alias of AddIndirectRootResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 14 — FindRoots

FindRoots operation — WireRequest/WireResponse types.

class nix_daemon_protocol.find_roots.FindRootsEntry(*, link, target)[source]

A single root entry — link → target mapping.

Parameters:
  • link (str)

  • target (str)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.find_roots.FindRootsResponse(*, logs=<factory>, roots=<factory>)[source]

FindRoots response — list of link/target entries.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • roots (Annotated[list[FindRootsEntry], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.find_roots.FindRootsRequest[source]

FindRoots request — no body fields, just op code.

response_type

alias of FindRootsResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 19 — SetOptions

SetOptions operation — WireRequest/WireResponse types.

class nix_daemon_protocol.set_options.SetOptionsResponse(*, logs=<factory>)[source]

SetOptions response — no body fields, just stderr/WireLogs.

Parameters:

logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.set_options.SetOptionsRequest(*, keep_failed, keep_going, try_fallback, verbosity, max_build_jobs, max_silent_time, obsolete_use_build_hook, build_verbosity, obsolete_log_type, obsolete_print_build_trace, build_cores, use_substitutes, overrides=<factory>)[source]

SetOptions request — 12 uint64 fields + version-gated overrides dict.

Parameters:
  • keep_failed (int)

  • keep_going (int)

  • try_fallback (int)

  • verbosity (Verbosity)

  • max_build_jobs (int)

  • max_silent_time (TimeSpan)

  • obsolete_use_build_hook (int)

  • build_verbosity (Verbosity)

  • obsolete_log_type (int)

  • obsolete_print_build_trace (int)

  • build_cores (int)

  • use_substitutes (int)

  • overrides (Annotated[dict[str, str], VersionMeta(min_version=268, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

response_type

alias of SetOptionsResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 20 — CollectGarbage

CollectGarbage operation — WireRequest/WireResponse types.

class nix_daemon_protocol.collect_garbage.CollectGarbageResponse(*, logs=<factory>, paths_deleted=<factory>, bytes_freed, obsolete)[source]

CollectGarbage response — paths deleted + bytes freed.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • paths_deleted (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • bytes_freed (int)

  • obsolete (int)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.collect_garbage.CollectGarbageRequest(*, action, paths_to_delete=<factory>, ignore_liveness, max_freed, obsolete1, obsolete2, obsolete3)[source]

CollectGarbage request — action, paths, and GC options.

Parameters:
  • action (GCAction)

  • paths_to_delete (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • ignore_liveness (int)

  • max_freed (int)

  • obsolete1 (int)

  • obsolete2 (int)

  • obsolete3 (int)

response_type

alias of CollectGarbageResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 23 — QueryAllValidPaths

QueryAllValidPaths operation — WireRequest/WireResponse types.

class nix_daemon_protocol.query_all_valid_paths.QueryAllValidPathsResponse(*, logs=<factory>, paths=<factory>)[source]

QueryAllValidPaths response — set of all valid StorePaths.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • paths (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.query_all_valid_paths.QueryAllValidPathsRequest[source]

QueryAllValidPaths request — no body fields, just op code.

response_type

alias of QueryAllValidPathsResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 26 — QueryPathInfo

QueryPathInfo operation — WireRequest/WireResponse types.

class nix_daemon_protocol.query_path_info.QueryPathInfoResponse(*, logs=<factory>, valid, info=None)[source]

QueryPathInfo response — info depends on valid flag.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • valid (bool)

  • info (Annotated[UnkeyedValidPathInfo | None, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=~nix_daemon_protocol.query_path_info.QueryPathInfoResponse.<lambda>, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.query_path_info.QueryPathInfoRequest(*, path)[source]

QueryPathInfo request — single StorePath on wire.

Parameters:

path (StorePath)

response_type

alias of QueryPathInfoResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 29 — QueryPathFromHashPart

QueryPathFromHashPart operation — WireRequest/WireResponse types.

class nix_daemon_protocol.query_path_from_hash_part.QueryPathFromHashPartResponse(*, logs=<factory>, value)[source]

QueryPathFromHashPart response — resolved StorePath.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • value (StorePath)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.query_path_from_hash_part.QueryPathFromHashPartRequest(*, path)[source]

QueryPathFromHashPart request — hash prefix string (NOT a StorePath).

Parameters:

path (str)

response_type

alias of QueryPathFromHashPartResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 31 — QueryValidPaths

QueryValidPaths operation — WireRequest/WireResponse types.

class nix_daemon_protocol.query_valid_paths.QueryValidPathsResponse(*, logs=<factory>, paths=<factory>)[source]

QueryValidPaths response — set of valid StorePaths.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • paths (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.query_valid_paths.QueryValidPathsRequest(*, paths=<factory>, substitute=None)[source]

QueryValidPaths request — set of paths + version-gated substitute flag.

Parameters:
  • paths (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • substitute (Annotated[int | None, VersionMeta(min_version=283, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

response_type

alias of QueryValidPathsResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 32 — QuerySubstitutablePaths

QuerySubstitutablePaths operation — WireRequest/WireResponse types.

class nix_daemon_protocol.query_substitutable_paths.QuerySubstitutablePathsResponse(*, logs=<factory>, paths=<factory>)[source]

QuerySubstitutablePaths response — set of substitutable StorePaths.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • paths (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.query_substitutable_paths.QuerySubstitutablePathsRequest(*, paths=<factory>)[source]

QuerySubstitutablePaths request — set of StorePaths to check.

Parameters:

paths (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

response_type

alias of QuerySubstitutablePathsResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 33 — QueryValidDerivers

QueryValidDerivers operation — WireRequest/WireResponse types.

class nix_daemon_protocol.query_valid_derivers.QueryValidDeriversResponse(*, logs=<factory>, paths=<factory>)[source]

QueryValidDerivers response — set of deriver StorePaths.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • paths (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.query_valid_derivers.QueryValidDeriversRequest(*, path)[source]

QueryValidDerivers request — single StorePath to look up derivers for.

Parameters:

path (StorePath)

response_type

alias of QueryValidDeriversResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 34 — OptimiseStore

OptimiseStore operation — WireRequest/WireResponse types.

class nix_daemon_protocol.optimise_store.OptimiseStoreResponse(*, logs=<factory>, value)[source]

OptimiseStore response — single uint64 value.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • value (int)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.optimise_store.OptimiseStoreRequest[source]

OptimiseStore request — no body fields, just op code.

response_type

alias of OptimiseStoreResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 35 — VerifyStore

VerifyStore operation — WireRequest/WireResponse types.

class nix_daemon_protocol.verify_store.VerifyStoreResponse(*, logs=<factory>, value)[source]

VerifyStore response — single uint64 value.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • value (int)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.verify_store.VerifyStoreRequest(*, check_contents, repair)[source]

VerifyStore request — check_contents and repair flags.

Parameters:
  • check_contents (int)

  • repair (int)

response_type

alias of VerifyStoreResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 36 — BuildDerivation

forward = False

BuildDerivation operation — WireRequest/WireResponse types.

class nix_daemon_protocol.build_derivation.BuildDerivationResponse(*, logs=<factory>, result)[source]

BuildDerivation response — a BuildResult wrapped in the response body.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • result (BuildResult)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.build_derivation.BuildDerivationRequest(*, drv_path, derivation, build_mode)[source]

BuildDerivation request — wire format after the op code.

Wire fields (in order):

drv_path: length-prefixed StorePath string derivation: BasicDerivation struct build_mode: uint64 (BuildMode int)

Parameters:
response_type

alias of BuildDerivationResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 37 — AddSignatures

AddSignatures operation — WireRequest/WireResponse types.

class nix_daemon_protocol.add_signatures.AddSignaturesResponse(*, logs=<factory>, value)[source]

AddSignatures response — single uint64 value.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • value (int)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.add_signatures.AddSignaturesRequest(*, path, sigs=<factory>)[source]

AddSignatures request — StorePath + set of Signatures.

Parameters:
  • path (StorePath)

  • sigs (Annotated[set[Signature], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

response_type

alias of AddSignaturesResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 38 — NarFromPath (streaming response)

NarFromPath operation — WireRequest type (streaming response, not modelable).

class nix_daemon_protocol.nar_from_path.NarFromPathResponse(*, logs=<factory>)[source]

NarFromPath response — empty (raw NAR bytes are streamed separately).

Parameters:

logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.nar_from_path.NarFromPathRequest(*, path)[source]

NarFromPath request — single StorePath. Response is raw NAR bytes.

Parameters:

path (StorePath)

response_type

alias of NarFromPathResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 39 — AddToStoreNar (streaming request)

AddToStoreNar operation — WireRequest/WireResponse types.

The request has a structured header followed by framed NAR data. Only the header fields are modeled here — NAR streaming is handled by the transport layer, not the model.

class nix_daemon_protocol.add_to_store_nar.AddToStoreNarResponse(*, logs=<factory>)[source]

AddToStoreNar response — empty body, just stderr/WireLogs.

Parameters:

logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.add_to_store_nar.AddToStoreNarRequest(*, info, repair, dont_check_sigs)[source]

AddToStoreNar request header — NAR data follows but is not part of the model.

Parameters:
response_type

alias of AddToStoreNarResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 40 — QueryMissing

QueryMissing operation — WireRequest/WireResponse types.

class nix_daemon_protocol.query_missing.QueryMissingResponse(*, logs=<factory>, will_build=<factory>, will_substitute=<factory>, unknown=<factory>, download_size, nar_size)[source]

QueryMissing response — build/substitute/unknown classification.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • will_build (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • will_substitute (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • unknown (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • download_size (int)

  • nar_size (int)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.query_missing.QueryMissingRequest(*, derived_paths=<factory>)[source]

QueryMissing request — set of DerivedPaths to classify.

Parameters:

derived_paths (Annotated[set[DerivedPath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

response_type

alias of QueryMissingResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 41 — QueryDerivationOutputMap

QueryDerivationOutputMap operation — WireRequest/WireResponse types.

class nix_daemon_protocol.query_derivation_output_map.QueryDerivationOutputMapResponse(*, logs=<factory>, items=<factory>)[source]

QueryDerivationOutputMap response — output name → StorePath mapping.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • items (Annotated[dict[str, StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.query_derivation_output_map.QueryDerivationOutputMapRequest(*, path)[source]

QueryDerivationOutputMap request — single derivation StorePath.

Parameters:

path (StorePath)

response_type

alias of QueryDerivationOutputMapResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 42 — RegisterDrvOutput

RegisterDrvOutput operation — WireRequest/WireResponse types.

A keyed realisation is a `DrvOutput` and then an `UnkeyedRealisation`. WorkerProto::Serialise<Realisation> at worker-protocol.cc:571 of the master branch writes the two in that order, and both halves raise when realisation-with-path-not-hash is off. Nix 2.34 writes the whole thing as one JSON string.

This is the operation that the report on issue #14 saw raise: the backend named the feature, pynixd named nothing back, and the codec of the backend then refused the request that needed it.

class nix_daemon_protocol.register_drv_output.RegisterDrvOutputResponse(*, logs=<factory>)[source]

RegisterDrvOutput response — empty body, just stderr/WireLogs.

Parameters:

logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.register_drv_output.RegisterDrvOutputRequest(*, realisation=None, keyed_drv_output=None, unkeyed_realisation=None)[source]

RegisterDrvOutput request — one realisation, in one of two shapes.

Parameters:
  • realisation (Annotated[Realisation | None, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=frozenset({'realisation-with-path-not-hash'}), text_errors=strict)])

  • keyed_drv_output (Annotated[KeyedDrvOutput | None, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=frozenset({'realisation-with-path-not-hash'}), unless_features=None, text_errors=strict)])

  • unkeyed_realisation (Annotated[UnkeyedRealisation | None, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=frozenset({'realisation-with-path-not-hash'}), unless_features=None, text_errors=strict)])

response_type

alias of RegisterDrvOutputResponse

realisation: Realisation | None

The whole realisation as one JSON string. This is the Nix 2.34 shape.

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

keyed_drv_output: KeyedDrvOutput | None

a derivation path and an output name.

Type:

The id of the realisation

unkeyed_realisation: UnkeyedRealisation | None

an output path and a set of signatures.

It follows the id, because Serialise<Realisation>::write writes the id first. The two are one value in Nix and two fields here, so the order of the declaration is the order of the wire.

Type:

The body


Op 43 — QueryRealisation

QueryRealisation operation — WireRequest/WireResponse types.

The feature changes the message, and not only a value in it. daemon.cc:1024 of the master branch reads a DrvOutput and writes an optional<UnkeyedRealisation>: a tag, and then the body when the tag is 1. Nix 2.34 writes a set of Realisation, each one a JSON string. The two share no byte.

RemoteStore::queryRealisationUncached at remote-store.cc:526 warns and answers nullptr when the feature is off, so a client that asks pynixd for a build trace gets nothing and no error. That is consequence 2 of issue #14, and it stays true until pynixd claims the feature.

class nix_daemon_protocol.query_realisation.QueryRealisationResponse(*, logs=<factory>, realisations=<factory>, present=0, realisation=None)[source]

The build trace of one derivation output, in one of two shapes.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • realisations (Annotated[list[Realisation], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=frozenset({'realisation-with-path-not-hash'}), text_errors=strict)])

  • present (Annotated[int, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=frozenset({'realisation-with-path-not-hash'}), unless_features=None, text_errors=strict)])

  • realisation (Annotated[UnkeyedRealisation | None, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=~nix_daemon_protocol.query_realisation.QueryRealisationResponse.<lambda>, needs_features=frozenset({'realisation-with-path-not-hash'}), unless_features=None, text_errors=strict)])

realisations: list[Realisation]

The whole set, each entry a JSON string. This is the Nix 2.34 shape.

present: int

0 for none, 1 for one.

WorkerProto::Serialise<std::optional<UnkeyedRealisation>>::read at worker-protocol.cc:512 reads it with readNum<uint8_t>, which takes the ordinary eight bytes of a Nix integer and then checks the range, so this is a plain integer field.

Type:

The tag of optional<UnkeyedRealisation>

realisation: UnkeyedRealisation | None

The body, which the wire carries only when present is 1.

The fields are read in the order they are declared, so present already holds its value when this gate runs.

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.query_realisation.QueryRealisationRequest(*, drv_output=None, keyed_drv_output=None)[source]

QueryRealisation request — one derivation output, in one of two shapes.

Parameters:
  • drv_output (Annotated[DrvOutput | None, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=frozenset({'realisation-with-path-not-hash'}), text_errors=strict)])

  • keyed_drv_output (Annotated[KeyedDrvOutput | None, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=frozenset({'realisation-with-path-not-hash'}), unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

response_type

alias of QueryRealisationResponse

drv_output: DrvOutput | None

"<drvHash>!<output>" as one string. This is the Nix 2.34 shape.

keyed_drv_output: KeyedDrvOutput | None

The derivation path and the output name, as two strings.


Op 44 — AddMultipleToStore (streaming request)

AddMultipleToStore operation — WireRequest/WireResponse types.

The request has a structured header (repair + dont_check_sigs) followed by framed path data. Only the header fields are modeled here — the framed data is handled by the transport layer.

class nix_daemon_protocol.add_multiple_to_store.AddMultipleToStoreResponse(*, logs=<factory>)[source]

AddMultipleToStore response — empty body, just stderr/WireLogs.

Parameters:

logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.add_multiple_to_store.AddMultipleToStoreRequest(*, repair, dont_check_sigs)[source]

AddMultipleToStore request header — framed path data follows.

Parameters:
  • repair (int)

  • dont_check_sigs (int)

response_type

alias of AddMultipleToStoreResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 45 — AddBuildLog

AddBuildLog operation — WireRequest/WireResponse types.

class nix_daemon_protocol.add_build_log.AddBuildLogResponse(*, logs=<factory>, value)[source]

AddBuildLog response — single uint64 value.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • value (int)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.add_build_log.AddBuildLogRequest(*, path)[source]

AddBuildLog request: the derivation's base name, then a framed log.

Both ends spell the path as StorePath::to_string, the base name (remote-store.cc:787, daemon.cc:1013), not the whole path a StorePath field writes. The log follows in frames, outside the model.

Parameters:

path (str)

response_type

alias of AddBuildLogResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 46 — BuildPathsWithResults

forward = False

BuildPathsWithResults operation — WireRequest/WireResponse types.

class nix_daemon_protocol.build_paths_with_results.BuildPathsWithResultsResponse(*, logs=<factory>, results=<factory>)[source]

BuildPathsWithResults response — list of KeyedBuildResults.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • results (Annotated[list[KeyedBuildResult], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.build_paths_with_results.BuildPathsWithResultsRequest(*, derived_paths=<factory>, build_mode)[source]

BuildPathsWithResults request — same wire format as BuildPaths.

Wire fields: list[DerivedPath] then build_mode uint64. BuildPathsRequest gives the reason the order matters.

Parameters:
  • derived_paths (Annotated[list[DerivedPath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • build_mode (int)

response_type

alias of BuildPathsWithResultsResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 47 — AddPermRoot

AddPermRoot operation — WireRequest/WireResponse types.

class nix_daemon_protocol.add_perm_root.AddPermRootResponse(*, logs=<factory>, gc_root)[source]

AddPermRoot response — gc_root string.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • gc_root (str)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class nix_daemon_protocol.add_perm_root.AddPermRootRequest(*, store_path, gc_root)[source]

AddPermRoot request — two plain strings (store_path and gc_root).

Parameters:
  • store_path (str)

  • gc_root (str)

response_type

alias of AddPermRootResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Pynixd Extensions

Op 101 — PynixdCollectGarbage

PynixdCollectGarbage operation — WireRequest/WireResponse types.

class pynixd.daemon_extensions.pynixd_collect_garbage.PynixdCollectGarbageResponse(*, logs=<factory>, store_paths=<factory>, bytes=0)[source]

PynixdCollectGarbage response — store paths deleted + bytes freed.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • store_paths (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • bytes (int)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pynixd.daemon_extensions.pynixd_collect_garbage.PynixdCollectGarbageRequest(*, action, has_limit=False, limit=0)[source]

PynixdCollectGarbage request — GC action (DRY_RUN or EXECUTE).

limit narrows a pass and never widens it, riding a presence flag because the codec answers None only for string-ish scalars: an absent numeric has no wire shape. There is deliberately no target-usage override on the wire -- the daemon protocol has no floating-point type, and the store's gc_target_usage already sets policy. Both default off.

New fields are a flag day for this operation: the body is read strictly, so a sender and a daemon from different revisions desync past the first unknown field. That is acceptable because the only sender is pynixd gc, which ships in the same package as the daemon.

Parameters:
  • action (PynixdGCAction)

  • has_limit (bool)

  • limit (int)

response_type

alias of PynixdCollectGarbageResponse

has_limit: bool

Whether limit bounds this pass. Off deletes the whole plan.

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

limit: int

Delete at most this many paths, weight order first. 0 is unset; negative is refused. A dry-run reports the same head it would delete.


Op 103 — QueryPathInfos

QueryPathInfos operation — WireRequest/WireResponse types.

class pynixd.daemon_extensions.query_path_infos.QueryPathInfosResponse(*, logs=<factory>, infos=<factory>)[source]

QueryPathInfos response — list of ValidPathInfo objects.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • infos (Annotated[list[ValidPathInfo], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pynixd.daemon_extensions.query_path_infos.QueryPathInfosRequest(*, paths=<factory>)[source]

QueryPathInfos request — set of StorePaths to query.

Parameters:

paths (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

response_type

alias of QueryPathInfosResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 104 — QueryClosure

QueryClosure operation — WireRequest/WireResponse types.

class pynixd.daemon_extensions.query_closure.QueryClosureResponse(*, logs=<factory>, paths=<factory>)[source]

QueryClosure response — set of all StorePaths in the closure.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • paths (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pynixd.daemon_extensions.query_closure.QueryClosureRequest(*, paths=<factory>)[source]

QueryClosure request — set of seed StorePaths.

Parameters:

paths (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

response_type

alias of QueryClosureResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 105 — QueryClosureWithInfo

QueryClosureWithInfo operation — WireRequest/WireResponse types.

class pynixd.daemon_extensions.query_closure_with_info.QueryClosureWithInfoResponse(*, logs=<factory>, infos=<factory>)[source]

QueryClosureWithInfo response — list of ValidPathInfo objects.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • infos (Annotated[list[ValidPathInfo], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pynixd.daemon_extensions.query_closure_with_info.QueryClosureWithInfoRequest(*, paths=<factory>)[source]

QueryClosureWithInfo request — set of seed StorePaths.

Parameters:

paths (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

response_type

alias of QueryClosureWithInfoResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 106 — QueryDerivationOutputMapBatch

QueryDerivationOutputMapBatch operation — WireRequest/WireResponse types.

class pynixd.daemon_extensions.query_derivation_output_map_batch.DerivationOutputMapBatchResponse(*, logs=<factory>, outputs=<factory>)[source]

Response — nested dict: drv_path → {output_name → StorePath}.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • outputs (Annotated[dict[StorePath, dict[str, StorePath]], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pynixd.daemon_extensions.query_derivation_output_map_batch.QueryDerivationOutputMapBatchRequest(*, drv_paths=<factory>)[source]

QueryDerivationOutputMapBatch request — set of derivation StorePaths.

Parameters:

drv_paths (Annotated[set[StorePath], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

response_type

alias of DerivationOutputMapBatchResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 107 — SignPathInfo

SignPathInfo operation — WireRequest/WireResponse types.

class pynixd.daemon_extensions.sign_path_info.SignPathInfoResponse(*, logs=<factory>, info)[source]

SignPathInfo response — signed ValidPathInfo.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • info (ValidPathInfo)

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pynixd.daemon_extensions.sign_path_info.SignPathInfoRequest(*, info)[source]

SignPathInfo request — ValidPathInfo to sign.

Parameters:

info (ValidPathInfo)

response_type

alias of SignPathInfoResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 108 — ProbeSystems

ProbeSystems operation — WireRequest/WireResponse types.

class pynixd.daemon_extensions.probe_systems.ProbeSystemsResponse(*, logs=<factory>, systems=<factory>)[source]

ProbeSystems response — supported systems discovered by probing.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • systems (Annotated[set[str], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pynixd.daemon_extensions.probe_systems.ProbeSystemsRequest(*, systems=<factory>)[source]

ProbeSystems request — candidate systems to probe.

Parameters:

systems (Annotated[set[str], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

response_type

alias of ProbeSystemsResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].


Op 109 — ProbeFeatures

ProbeFeatures operation — WireRequest/WireResponse types.

class pynixd.daemon_extensions.probe_features.ProbeFeaturesResponse(*, logs=<factory>, feature_matrix=<factory>)[source]

ProbeFeatures response — supported features by system.

Parameters:
  • logs (Annotated[WireLogs, VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • feature_matrix (Annotated[dict[str, set[str]], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pynixd.daemon_extensions.probe_features.ProbeFeaturesRequest(*, systems=<factory>, system_features=<factory>)[source]

ProbeFeatures request — candidate systems and features to probe.

Parameters:
  • systems (Annotated[set[str], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

  • system_features (Annotated[set[str], VersionMeta(min_version=None, max_version=None, serialize=None, deserialize=None, wire_depends_on=None, needs_features=None, unless_features=None, text_errors=strict)])

response_type

alias of ProbeFeaturesResponse

model_config = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].