fix: Improve validation errors

This commit is contained in:
Gerald Pinder 2024-12-11 19:40:12 -05:00
parent 6424bf3573
commit 3d0ae32734
99 changed files with 3773 additions and 425 deletions

View file

@ -0,0 +1,15 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "import-v1.json",
"type": "object",
"properties": {
"from-file": {
"type": "string",
"description": "The path to another file containing module configuration to import here.\nhttps://blue-build.org/how-to/multiple-files/"
}
},
"required": [
"from-file"
],
"additionalProperties": false
}

View file

@ -0,0 +1,25 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "module-custom-v1.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "This is not a built-in module."
},
"source": {
"type": "string",
"description": "The image ref of the module repository (an OCI image) to pull the module from.\nIf this is a local module, set the value to 'local'.\nhttps://blue-build.org/reference/module/#source-optional"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
}
},
"required": [
"type",
"source"
],
"additionalProperties": {}
}

View file

@ -0,0 +1,29 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "module-list-v1.json",
"type": "object",
"properties": {
"modules": {
"type": "array",
"items": {
"$ref": "#/$defs/ModuleEntry"
},
"description": "A list of [modules](https://blue-build.org/reference/module/) that is executed in order. Multiple of the same module can be included.\n\nEach item in this list should have at least a `type:` or be specified to be included from an external file in the `recipes/` directory with `from-file:`."
}
},
"required": [
"modules"
],
"$defs": {
"ModuleEntry": {
"anyOf": [
{
"$ref": "module-v1.json"
},
{
"$ref": "import-v1.json"
}
]
}
}
}

View file

@ -0,0 +1,44 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "module-stage-list-v1.json",
"type": "object",
"properties": {
"modules": {
"type": "array",
"items": {
"$ref": "#/$defs/ModuleEntry"
},
"description": "A list of [modules](https://blue-build.org/reference/module/) that is executed in order. Multiple of the same module can be included.\n\nEach item in this list should have at least a `type:` or be specified to be included from an external file in the `recipes/` directory with `from-file:`."
},
"stages": {
"type": "array",
"items": {
"$ref": "#/$defs/StageEntry"
},
"description": "A list of [stages](https://blue-build.org/reference/stages/) that are executed before the build of the final image.\nThis is useful for compiling programs from source without polluting the final bootable image."
}
},
"additionalProperties": false,
"$defs": {
"ModuleEntry": {
"anyOf": [
{
"$ref": "module-v1.json"
},
{
"$ref": "import-v1.json"
}
]
},
"StageEntry": {
"anyOf": [
{
"$ref": "stage-v1.json"
},
{
"$ref": "import-v1.json"
}
]
}
}
}

View file

@ -0,0 +1,143 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "module-v1.json",
"anyOf": [
{
"$ref": "#/$defs/RepoModule"
},
{
"$ref": "#/$defs/CustomModule"
}
],
"$defs": {
"RepoModule": {
"anyOf": [
{
"$ref": "/modules/akmods-latest.json"
},
{
"$ref": "/modules/akmods-v1.json"
},
{
"$ref": "/modules/bling-latest.json"
},
{
"$ref": "/modules/bling-v1.json"
},
{
"$ref": "/modules/brew-latest.json"
},
{
"$ref": "/modules/brew-v1.json"
},
{
"$ref": "/modules/chezmoi-latest.json"
},
{
"$ref": "/modules/chezmoi-v1.json"
},
{
"$ref": "/modules/default-flatpaks-latest.json"
},
{
"$ref": "/modules/default-flatpaks-v1.json"
},
{
"$ref": "/modules/files-latest.json"
},
{
"$ref": "/modules/files-v1.json"
},
{
"$ref": "/modules/fonts-latest.json"
},
{
"$ref": "/modules/fonts-v1.json"
},
{
"$ref": "/modules/gnome-extensions-latest.json"
},
{
"$ref": "/modules/gnome-extensions-v1.json"
},
{
"$ref": "/modules/gschema-overrides-latest.json"
},
{
"$ref": "/modules/gschema-overrides-v1.json"
},
{
"$ref": "/modules/justfiles-latest.json"
},
{
"$ref": "/modules/justfiles-v1.json"
},
{
"$ref": "/modules/rpm-ostree-latest.json"
},
{
"$ref": "/modules/rpm-ostree-v1.json"
},
{
"$ref": "/modules/script-latest.json"
},
{
"$ref": "/modules/script-v1.json"
},
{
"$ref": "/modules/signing-latest.json"
},
{
"$ref": "/modules/signing-v1.json"
},
{
"$ref": "/modules/systemd-latest.json"
},
{
"$ref": "/modules/systemd-v1.json"
},
{
"$ref": "/modules/yafti-latest.json"
},
{
"$ref": "/modules/yafti-v1.json"
},
{
"$ref": "/modules/containerfile-latest.json"
},
{
"$ref": "/modules/containerfile-v1.json"
},
{
"$ref": "/modules/copy-latest.json"
},
{
"$ref": "/modules/copy-v1.json"
}
]
},
"CustomModule": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "This is not a built-in module."
},
"source": {
"type": "string",
"description": "The image ref of the module repository (an OCI image) to pull the module from.\nIf this is a local module, set the value to 'local'.\nhttps://blue-build.org/reference/module/#source-optional"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
}
},
"required": [
"type",
"source"
],
"additionalProperties": {}
}
}
}

