117 lines
4.1 KiB
JSON
117 lines
4.1 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema",
|
|
"type": "object",
|
|
"properties": {
|
|
"requires": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"pattern": "^([a-zA-Z0-9.-_]+\\/)+",
|
|
"description": "Path to other configs, relative to this file (e.g. config/pkgs.yaml will expand to dirname(this_file)/config/pkgs.yaml)"
|
|
},
|
|
"description": "Imports for other config files that will be merged into this one. Precedence order is bottom up (i.e. lowest has highest precedence)"
|
|
},
|
|
"pkgs": {
|
|
"type": "object",
|
|
"description": "The packages to be installed",
|
|
"properties": {
|
|
"individual": {
|
|
"type:": "array",
|
|
"description": "the packages to be installed, by their package name",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"presets": {
|
|
"type": "array",
|
|
"maxItems": 1,
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"users": {
|
|
"type": "array",
|
|
"properties": {}
|
|
},
|
|
"boot": {
|
|
"type": "object",
|
|
"properties": {}
|
|
},
|
|
"themes": {
|
|
"type": "object",
|
|
"properties": {}
|
|
},
|
|
"git": {
|
|
"type": "object",
|
|
"description": "Options",
|
|
"properties": {
|
|
"creds": {
|
|
"type": "object",
|
|
"description": "Which git services to log into",
|
|
"properties": {
|
|
"ssh_cert": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"repos": {
|
|
"type": "array",
|
|
"description": "Which repos to clone (removing one from here doesn't delete it from the system and only pulls if folder does not exist)",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string",
|
|
"description": "git clone URL",
|
|
"pattern": "^(https?:\\/\\/([a-z0-9-]+\\.)+[a-z]+(\\/[a-zA-Z0-9-.]+)+)|(([a-z]+@[a-z0-9-]+\\.)+[a-z]+:([a-zA-Z0-9.-]+\\/)+[a-zA-Z0-9.-]+)"
|
|
},
|
|
"clone_path": {
|
|
"type": "string",
|
|
"description": "The location on the local system where to put it. Must be absolute path. Parent folders will be created if they don't exist",
|
|
"pattern": "^~?\\/([0-9a-zA-Z.-_]+\\/)*"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"template_data": {
|
|
"type": "array",
|
|
"description": "The data to be inserted into the templates",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name that appears in the template"
|
|
},
|
|
"data": {
|
|
"type": "string",
|
|
"description": "The data that is to be inserted"
|
|
}
|
|
},
|
|
"required": [
|
|
"properties",
|
|
"data"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"cmds": {
|
|
"type": "array",
|
|
"description": "Commands to run on first install",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"required": [
|
|
"pkgs",
|
|
"boot"
|
|
],
|
|
"additionalProperties": false
|
|
}
|