395 lines
18 KiB
JSON
395 lines
18 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",
|
|
"pattern": "^[a-z0-9-._]+(?=[a-z0-9]$)"
|
|
}
|
|
},
|
|
"repos": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reflector": {
|
|
"type": "object",
|
|
"description": "Use reflector to update the mirrors",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"interval": {
|
|
"type": "number",
|
|
"description": "The number of days to elapse between reflector reruns"
|
|
},
|
|
"countries": {
|
|
"type": "array",
|
|
"description": "The countries in which the should be located (only applies for the main arch repos)",
|
|
"items": {
|
|
"type": "string",
|
|
"pattern": "^[A-Z][a-z]*[a-z]$"
|
|
},
|
|
"maxItems": 5,
|
|
"minItems": 1
|
|
},
|
|
"count": {
|
|
"type": "number",
|
|
"description": "The number of mirrors to add to the list",
|
|
"maximum": 20,
|
|
"minimum": 3
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"bundles": {
|
|
"type": "array",
|
|
"description": "Bundled packages, installing all the recommended extra software for them (such as hyprland and nvim)",
|
|
"maxItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The bundle name",
|
|
"pattern": "^[a-z0-9-._]+(?=[a-z0-9]$)"
|
|
},
|
|
"ignored_pkgs": {
|
|
"type": "array",
|
|
"description": "List of packages from the bundle that should not be installed",
|
|
"items": {
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9-._]+(?=[a-z0-9]$)"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"name"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"boot": {
|
|
"type": "object",
|
|
"description": "Settings for the bootloader, such as theme, using os-prober, etc",
|
|
"properties": {
|
|
"managed": {
|
|
"type": "boolean",
|
|
"description": "Whether or not to manage the bootloader using archmgr"
|
|
},
|
|
"bootloader": {
|
|
"type": "string",
|
|
"description": "The bootloader to use (more coming eventually)",
|
|
"pattern": "^(grub)"
|
|
},
|
|
"esp_dir": {
|
|
"type": "string",
|
|
"description": "The directory for the bootloader files. Has to end in slash",
|
|
"pattern": "^(^(~|\\.|\\.\\.)?\\/)?([\\w\\/.-]+(?!.*[^\\w\\/.-]+))\\/$"
|
|
},
|
|
"theme_folder": {
|
|
"type": "string",
|
|
"description": "Where the folder for the theme is found. Can be relative to the config repo or file system and has to end in slash",
|
|
"pattern": "^(^(~|\\.|\\.\\.)?\\/)?([\\w\\/.-]+(?!.*[^\\w\\/.-]+))\\/$"
|
|
},
|
|
"os_prober": {
|
|
"type": "boolean",
|
|
"description": "Whether to enable OS prober to search for other operating systems"
|
|
},
|
|
"kernel_params": {
|
|
"type": "string",
|
|
"description": "The kernel arguments to pass in"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"managed"
|
|
]
|
|
},
|
|
"themes": {
|
|
"type": "object",
|
|
"properties": {
|
|
"gtk": {
|
|
"type": "string",
|
|
"description": "The GTK theme to use. To use the custom generated theme, set this to Adaptive-Theme and set the Qt theme to gtk3"
|
|
},
|
|
"qt": {
|
|
"type": "string",
|
|
"description": "The Qt theme to use. Write gtk3 to use the GTK theme instead",
|
|
"default": "gtk3"
|
|
},
|
|
"font": {
|
|
"type": "string",
|
|
"description": "The font (and size) to use for the interface. Needs to be installed to work",
|
|
"default": "Comfortaa 11"
|
|
},
|
|
"icon_theme": {
|
|
"type": "string",
|
|
"description": "Which icon theme to use. Needs to be installed to work"
|
|
},
|
|
"cursor_theme": {
|
|
"type": "string",
|
|
"description": "The cursor to use. Needs to be installed to work"
|
|
},
|
|
"selected_custom_theme_color": {
|
|
"type": "string",
|
|
"description": "The custom theme color to use. archmgr comes with 5 defaults than can be used without custom_theme_colors defined",
|
|
"pattern": "^(nordic|deep-dark|material|light|bright|.*)"
|
|
},
|
|
"color_source": {
|
|
"type": "string",
|
|
"description": "Where to get the colours from",
|
|
"pattern": "^(wallpaper|default)",
|
|
"default": "wallpaper"
|
|
},
|
|
"wallpaper": {
|
|
"type": "string",
|
|
"description": "Path to the wallpaper to use. If supported by manager for wallpaper, can also be folder. Please note that in that case the theme colours will fall back to the default values and will not use the wallpaper"
|
|
},
|
|
"custom_theme_colors": {
|
|
"type": "array",
|
|
"description": "Templates for a custom theme.",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name of the color theme. This can be used as the"
|
|
},
|
|
"base": {
|
|
"type": "string",
|
|
"description": "The name of the custom_theme to base it off of. Defaults to deep-dark, which is a default theme provided by archmgr",
|
|
"default": "deep-dark"
|
|
},
|
|
"variables": {
|
|
"type": "object",
|
|
"description": "The definition of the colors and other variables that override any set in template_data if present there",
|
|
"properties": {
|
|
"color-fore-primary": {
|
|
"type": "string"
|
|
},
|
|
"color-fore-accent-1": {
|
|
"type": "string"
|
|
},
|
|
"color-fore-accent-2": {
|
|
"type": "string"
|
|
},
|
|
"color-fore-accent-3": {
|
|
"type": "string"
|
|
},
|
|
"color-back-primary": {
|
|
"type": "string"
|
|
},
|
|
"color-back-accent-1": {
|
|
"type": "string"
|
|
},
|
|
"color-back-accent-2": {
|
|
"type": "string"
|
|
},
|
|
"color-shadow": {
|
|
"type": "string"
|
|
},
|
|
"color-fore-inactive": {
|
|
"type": "string"
|
|
},
|
|
"color-back-inactive": {
|
|
"type": "string"
|
|
},
|
|
"font-primary": {
|
|
"type": "string"
|
|
},
|
|
"font-accent": {
|
|
"type": "string"
|
|
},
|
|
"font-mono": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"git": {
|
|
"type": "object",
|
|
"description": "Automatically set up credential manager and clone repos",
|
|
"properties": {
|
|
"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 (ssh or HTTP(S))",
|
|
"pattern": "^((https?):\\/\\/(([a-z0-9-]+)((?=\\.))\\.)+[a-z]+(?=\\/)\\/([\\w\\-?.=]+(?=\\/[\\w\\-?.=])\\/)*([\\w\\-?&.=\\/]+(?=[\\w\\-.=\\/]$)))|([a-zA-Z0-9\\-._]+(?=[a-zA-Z0-9])[a-zA-Z0-9])@(([a-z0-9\\-]+(?=\\.))\\.)+[a-z]+(?=:):([a-zA-Z0-9\\-._]+(?=\\/)\\/)+([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": "^(^(~|\\.|\\.\\.)?\\/)?([\\w\\/.-]+(?!.*[^\\w\\/.-]+))\\/$"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"url",
|
|
"clone_path"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"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": [
|
|
"name",
|
|
"data"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"symlinks": {
|
|
"type": "array",
|
|
"description": "Symlinks to create",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"destination": {
|
|
"type": "string",
|
|
"description": "The directory the link should point to",
|
|
"pattern": "^(^(~|\\.|\\.\\.)?\\/)?([\\w\\/.-]+(?!.*[^\\w\\/.-]+))"
|
|
},
|
|
"location": {
|
|
"type": "string",
|
|
"description": "What to call the link",
|
|
"pattern": "^(^(~|\\.|\\.\\.)?\\/)?([\\w\\/.-]+(?!.*[^\\w\\/.-]+))"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"cmds": {
|
|
"type": "object",
|
|
"properties": {
|
|
"once": {
|
|
"type": "array",
|
|
"description": "Commands to run on only once (uses the name property to determine if it needs to run)",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "This name is used to track if a command was run before."
|
|
},
|
|
"cmd": {
|
|
"type": "string"
|
|
},
|
|
"hook": {
|
|
"type": "string",
|
|
"description": "Where in the execution of archmgr to run",
|
|
"default": "end",
|
|
"pattern": "^(pre-pkg|post-pkg|pre-git|post-git|end)"
|
|
},
|
|
"user": {
|
|
"type": "string",
|
|
"default": "root",
|
|
"pattern": "^[a-zA-Z0-9\\-._]{2,19}(?=[a-zA-Z0-9]$)",
|
|
"description": "The user to run as. Be aware that only the current user's password is available, unless capture_output is set to false"
|
|
},
|
|
"capture_output": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Whether or not to hide the output from the user"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"name",
|
|
"cmd"
|
|
]
|
|
}
|
|
},
|
|
"always": {
|
|
"type": "array",
|
|
"description": "Commands to run on each apply",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Used to indicate to user what command is executing. If omitted, will be truncated cmd"
|
|
},
|
|
"cmd": {
|
|
"type": "string"
|
|
},
|
|
"hook": {
|
|
"type": "string",
|
|
"description": "Where in the execution of archmgr to run",
|
|
"default": "end",
|
|
"pattern": "^(pre-pkg|post-pkg|pre-git|post-git|end)"
|
|
},
|
|
"user": {
|
|
"type": "string",
|
|
"default": "root",
|
|
"pattern": "^[a-zA-Z0-9\\-._]{2,19}(?=[a-zA-Z0-9]$)",
|
|
"description": "The user to run as. Be aware that only the current user's password is available, unless capture_output is set to false"
|
|
},
|
|
"capture_output": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Whether or not to hide the output from the user"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": [
|
|
"pkgs",
|
|
"boot"
|
|
],
|
|
"additionalProperties": false
|
|
}
|