View file

@ -0,0 +1,67 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/akmods.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "akmods",
"description": "The akmods module is a tool used for managing and installing kernel modules built by Universal Blue.\nhttps://blue-build.org/reference/modules/akmods/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"base": {
"anyOf": [
{
"type": "string",
"const": "main"
},
{
"type": "string",
"const": "asus"
},
{
"type": "string",
"const": "fsync"
},
{
"type": "string",
"const": "fsync-ba"
},
{
"type": "string",
"const": "surface"
},
{
"type": "string",
"const": "coreos-stable"
},
{
"type": "string",
"const": "coreos-testing"
},
{
"type": "string",
"const": "bazzite"
}
],
"default": "main",
"description": "The kernel your images uses.\n- main: stock Fedora kernel / main and nvidia images\n- asus: asus kernel / asus images\n- fsync: fsync kernel / not used in any Universal Blue images\n- fsync-ba: fsync kernel, stable version / not used in any Universal Blue images\n- surface: surface kernel / surface images\n- coreos-stable: stock CoreOS kernel / uCore stable images\n- coreos-testing: stock CoreOS Testing kernel / uCore testing images\n- bazzite: Bazzite's kernel / bazzite images"
},
"install": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of akmods to install.\nSee all available akmods here: https://github.com/ublue-os/akmods#kmod-packages"
}
},
"required": [
"type",
"install"
],
"additionalProperties": false
}

View file

@ -0,0 +1,67 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/akmods.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "akmods",
"description": "The akmods module is a tool used for managing and installing kernel modules built by Universal Blue.\nhttps://blue-build.org/reference/modules/akmods/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"base": {
"anyOf": [
{
"type": "string",
"const": "main"
},
{
"type": "string",
"const": "asus"
},
{
"type": "string",
"const": "fsync"
},
{
"type": "string",
"const": "fsync-ba"
},
{
"type": "string",
"const": "surface"
},
{
"type": "string",
"const": "coreos-stable"
},
{
"type": "string",
"const": "coreos-testing"
},
{
"type": "string",
"const": "bazzite"
}
],
"default": "main",
"description": "The kernel your images uses.\n- main: stock Fedora kernel / main and nvidia images\n- asus: asus kernel / asus images\n- fsync: fsync kernel / not used in any Universal Blue images\n- fsync-ba: fsync kernel, stable version / not used in any Universal Blue images\n- surface: surface kernel / surface images\n- coreos-stable: stock CoreOS kernel / uCore stable images\n- coreos-testing: stock CoreOS Testing kernel / uCore testing images\n- bazzite: Bazzite's kernel / bazzite images"
},
"install": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of akmods to install.\nSee all available akmods here: https://github.com/ublue-os/akmods#kmod-packages"
}
},
"required": [
"type",
"install"
],
"additionalProperties": false
}

View file

@ -0,0 +1,54 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/bling.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "bling",
"description": "The bling module can be used to pull in small \"bling\" into your image. \nhttps://blue-build.org/reference/modules/bling/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"install": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"const": "rpmfusion"
},
{
"type": "string",
"const": "negativo17"
},
{
"type": "string",
"const": "ublue-update"
},
{
"type": "string",
"const": "1password"
},
{
"type": "string",
"const": "dconf-update-service"
},
{
"type": "string",
"const": "gnome-vrr"
}
]
},
"description": "List of bling submodules to run / things to install onto your system."
}
},
"required": [
"type",
"install"
],
"additionalProperties": false
}

View file

@ -0,0 +1,54 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/bling.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "bling",
"description": "The bling module can be used to pull in small \"bling\" into your image. \nhttps://blue-build.org/reference/modules/bling/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"install": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"const": "rpmfusion"
},
{
"type": "string",
"const": "negativo17"
},
{
"type": "string",
"const": "ublue-update"
},
{
"type": "string",
"const": "1password"
},
{
"type": "string",
"const": "dconf-update-service"
},
{
"type": "string",
"const": "gnome-vrr"
}
]
},
"description": "List of bling submodules to run / things to install onto your system."
}
},
"required": [
"type",
"install"
],
"additionalProperties": false
}

