2017-03-06 07:32:34 -05:00
<?xml version="1.0" encoding="UTF-8" ?>
2017-01-31 08:09:49 -05:00
<xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" >
2017-03-06 07:32:34 -05:00
<xs:element name= "aif" > <!-- the defined root element -->
2017-01-31 08:09:49 -05:00
<!-- BEGIN STORAGE -->
<xs:element name= "storage" > <!-- storage media related things. -->
<xs:element name= "disk" > <!-- a disk device. -->
2017-03-06 07:32:34 -05:00
<xs:element name= "type" /> <!-- gpt, bios, etc. -->
<xs:element name= "name" /> <!-- device, e.g. 'sda' -->
2017-01-31 08:09:49 -05:00
<xs:element name= "part" > <!-- define a partition -->
<xs:element name= "num" /> <!-- partition number -->
<xs:element name= "name" /> <!-- the filesystem or partition label. optional. -->
<xs:element name= "size" /> <!-- the size of the partition. can be e.g.: #G,#K, etc. or #%. -->
<xs:element name= "fstype" /> <!-- the filesystem to format as. see the gdisk filesystem types: http://www.rodsbooks.com/gdisk/walkthrough.html -->
</xs:element>
</xs:element>
<xs:element name= "mount" > <!-- mountpoint -->
2017-03-06 11:35:17 -05:00
<xs:element name= "order" /> <!-- optional. the "weight" to give this mount point. -->
2017-01-31 08:09:49 -05:00
<xs:element name= "source" /> <!-- the device to mount, e.g. /dev/sda1 -->
<xs:element name= "mountpt" /> <!-- where to mount, e.g. /boot -->
<xs:element name= "type" /> <!-- the filesystem type. optional; should normally be auto - detected. -->
<xs:element name= "options" /> <!-- other mount options. optional. -->
</xs:element>
</xs:element>
<!-- END STORAGE -->
<!-- BEGIN NETWORK -->
<xs:element name= "network" >
2017-03-06 08:30:31 -05:00
<xs:element name= "iface" > <!-- an interface -->
<xs:element name= "device" /> <!-- the interface name, e.g. 'enp3s0'. if set to 'auto', use the first ethernet device we find. -->
2017-01-31 08:09:49 -05:00
<xs:element name= "addressing" /> <!-- i.e. 'dhcp', 'static', etc. -->
2017-03-06 07:32:34 -05:00
<xs:element name= "ipaddr" /> <!-- the IP address and netmask to assign if set as static. -->
2017-01-31 08:09:49 -05:00
</xs:element>
<xs:element name= "hostname" /> <!-- the hostname for the install. highly recommended to be a FQDN. -->
</xs:element>
<!-- END NETWORK -->
<!-- BEGIN SYSTEM -->
<xs:element name= "system" > <!-- system - related configuration. -->
<xs:element name= "timezone" /> <!-- the timezone for the system. must be valid timezone, case - sensitive. -->
<xs:element name= "locale" /> <!-- the locale. must be valid locale, case - sensitive. -->
<xs:element name= "kbdlayout" /> <!-- the keyboard layout for vconsole. optional. -->
</xs:element>
<!-- END SYSTEM -->
<!-- BEGIN USER -->
<xs:element name= "user" >
2017-03-06 07:32:34 -05:00
<xs:element name= "root" > <!-- the root user. -->
<xs:element name= "password" /> <!-- the HASHED AND SALTED version of the password. if blank, password will be blank. if not defined, account will be locked. -->
</xs:element>
<xs:element name= "regusr" > <!-- a regular user -->
<xs:element name= "username" /> <!-- the username -->
<xs:element name= "homedir" > <!-- the home directory -->
<xs:element name= "path" /> <!-- the path for the user's homedir. /home/USERNAME if not defined. -->
<xs:element name= "create" /> <!-- create the user's homedir. boolean. default is yes. -->
</xs:element>
<xs:element name= "group" /> <!-- the user's primary group. optional; if not specified, one will be created that matches the username. -->
2017-03-06 08:30:31 -05:00
<xs:element name= "xgroup" > <!-- an extra group to add the user to. -->
<xs:element name= "name" /> <!-- the name of the group -->
</xs:element>
2017-03-06 07:32:34 -05:00
<xs:element name= "password" /> <!-- see user/root/password -->
<xs:element name= "comment" /> <!-- the description of the user. optional. -->
<xs:element name= "sudo" /> <!-- whether or not to give the user FULL sudo privileges. boolean. no if unspecified. -->
</xs:element>
2017-01-31 08:09:49 -05:00
</xs:element>
<!-- END USER -->
<!-- BEGIN PACMAN -->
2017-03-06 07:32:34 -05:00
<xs:element name= "pacman" > <!-- core pacman settings -->
2017-01-31 08:09:49 -05:00
<!-- BEGIN REPOS -->
2017-03-06 07:32:34 -05:00
<xs:element name= "repos" > <!-- define which repos, or "branches", are enabled. -->
<xs:element name= "core" > <!-- "[core]" -->
<xs:element name= "status" /> <!-- one of "enabled" or "disabled". assume enabled by default. -->
<xs:element name= "mirror" /> <!-- the URI for the mirror for the repo, or an Include directive. -->
</xs:element>
<xs:element name= "extra" > <!-- "[extra]" -->
<xs:element name= "status" /> <!-- one of "enabled" or "disabled". assume enabled by default. -->
<xs:element name= "mirror" /> <!-- the URI for the mirror for the repo, or an Include directive. -->
</xs:element>
<xs:element name= "community" > <!-- "[community]" -->
<xs:element name= "status" /> <!-- one of "enabled" or "disabled". assume enabled by default. -->
<xs:element name= "mirror" /> <!-- the URI for the mirror for the repo, or an Include directive. -->
</xs:element>
<xs:element name= "multilib" > <!-- "[multilib]" -->
<xs:element name= "status" /> <!-- one of "enabled" or "disabled". assume disabled by default. -->
<xs:element name= "mirror" /> <!-- the URI for the mirror for the repo, or an Include directive. -->
</xs:element>
<xs:element name= "testing" > <!-- "[testing]" -->
<xs:element name= "status" /> <!-- one of "enabled" or "disabled". assume disabled by default. -->
<xs:element name= "mirror" /> <!-- the URI for the mirror for the repo, or an Include directive. -->
</xs:element>
<xs:element name= "multilib-testing" > <!-- "[multilib - testing]" -->
<xs:element name= "status" /> <!-- one of "enabled" or "disabled". assume disabled by default. -->
<xs:element name= "mirror" /> <!-- the URI for the mirror for the repo, or an Include directive. -->
</xs:element>
2017-03-06 08:30:31 -05:00
<xs:element name= "custom" > <!-- "[custom]" -->
<xs:element name= "name" /> <!-- whatever the repository's name should be per the repo. can specify multiple of these. -->
2017-03-06 07:32:34 -05:00
<xs:element name= "status" /> <!-- one of "enabled" or "disabled". assume disabled by default. -->
<xs:element name= "siglevel" /> <!-- the siglevel. one element specified per additional trust level. if none provided, default is "Optional" and "TrustAll". -->
<xs:element name= "mirror" /> <!-- the URI for the mirror for the repo, or an Include directive. -->
</xs:element>
</xs:element>
<xs:element name= "mirrorlist" >
<xs:element name= "mirror" /> <!-- a URI to generate a mirrorlist, if we're using a custom entry. multiple of these can be specified. -->
</xs:element>
2017-01-31 08:09:49 -05:00
<!-- END REPOS -->
<!-- BEGIN SOFTWARE BASE -->
2017-03-06 07:32:34 -05:00
<xs:element name= "software" > <!-- packages considered *required*. these will be installed first/early on. -->
<xs:element name= "package" > <!-- a package item -->
<xs:element name= "name" /> <!-- the name of the package. -->
<xs:element name= "repo" /> <!-- optional. the repo to install the package from. MUST BE ENABLED IN THE REPOS ELEMENT TREE. -->
<xs:element name= "version" /> <!-- optional, and most likely will never need it. a version specification, like ">1.0.1" or "<3.0.3". -->
</xs:element>
</xs:element>
2017-01-31 08:09:49 -05:00
<!-- END SOFTWARE BASE -->
<!-- BEGIN EXTRA PACKAGES -->
2017-03-06 07:32:34 -05:00
<xs:element name= "xsoftware" > <!-- packages considered "extra. these will be installed later, and are considered non - fatal if they fail install. -->
<xs:element name= "package" > <!-- a package item -->
<xs:element name= "name" /> <!-- the name of the package. -->
<xs:element name= "repo" /> <!-- optional. the repo to install the package from. MUST BE ENABLED IN THE REPOS ELEMENT TREE. -->
<xs:element name= "version" /> <!-- optional, and most likely will never need it. a version specification, like ">1.0.1" or "<3.0.3". -->
</xs:element>
</xs:element>
2017-01-31 08:09:49 -05:00
<!-- END EXTRA PACKAGES -->
2017-03-06 07:32:34 -05:00
</xs:element>
2017-01-31 08:09:49 -05:00
<!-- END PACMAN -->
2017-03-06 07:32:34 -05:00
<!-- BEGIN BOOTLOADER -->
<xs:element name= "bootloader" >
<xs:element name= "type" /> <!-- the type of bootloader. one of "grub", "lilo", "syslinux"... -->
2017-03-06 11:35:17 -05:00
<xs:element name= "efi" /> <!-- boolean. UEFI support. if false, strictly MBR. -->
<xs:element name= "where" /> <!-- if efi is true, the mountpoint for the ESP (from within the chroot). if false, the device (or partition) to install the bootloader on. -->
2017-03-06 07:32:34 -05:00
</xs:element>
<!-- END BOOTLOADER -->
2017-01-31 08:09:49 -05:00
2017-03-06 07:32:34 -05:00
<!-- BEGIN CUSTOM SCRIPT -->
2017-03-06 11:35:17 -05:00
<xs:element name= "scripts" >
<xs:element name= "script" >
<xs:element name= "uri" /> <!-- a URI where to find the file. http://, https://, ftp://, file://, etc. -->
<xs:element name= "lang" /> <!-- optional. the language of the script. "bash", "python3", "python2", "awk" (if you're insane), etc. -->
</xs:element>
</xs:element>
2017-03-06 07:32:34 -05:00
<!-- END CUSTOM SCRIPT -->
</xs:element>
</xs:schema>