Lockfile Reference

This page details the lockfile format and fields used in Ryax actions. For instructions on how to use lockfiles, see the reproducible build guide.

Overview

The lockfile (ryax_lock.json) must be placed in the action’s folder, alongside ryax_metadata.yaml. It records the exact environment used to build your action.

Lockfile Structure

Here’s an example lockfile with explanations of each field:

{
  "actionNix": "59e618d90c065f55ae48446f307e8c09565d5ab0",
  "actionNixOriginal": "nixos-24.11",
  "nixpkgsPython": "7c550bca7e6cf95898e32eb2173efe7ebb447460",
  "python": {
    "lockedRequirements": "",
    "originalRequirements": "",
    "pythonVersion": "3.12.8",
    "pythonVersionOriginal": ""
  },
  "wrapperRevision": "971dbb1ad47925987f9b873be2740593560a5234"
}

Field Descriptions

Most fields have an associated *Original version that records what was specified during the initial build. During rebuilds, these original values are compared with current specifications - any differences will cause the build to ignore the locked values.

Core Fields

actionNix: Commit hash of the nixpkgs repository used during build actionNixOriginal: User-specified nixpkgs version (from spec.options.nixpkgs.version in ryax_metadata.yaml) nixpkgsPython: Revision of nixpkgs-python used to find Python versions wrapperRevision: Version of the build wrapper (used for debugging)

Python Configuration

The python object contains:

pythonVersion: Locked Python version pythonVersionOriginal: Python version from spec.option.python.version lockedRequirements: Output of pip freeze showing all action dependencies originalRequirements: Content of the action’s requirements.txt file