View file

@ -0,0 +1,61 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/brew.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "brew",
"description": "The brew module installs Homebrew / Linuxbrew at build time and ensures the package manager remains up-to-date.\nhttps://blue-build.org/reference/modules/brew/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"auto-update": {
"type": "boolean",
"default": true,
"description": "Whether to auto-update the Brew binary using a systemd service."
},
"update-interval": {
"type": "string",
"default": "6h",
"description": "Defines how often the Brew update service should run. The string is passed directly to `OnUnitInactiveSec` in systemd timer. (Syntax: ['1d', '6h', '10m'])."
},
"update-wait-after-boot": {
"type": "string",
"default": "10min",
"description": "Time delay after system boot before the first Brew update runs. The string is passed directly to `OnBootSec` in systemd timer. (Syntax: ['1d', '6h', '10m'])."
},
"auto-upgrade": {
"type": "boolean",
"default": true,
"description": "Whether to auto-upgrade all installed Brew packages using a systemd service."
},
"upgrade-interval": {
"type": "string",
"default": "8h",
"description": "Defines how often the Brew upgrade service should run. The string is passed directly to `OnUnitInactiveSec` in systemd timer. (Syntax: ['1d', '6h', '10m'])."
},
"upgrade-wait-after-boot": {
"type": "string",
"default": "30min",
"description": "Time delay after system boot before the first Brew package upgrade runs. The string is passed directly to `OnBootSec` in systemd timer. (Syntax: ['1d', '6h', '10m'])."
},
"nofile-limits": {
"type": "boolean",
"default": false,
"description": "Whether to increase nofile limits (limits for number of open files) for Brew installations.\nWhen set to true, it increases the nofile limits to prevent certain \"I/O heavy\" Brew packages from failing due to \"too many open files\" error.\nHowever, it's important to note that increasing nofile limits can have potential security implications for malicious applications which would try to abuse storage I/O.\nDefaults to false for security purposes.\n\nhttps://serverfault.com/questions/577437/what-is-the-impact-of-increasing-nofile-limits-in-etc-security-limits-conf"
},
"brew-analytics": {
"type": "boolean",
"default": true,
"description": "Whether to enable Brew analytics. \nThe Homebrew project uses analytics to anonymously collect the information about Brew usage & your system in order to improve the experience of Brew users."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,61 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/brew.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "brew",
"description": "The brew module installs Homebrew / Linuxbrew at build time and ensures the package manager remains up-to-date.\nhttps://blue-build.org/reference/modules/brew/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"auto-update": {
"type": "boolean",
"default": true,
"description": "Whether to auto-update the Brew binary using a systemd service."
},
"update-interval": {
"type": "string",
"default": "6h",
"description": "Defines how often the Brew update service should run. The string is passed directly to `OnUnitInactiveSec` in systemd timer. (Syntax: ['1d', '6h', '10m'])."
},
"update-wait-after-boot": {
"type": "string",
"default": "10min",
"description": "Time delay after system boot before the first Brew update runs. The string is passed directly to `OnBootSec` in systemd timer. (Syntax: ['1d', '6h', '10m'])."
},
"auto-upgrade": {
"type": "boolean",
"default": true,
"description": "Whether to auto-upgrade all installed Brew packages using a systemd service."
},
"upgrade-interval": {
"type": "string",
"default": "8h",
"description": "Defines how often the Brew upgrade service should run. The string is passed directly to `OnUnitInactiveSec` in systemd timer. (Syntax: ['1d', '6h', '10m'])."
},
"upgrade-wait-after-boot": {
"type": "string",
"default": "30min",
"description": "Time delay after system boot before the first Brew package upgrade runs. The string is passed directly to `OnBootSec` in systemd timer. (Syntax: ['1d', '6h', '10m'])."
},
"nofile-limits": {
"type": "boolean",
"default": false,
"description": "Whether to increase nofile limits (limits for number of open files) for Brew installations.\nWhen set to true, it increases the nofile limits to prevent certain \"I/O heavy\" Brew packages from failing due to \"too many open files\" error.\nHowever, it's important to note that increasing nofile limits can have potential security implications for malicious applications which would try to abuse storage I/O.\nDefaults to false for security purposes.\n\nhttps://serverfault.com/questions/577437/what-is-the-impact-of-increasing-nofile-limits-in-etc-security-limits-conf"
},
"brew-analytics": {
"type": "boolean",
"default": true,
"description": "Whether to enable Brew analytics. \nThe Homebrew project uses analytics to anonymously collect the information about Brew usage & your system in order to improve the experience of Brew users."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,70 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/chezmoi.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "chezmoi",
"description": "The chezmoi module installs the latest chezmoi release at build time, along with services to clone a dotfile repository and keep it up-to-date.\nhttps://blue-build.org/reference/modules/chezmoi/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"repository": {
"type": "string",
"description": "Git repository to initialize."
},
"branch": {
"type": "string",
"default": "",
"description": "Git branch of the chezmoi repository."
},
"all-users": {
"type": "boolean",
"default": true,
"description": "Whether to enable the modules services globally for all users, if false users need to enable services manually."
},
"run-every": {
"type": "string",
"default": "1d",
"description": "Dotfiles will be updated with this interval."
},
"wait-after-boot": {
"type": "string",
"default": "5m",
"description": "Dotfile updates will wait this long after a boot before running."
},
"disable-init": {
"type": "boolean",
"default": false,
"description": "Disable the service that initializes `repository` on users that are logged in or have linger enabled UI."
},
"disable-update": {
"type": "boolean",
"default": false,
"description": "Disable the timer that updates chezmoi with the set interval."
},
"file-conflict-policy": {
"anyOf": [
{
"type": "string",
"const": "skip"
},
{
"type": "string",
"const": "replace"
}
],
"default": "skip",
"description": "What to do when file different that exists on your repo is has been changed or exists locally. Accepts \"skip\" or \"replace\"."
}
},
"required": [
"type",
"repository"
],
"additionalProperties": false
}

