{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/devbox-config/latest.json",
  "title": "Devbox json definition",
  "description": "Defines fields and acceptable values of devbox.json",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/jetify-com/devbox/main/.schema/devbox.schema.json",
    "sourceSha256": "2cff6017397505d8b0778d1da8ae9ec39874f01ae7f24572e0d294bd1707b47f",
    "fileMatch": [
      "devbox.json"
    ],
    "parsers": [
      "json"
    ]
  },
  "type": "object",
  "properties": {
    "$schema": {
      "description": "The schema version of this devbox.json file.",
      "type": "string"
    },
    "name": {
      "description": "The name of the Devbox development environment.",
      "type": "string"
    },
    "description": {
      "description": "A description of the Devbox development environment.",
      "type": "string"
    },
    "packages": {
      "description": "Collection of packages to install",
      "oneOf": [
        {
          "type": "array",
          "items": {
            "description": "Name and version of each package in name@version format.",
            "type": "string"
          }
        },
        {
          "type": "object",
          "description": "Name of each package in {\"name\": {\"version\": \"1.2.3\"}} format.",
          "patternProperties": {
            ".*": {
              "oneOf": [
                {
                  "type": "object",
                  "description": "Version number of the specified package in {\"version\": \"1.2.3\"} format.",
                  "properties": {
                    "version": {
                      "type": "string",
                      "description": "Version of the package"
                    },
                    "platforms": {
                      "type": "array",
                      "description": "Names of platforms to install the package on. This package will be skipped for any platforms not on this list",
                      "items": {
                        "enum": [
                          "i686-linux",
                          "aarch64-linux",
                          "aarch64-darwin",
                          "x86_64-darwin",
                          "x86_64-linux",
                          "armv7l-linux"
                        ]
                      }
                    },
                    "excluded_platforms": {
                      "type": "array",
                      "description": "Names of platforms to exclude the package on",
                      "items": {
                        "enum": [
                          "i686-linux",
                          "aarch64-linux",
                          "aarch64-darwin",
                          "x86_64-darwin",
                          "x86_64-linux",
                          "armv7l-linux"
                        ]
                      }
                    },
                    "glibc_patch": {
                      "type": "boolean",
                      "description": "Whether to patch glibc to the latest available version for this package"
                    }
                  }
                },
                {
                  "type": "string",
                  "description": "Version of the package to install."
                }
              ]
            }
          }
        }
      ]
    },
    "env": {
      "description": "List of additional environment variables to be set in the Devbox environment. Values containing $PATH or $PWD will be expanded. No other variable expansion or command substitution will occur.",
      "type": "object",
      "patternProperties": {
        ".*": {
          "type": "string",
          "description": "Value of the environment variable."
        }
      }
    },
    "shell": {
      "description": "Definitions of scripts and actions to take when in devbox shell.",
      "type": "object",
      "properties": {
        "init_hook": {
          "type": [
            "array",
            "string"
          ],
          "items": {
            "description": "List of shell commands/scripts to run right after devbox shell starts.",
            "type": "string"
          }
        },
        "scripts": {
          "description": "List of command/script definitions to run with `devbox run <script_name>`.",
          "type": "object",
          "patternProperties": {
            ".*": {
              "description": "Alias name for the script.",
              "type": [
                "array",
                "string"
              ],
              "items": {
                "type": "string",
                "description": "The script's shell commands."
              }
            }
          }
        }
      },
      "additionalProperties": false
    },
    "include": {
      "description": "List of additional plugins to activate within your devbox shell",
      "type": "array",
      "items": {
        "description": "Name of the plugin to activate.",
        "type": "string"
      }
    },
    "env_from": {
      "type": "string"
    },
    "nixpkgs": {
      "type": "object",
      "properties": {
        "commit": {
          "type": "string",
          "description": "The commit hash of the nixpkgs repository to use"
        }
      }
    }
  },
  "additionalProperties": false
}
