Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Build Result

Title: Build Result

Typecombining
RequiredNo
Additional propertiesAny type allowed

Description: This schema describes the JSON representation of Nix’s BuildResult type, which represents the result of building a derivation or substituting store paths.

Build results can represent either successful builds (with built outputs) or various types of failures.

PropertyTypePatternTitle/Description
- timesBuiltintegerNoTimes built
- startTimeintegerNoStart time
- stopTimeintegerNoStop time
- cpuUserintegerNoUser CPU time
- cpuSystemintegerNoSystem CPU time

1. Property Successful Build Result

Title: Successful Build Result

Typeobject
RequiredNo
Additional propertiesAny type allowed
Defined in#/$defs/success

Description: Represents a successful build with built outputs.

PropertyTypePatternTitle/Description
+ successconstNoSuccess indicator
+ statusenum (of string)NoSuccess status
+ builtOutputsobjectNoBuilt outputs

1.1. Property success

Title: Success indicator

Typeconst
RequiredYes

Description: Always true for successful build results.

Specific value: true

1.2. Property status

Title: Success status

Typeenum (of string)
RequiredYes

Description: Status string for successful builds.

Must be one of:

  • “Built”
  • “Substituted”
  • “AlreadyValid”
  • “ResolvesToAlreadyValid”

1.3. Property builtOutputs

Title: Built outputs

Typeobject
RequiredYes
Additional propertiesEach additional property must conform to the schema

Description: A mapping from output names to their build trace entries.

PropertyTypePatternTitle/Description
- objectNoBuild Trace Value

1.3.1. Property Build Trace Value

Title: Build Trace Value

Typeobject
RequiredNo
Additional propertiesAny type allowed
Defined inbuild-trace-entry-v3.yaml#/$defs/value

Description: A build trace entry is a key-value pair. This is the “value” part, describing an output.

PropertyTypePatternTitle/Description
+ outPathstringNoOutput Store Path
+ signaturesarrayNoBuild Signatures
1.3.1.1. Property outPath

Title: Output Store Path

Typestring
RequiredYes
Defined instore-path-v1.yaml

Description: The path to the store object that resulted from building this derivation for the given output name.

Restrictions
Min length34
Must match regular expression^[0123456789abcdfghijklmnpqrsvwxyz]{32}-.+$ Test
1.3.1.2. Property signatures

Title: Build Signatures

Typearray
RequiredYes

Description: A set of cryptographic signatures attesting to the authenticity of this build trace entry.

Array restrictions
Min itemsN/A
Max itemsN/A
Items unicityFalse
Additional itemsFalse
Tuple validationSee below
Each item of this array must beDescription
SignatureA cryptographic signature along with the name of the key that produced it. …
1.3.1.2.1. Signature

Title: Signature

Typeobject
RequiredNo
Additional propertiesAny type allowed
Defined insignature-v2.yaml

Description: A cryptographic signature along with the name of the key that produced it.

This schema describes the JSON representation of signatures as used in various Nix JSON APIs.

Version History

  • Version 1: Colon-separated string in the format <key-name>:<signature-in-Base64>

  • Version 2: Structured object with keyName and sig fields

PropertyTypePatternTitle/Description
+ keyNamestringNoKey Name
+ sigstringNoSignature Data
1.3.1.2.1.1. Property keyName

Title: Key Name

Typestring
RequiredYes

Description: The name of the key used to produce this signature

1.3.1.2.1.2. Property sig

Title: Signature Data

Typestring
RequiredYes

Description: The raw signature bytes, Base64-encoded

2. Property Failed Build Result

Title: Failed Build Result

Typeobject
RequiredNo
Additional propertiesAny type allowed
Defined in#/$defs/failure

Description: Represents a failed build with error information.

PropertyTypePatternTitle/Description
+ successconstNoSuccess indicator
+ statusenum (of string)NoFailure status
+ errorMsgstringNoError message
- isNonDeterministicbooleanNoNon-deterministic flag

2.1. Property success

Title: Success indicator

Typeconst
RequiredYes

Description: Always false for failed build results.

Specific value: false

2.2. Property status

Title: Failure status

Typeenum (of string)
RequiredYes

Description: Status string for failed builds.

Must be one of:

  • “PermanentFailure”
  • “InputRejected”
  • “OutputRejected”
  • “TransientFailure”
  • “CachedFailure”
  • “TimedOut”
  • “MiscFailure”
  • “DependencyFailed”
  • “LogLimitExceeded”
  • “NotDeterministic”
  • “NoSubstituters”
  • “HashMismatch”

2.3. Property errorMsg

Title: Error message

Typestring
RequiredYes

Description: Information about the error if the build failed.

2.4. Property isNonDeterministic

Title: Non-deterministic flag

Typeboolean
RequiredNo

Description: If timesBuilt > 1, whether some builds did not produce the same result.

Note that ‘isNonDeterministic = false’ does not mean the build is deterministic, just that we don’t have evidence of non-determinism.

3. The following properties are required

  • success
  • status

4. Property timesBuilt

Title: Times built

Typeinteger
RequiredNo

Description: How many times this build was performed.

Restrictions
Minimum≥ 0

5. Property startTime

Title: Start time

Typeinteger
RequiredNo

Description: The start time of the build (or one of the rounds, if it was repeated), as a Unix timestamp.

Restrictions
Minimum≥ 0

6. Property stopTime

Title: Stop time

Typeinteger
RequiredNo

Description: The stop time of the build (or one of the rounds, if it was repeated), as a Unix timestamp.

Restrictions
Minimum≥ 0

7. Property cpuUser

Title: User CPU time

Typeinteger
RequiredNo

Description: User CPU time the build took, in microseconds.

Restrictions
Minimum≥ 0

8. Property cpuSystem

Title: System CPU time

Typeinteger
RequiredNo

Description: System CPU time the build took, in microseconds.

Restrictions
Minimum≥ 0

Examples

Successful build

{
  "builtOutputs": {
    "bar": {
      "outPath": "g1w7hy3qg1w7hy3qg1w7hy3qg1w7hy3q-bar",
      "signatures": []
    },
    "foo": {
      "outPath": "g1w7hy3qg1w7hy3qg1w7hy3qg1w7hy3q-foo",
      "signatures": []
    }
  },
  "cpuSystem": 604000000,
  "cpuUser": 500000000,
  "startTime": 30,
  "status": "Built",
  "stopTime": 50,
  "success": true,
  "timesBuilt": 3
}

Failed build (output rejected)

{
  "errorMsg": "no idea why",
  "isNonDeterministic": false,
  "startTime": 30,
  "status": "OutputRejected",
  "stopTime": 50,
  "success": false,
  "timesBuilt": 3
}

Failed build (non-deterministic)

{
  "errorMsg": "no idea why",
  "isNonDeterministic": false,
  "startTime": 0,
  "status": "NotDeterministic",
  "stopTime": 0,
  "success": false,
  "timesBuilt": 1
}