View file

@ -0,0 +1,70 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/chezmoi.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "chezmoi",
"description": "The chezmoi module installs the latest chezmoi release at build time, along with services to clone a dotfile repository and keep it up-to-date.\nhttps://blue-build.org/reference/modules/chezmoi/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"repository": {
"type": "string",
"description": "Git repository to initialize."
},
"branch": {
"type": "string",
"default": "",
"description": "Git branch of the chezmoi repository."
},
"all-users": {
"type": "boolean",
"default": true,
"description": "Whether to enable the modules services globally for all users, if false users need to enable services manually."
},
"run-every": {
"type": "string",
"default": "1d",
"description": "Dotfiles will be updated with this interval."
},
"wait-after-boot": {
"type": "string",
"default": "5m",
"description": "Dotfile updates will wait this long after a boot before running."
},
"disable-init": {
"type": "boolean",
"default": false,
"description": "Disable the service that initializes `repository` on users that are logged in or have linger enabled UI."
},
"disable-update": {
"type": "boolean",
"default": false,
"description": "Disable the timer that updates chezmoi with the set interval."
},
"file-conflict-policy": {
"anyOf": [
{
"type": "string",
"const": "skip"
},
{
"type": "string",
"const": "replace"
}
],
"default": "skip",
"description": "What to do when file different that exists on your repo is has been changed or exists locally. Accepts \"skip\" or \"replace\"."
}
},
"required": [
"type",
"repository"
],
"additionalProperties": false
}

View file

@ -0,0 +1,35 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/containerfile.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "containerfile",
"description": "The containerfile module is a tool for adding custom Containerfile instructions for custom image builds. \nhttps://blue-build.org/reference/modules/containerfile/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"snippets": {
"type": "array",
"items": {
"type": "string"
},
"description": "Lines to directly insert into the generated Containerfile."
},
"containerfiles": {
"type": "array",
"items": {
"type": "string"
},
"description": "Names of directories in ./containerfiles/ containing each a Containerfile to insert into the generated Containerfile."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,35 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/containerfile.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "containerfile",
"description": "The containerfile module is a tool for adding custom Containerfile instructions for custom image builds. \nhttps://blue-build.org/reference/modules/containerfile/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"snippets": {
"type": "array",
"items": {
"type": "string"
},
"description": "Lines to directly insert into the generated Containerfile."
},
"containerfiles": {
"type": "array",
"items": {
"type": "string"
},
"description": "Names of directories in ./containerfiles/ containing each a Containerfile to insert into the generated Containerfile."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,35 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/copy.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "copy",
"description": "The copy module is a short-hand method of adding a COPY instruction into the Containerfile.\nhttps://blue-build.org/reference/modules/copy/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"from": {
"type": "string",
"description": "Equivalent to the --from property in a COPY statement, use to specify an image to copy from.\nBy default, the COPY source is the build environment's file tree."
},
"src": {
"type": "string",
"description": "Path to source file or directory."
},
"dest": {
"type": "string",
"description": "Path to destination file or directory."
}
},
"required": [
"type",
"src",
"dest"
],
"additionalProperties": false
}

View file

@ -0,0 +1,35 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/copy.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "copy",
"description": "The copy module is a short-hand method of adding a COPY instruction into the Containerfile.\nhttps://blue-build.org/reference/modules/copy/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"from": {
"type": "string",
"description": "Equivalent to the --from property in a COPY statement, use to specify an image to copy from.\nBy default, the COPY source is the build environment's file tree."
},
"src": {
"type": "string",
"description": "Path to source file or directory."
},
"dest": {
"type": "string",
"description": "Path to destination file or directory."
}
},
"required": [
"type",
"src",
"dest"
],
"additionalProperties": false
}

View file

@ -0,0 +1,94 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/default-flatpaks.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "default-flatpaks",
"description": "The default-flatpaks module can be used to install or uninstall flatpaks from a configurable remote on every boot.\nhttps://blue-build.org/reference/modules/default-flatpaks/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"notify": {
"type": "boolean",
"default": false,
"description": "Whether to send a notification after the install/uninstall is finished."
},
"system": {
"type": "object",
"properties": {
"repo-url": {
"type": "string",
"default": "https://dl.flathub.org/repo/flathub.flatpakrepo",
"description": "URL of the repo to add. Defaults to Flathub's URL."
},
"repo-name": {
"type": "string",
"default": "flathub",
"description": "Name for the repo to add."
},
"repo-title": {
"type": "string",
"description": "Pretty title for the repo to add. Not set by default."
},
"install": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of Flatpak IDs to install from the repo."
},
"remove": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of Flatpak IDs to remove."
}
},
"description": "Configuration for system flatpaks."
},
"user": {
"type": "object",
"properties": {
"repo-url": {
"type": "string",
"default": "https://dl.flathub.org/repo/flathub.flatpakrepo",
"description": "URL of the repo to add. Defaults to Flathub's URL."
},
"repo-name": {
"type": "string",
"default": "flathub",
"description": "Name for the repo to add."
},
"repo-title": {
"type": "string",
"description": "Pretty title for the repo to add. Not set by default."
},
"install": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of Flatpak IDs to install from the repo."
},
"remove": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of Flatpak IDs to remove."
}
},
"description": "Configuration for user flatpaks."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,94 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/default-flatpaks.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "default-flatpaks",
"description": "The default-flatpaks module can be used to install or uninstall flatpaks from a configurable remote on every boot.\nhttps://blue-build.org/reference/modules/default-flatpaks/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"notify": {
"type": "boolean",
"default": false,
"description": "Whether to send a notification after the install/uninstall is finished."
},
"system": {
"type": "object",
"properties": {
"repo-url": {
"type": "string",
"default": "https://dl.flathub.org/repo/flathub.flatpakrepo",
"description": "URL of the repo to add. Defaults to Flathub's URL."
},
"repo-name": {
"type": "string",
"default": "flathub",
"description": "Name for the repo to add."
},
"repo-title": {
"type": "string",
"description": "Pretty title for the repo to add. Not set by default."
},
"install": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of Flatpak IDs to install from the repo."
},
"remove": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of Flatpak IDs to remove."
}
},
"description": "Configuration for system flatpaks."
},
"user": {
"type": "object",
"properties": {
"repo-url": {
"type": "string",
"default": "https://dl.flathub.org/repo/flathub.flatpakrepo",
"description": "URL of the repo to add. Defaults to Flathub's URL."
},
"repo-name": {
"type": "string",
"default": "flathub",
"description": "Name for the repo to add."
},
"repo-title": {
"type": "string",
"description": "Pretty title for the repo to add. Not set by default."
},
"install": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of Flatpak IDs to install from the repo."
},
"remove": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of Flatpak IDs to remove."
}
},
"description": "Configuration for user flatpaks."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,60 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/files.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "files",
"description": "Copy files to your image at build time\nhttps://blue-build.org/reference/modules/files/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"files": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/RecordString"
}
},
{
"type": "array",
"items": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"destination": {
"type": "string"
}
},
"required": [
"source",
"destination"
]
}
}
],
"description": "List of files / folders to copy."
}
},
"required": [
"type",
"files"
],
"additionalProperties": false,
"$defs": {
"RecordString": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "string"
}
}
}
}

View file

@ -0,0 +1,60 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/files.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "files",
"description": "Copy files to your image at build time\nhttps://blue-build.org/reference/modules/files/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"files": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/RecordString"
}
},
{
"type": "array",
"items": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"destination": {
"type": "string"
}
},
"required": [
"source",
"destination"
]
}
}
],
"description": "List of files / folders to copy."
}
},
"required": [
"type",
"files"
],
"additionalProperties": false,
"$defs": {
"RecordString": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "string"
}
}
}
}

View file

@ -0,0 +1,41 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/fonts.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "fonts",
"description": "The fonts module can be used to install fonts from Nerd Fonts or Google Fonts. \nhttps://blue-build.org/reference/modules/fonts/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"fonts": {
"type": "object",
"properties": {
"nerd-fonts": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of Nerd Fonts to install (without the \"Nerd Font\" suffix)."
},
"google-fonts": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of Google Fonts to install."
}
}
}
},
"required": [
"type",
"fonts"
],
"additionalProperties": false
}

View file

@ -0,0 +1,41 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/fonts.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "fonts",
"description": "The fonts module can be used to install fonts from Nerd Fonts or Google Fonts. \nhttps://blue-build.org/reference/modules/fonts/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"fonts": {
"type": "object",
"properties": {
"nerd-fonts": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of Nerd Fonts to install (without the \"Nerd Font\" suffix)."
},
"google-fonts": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of Google Fonts to install."
}
}
}
},
"required": [
"type",
"fonts"
],
"additionalProperties": false
}

View file

@ -0,0 +1,42 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/gnome-extensions.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "gnome-extensions",
"description": "The gnome-extensions module can be used to install GNOME extensions inside system directory.\nhttps://blue-build.org/reference/modules/gnome-extensions/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"install": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"description": "List of GNOME extensions to install. \n(case sensitive extension names or extension IDs from https://extensions.gnome.org/)"
},
"uninstall": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of system GNOME extensions to uninstall. \nOnly use this to remove extensions not installed by your package manager. Those extensions should be uninstalled using the package manager instead."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,42 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/gnome-extensions.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "gnome-extensions",
"description": "The gnome-extensions module can be used to install GNOME extensions inside system directory.\nhttps://blue-build.org/reference/modules/gnome-extensions/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"install": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"description": "List of GNOME extensions to install. \n(case sensitive extension names or extension IDs from https://extensions.gnome.org/)"
},
"uninstall": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of system GNOME extensions to uninstall. \nOnly use this to remove extensions not installed by your package manager. Those extensions should be uninstalled using the package manager instead."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,28 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/gschema-overrides.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "gschema-overrides",
"description": "The gschema-overrides module can be used for including system-setting overrides for GTK-based desktop environments.\nhttps://blue-build.org/reference/modules/gschema-overrides/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"include": {
"type": "array",
"items": {
"type": "string"
},
"description": "Gschema override files to test and copy to the correct place."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,28 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/gschema-overrides.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "gschema-overrides",
"description": "The gschema-overrides module can be used for including system-setting overrides for GTK-based desktop environments.\nhttps://blue-build.org/reference/modules/gschema-overrides/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"include": {
"type": "array",
"items": {
"type": "string"
},
"description": "Gschema override files to test and copy to the correct place."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,33 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/justfiles.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "justfiles",
"description": "The justfiles module makes it easy to include just recipes from multiple files in Universal Blue -based images.\nhttps://blue-build.org/reference/modules/justfiles/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"validate": {
"type": "boolean",
"default": false,
"description": "Whether to validate the syntax of the justfiles against `just --fmt`. (warning: can be very unforgiving)"
},
"include": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of files or subfolders to include into this image. If omitted, all justfiles will be included."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,33 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/justfiles.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "justfiles",
"description": "The justfiles module makes it easy to include just recipes from multiple files in Universal Blue -based images.\nhttps://blue-build.org/reference/modules/justfiles/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"validate": {
"type": "boolean",
"default": false,
"description": "Whether to validate the syntax of the justfiles against `just --fmt`. (warning: can be very unforgiving)"
},
"include": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of files or subfolders to include into this image. If omitted, all justfiles will be included."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,80 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/rpm-ostree.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "rpm-ostree",
"description": "The rpm-ostree module offers pseudo-declarative package and repository management using rpm-ostree.\nhttps://blue-build.org/reference/modules/rpm-ostree/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"repos": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of links to .repo files to download into /etc/yum.repos.d/."
},
"keys": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of links to key files to import for installing from custom repositories."
},
"optfix": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of folder names under /opt/ to enable for installing into."
},
"install": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of RPM packages to install."
},
"remove": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of RPM packages to remove."
},
"replace": {
"type": "array",
"items": {
"type": "object",
"properties": {
"from-repo": {
"type": "string",
"description": "URL to the source COPR repo for the new packages."
},
"packages": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of packages to replace using packages from the defined repo."
}
},
"required": [
"from-repo",
"packages"
]
},
"description": "List of configurations for `rpm-ostree override replace`ing packages."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,80 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/rpm-ostree.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "rpm-ostree",
"description": "The rpm-ostree module offers pseudo-declarative package and repository management using rpm-ostree.\nhttps://blue-build.org/reference/modules/rpm-ostree/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"repos": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of links to .repo files to download into /etc/yum.repos.d/."
},
"keys": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of links to key files to import for installing from custom repositories."
},
"optfix": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of folder names under /opt/ to enable for installing into."
},
"install": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of RPM packages to install."
},
"remove": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of RPM packages to remove."
},
"replace": {
"type": "array",
"items": {
"type": "object",
"properties": {
"from-repo": {
"type": "string",
"description": "URL to the source COPR repo for the new packages."
},
"packages": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of packages to replace using packages from the defined repo."
}
},
"required": [
"from-repo",
"packages"
]
},
"description": "List of configurations for `rpm-ostree override replace`ing packages."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,35 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/script.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "script",
"description": "The script module can be used to run arbitrary bash snippets and scripts at image build time.\nhttps://blue-build.org/reference/modules/script/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"snippets": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of bash one-liners to run."
},
"scripts": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of script files to run."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,35 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/script.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "script",
"description": "The script module can be used to run arbitrary bash snippets and scripts at image build time.\nhttps://blue-build.org/reference/modules/script/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"snippets": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of bash one-liners to run."
},
"scripts": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of script files to run."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,21 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/signing.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "signing",
"description": "The signing module is used to install the required signing policies for cosign image verification with rpm-ostree and bootc.\nhttps://blue-build.org/reference/modules/signing/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,21 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/signing.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "signing",
"description": "The signing module is used to install the required signing policies for cosign image verification with rpm-ostree and bootc.\nhttps://blue-build.org/reference/modules/signing/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,89 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/systemd.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "systemd",
"description": "The systemd module streamlines the management of systemd units during image building.\nhttps://blue-build.org/reference/modules/systemd/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"system": {
"type": "object",
"properties": {
"enabled": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to enable. (runs on system boot)"
},
"disabled": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to disable. (does not run on system boot, unless another unit strictly requires it)"
},
"masked": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to mask. (does not run on system boot, under any circumstances)"
},
"unmasked": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to unmask. (runs on system boot, even if previously masked)"
}
},
"description": "System unit configuration."
},
"user": {
"type": "object",
"properties": {
"enabled": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to enable. (runs for the users)"
},
"disabled": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to disable. (does not run for the users, unless another unit strictly requires it)"
},
"masked": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to mask. (does not run for the users, under any circumstances)"
},
"unmasked": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to unmask. (runs for the users, even if previously masked)"
}
},
"description": "User unit configuration (with --global to make changes for all users)."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,89 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/systemd.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "systemd",
"description": "The systemd module streamlines the management of systemd units during image building.\nhttps://blue-build.org/reference/modules/systemd/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"system": {
"type": "object",
"properties": {
"enabled": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to enable. (runs on system boot)"
},
"disabled": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to disable. (does not run on system boot, unless another unit strictly requires it)"
},
"masked": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to mask. (does not run on system boot, under any circumstances)"
},
"unmasked": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to unmask. (runs on system boot, even if previously masked)"
}
},
"description": "System unit configuration."
},
"user": {
"type": "object",
"properties": {
"enabled": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to enable. (runs for the users)"
},
"disabled": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to disable. (does not run for the users, unless another unit strictly requires it)"
},
"masked": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to mask. (does not run for the users, under any circumstances)"
},
"unmasked": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of systemd units to unmask. (runs for the users, even if previously masked)"
}
},
"description": "User unit configuration (with --global to make changes for all users)."
}
},
"required": [
"type"
],
"additionalProperties": false
}

View file

@ -0,0 +1,37 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/yafti.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "yafti",
"description": "The yafti module can be used to install yafti and set it up to run on first boot.\nhttps://blue-build.org/reference/modules/yafti/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"custom-flatpaks": {
"type": "array",
"items": {
"$ref": "#/$defs/RecordString"
},
"description": "List of custom Flatpaks to inject to the default yafti.yml. Format is: `PrettyName: org.example.flatpak_id`"
}
},
"required": [
"type"
],
"additionalProperties": false,
"$defs": {
"RecordString": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "string"
}
}
}
}

View file

@ -0,0 +1,37 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/modules/yafti.json",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "yafti",
"description": "The yafti module can be used to install yafti and set it up to run on first boot.\nhttps://blue-build.org/reference/modules/yafti/"
},
"no-cache": {
"type": "boolean",
"default": false,
"description": "Whether to disabling caching for this layer.\nhttps://blue-build.org/reference/module/#no-cache-optional"
},
"custom-flatpaks": {
"type": "array",
"items": {
"$ref": "#/$defs/RecordString"
},
"description": "List of custom Flatpaks to inject to the default yafti.yml. Format is: `PrettyName: org.example.flatpak_id`"
}
},
"required": [
"type"
],
"additionalProperties": false,
"$defs": {
"RecordString": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "string"
}
}
}
}

View file

@ -0,0 +1,98 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "recipe-v1.json",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The image name. Used when publishing to GHCR as `ghcr.io/user/name`."
},
"description": {
"type": "string",
"description": "The image description. Published to GHCR in the image metadata."
},
"alt-tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Allows setting custom tags on the recipes final image.\nAdding tags to this property will override the `latest` and timestamp tags."
},
"base-image": {
"type": "string",
"description": "The [OCI](https://opencontainers.org/) image to base your custom image on.\nOnly atomic Fedora images and those based on them are officially supported.\nUniversal Blue is recommended. [A list of Universal Blue's images](https://universal-blue.org/images/) can be found on their website\nBlueBuild-built images can be used as well."
},
"image-version": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "The tag of the base image to build on.\nUsed to select a version explicitly (`40`) or to always use the latest stable version (`latest`).\nA list of all available tags can be viewed by pasting your `base-image` url into your browser."
},
"blue-build-tag": {
"type": "string",
"description": "The tag to pull for the bluebuild cli. This is mostly used for\ntrying out specific versions of the cli without compiling it locally."
},
"stages": {
"type": "array",
"items": {
"$ref": "#/$defs/StageEntry"
},
"description": "A list of [stages](https://blue-build.org/reference/stages/) that are executed before the build of the final image.\nThis is useful for compiling programs from source without polluting the final bootable image."
},
"modules": {
"type": "array",
"items": {
"$ref": "#/$defs/ModuleEntry"
},
"description": "A list of [modules](https://blue-build.org/reference/module/) that is executed in order. Multiple of the same module can be included.\n\nEach item in this list should have at least a `type:` or be specified to be included from an external file in the `recipes/` directory with `from-file:`."
}
},
"required": [
"name",
"description",
"base-image",
"image-version",
"modules"
],
"additionalProperties": false,
"$defs": {
"StageEntry": {
"anyOf": [
{
"$ref": "stage-v1.json"
},
{
"$ref": "#/$defs/ImportedModule"
}
]
},
"ModuleEntry": {
"anyOf": [
{
"$ref": "module-v1.json"
},
{
"$ref": "#/$defs/ImportedModule"
}
]
},
"ImportedModule": {
"type": "object",
"properties": {
"from-file": {
"type": "string",
"description": "The path to another file containing module configuration to import here.\nhttps://blue-build.org/how-to/multiple-files/"
}
},
"required": [
"from-file"
],
"additionalProperties": false
}
}
}

View file

@ -0,0 +1,29 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "stage-list-v1.json",
"type": "object",
"properties": {
"stages": {
"type": "array",
"items": {
"$ref": "#/$defs/StageEntry"
},
"description": "A list of [stages](https://blue-build.org/reference/stages/) that are executed before the build of the final image.\nThis is useful for compiling programs from source without polluting the final bootable image."
}
},
"required": [
"stages"
],
"$defs": {
"StageEntry": {
"anyOf": [
{
"$ref": "stage-v1.json"
},
{
"$ref": "import-v1.json"
}
]
}
}
}

View file

@ -0,0 +1,57 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "stage-v1.json",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the stage. This is used when referencing\nthe stage when using the from: property in the [`copy` module](https://blue-build.org/reference/modules/copy/)."
},
"from": {
"type": "string",
"description": "The full image ref (image name + tag). This will be set in the FROM statement of the stage."
},
"shell": {
"type": "string",
"description": "Allows a user to pass in an array of strings that are passed directly into the [`SHELL` instruction](https://docs.docker.com/reference/dockerfile/#shell)."
},
"modules": {
"type": "array",
"items": {
"$ref": "#/$defs/ModuleEntry"
},
"description": "The list of modules to execute. The exact same syntax used by the main recipe `modules:` property."
}
},
"required": [
"name",
"from",
"modules"
],
"additionalProperties": false,
"$defs": {
"ModuleEntry": {
"anyOf": [
{
"$ref": "module-v1.json"
},
{
"$ref": "#/$defs/ImportedModule"
}
]
},
"ImportedModule": {
"type": "object",
"properties": {
"from-file": {
"type": "string",
"description": "The path to another file containing module configuration to import here.\nhttps://blue-build.org/how-to/multiple-files/"
}
},
"required": [
"from-file"
],
"additionalProperties": false
}
}
}