{ "$comment": "Based on doc/auto_storage.md", "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "https://github.com/agama-project/agama/blob/master/rust/share/storage.schema.json", "title": "Config", "description": "Storage config.", "type": "object", "additionalProperties": false, "properties": { "boot": { "$ref": "#/$defs/boot" }, "drives": { "description": "Drives (disks, BIOS RAIDs and multipath devices).", "type": "array", "items": { "$ref": "#/$defs/driveElement" } }, "volumeGroups": { "description": "LVM volume groups.", "type": "array", "items": { "$ref": "#/$defs/volumeGroup" } }, "mdRaids": { "description": "MD RAIDs.", "type": "array", "items": { "$ref": "#/$defs/mdRaidElement" } } }, "$defs": { "boot": { "description": "Allows configuring boot partitions automatically.", "type": "object", "additionalProperties": false, "required": ["configure"], "properties": { "configure": { "description": "Whether to configure partitions for booting.", "type": "boolean" }, "device": { "$ref": "#/$defs/alias" } } }, "driveElement": { "anyOf": [ { "$ref": "#/$defs/nonPartitionedDrive" }, { "$ref": "#/$defs/partitionedDrive" } ] }, "nonPartitionedDrive": { "description": "Drive without a partition table (e.g., directly formatted).", "type": "object", "additionalProperties": false, "properties": { "search": { "$ref": "#/$defs/driveSearch" }, "alias": { "$ref": "#/$defs/alias" }, "encryption": { "$ref": "#/$defs/encryption" }, "filesystem": { "$ref": "#/$defs/filesystem" } } }, "partitionedDrive": { "type": "object", "additionalProperties": false, "required": ["partitions"], "properties": { "search": { "$ref": "#/$defs/driveSearch" }, "alias": { "$ref": "#/$defs/alias" }, "ptableType": { "$ref": "#/$defs/ptableType" }, "partitions": { "type": "array", "items": { "$ref": "#/$defs/partitionElement" } } } }, "mdRaidElement": { "anyOf": [ { "$ref": "#/$defs/nonPartitionedMdRaid" }, { "$ref": "#/$defs/partitionedMdRaid" } ] }, "nonPartitionedMdRaid": { "description": "MD RAID without a partition table (e.g., directly formatted).", "type": "object", "additionalProperties": false, "properties": { "search": { "$ref": "#/$defs/mdRaidSearch" }, "alias": { "$ref": "#/$defs/alias" }, "name": { "$ref": "#/$defs/baseName" }, "level": { "$ref": "#/$defs/mdRaidLevel" }, "parity": { "$ref": "#/$defs/mdRaidParity" }, "chunkSize": { "$ref": "#/$defs/sizeValue" }, "devices": { "$ref": "#/$defs/mdRaidDevices" }, "encryption": { "$ref": "#/$defs/encryption" }, "filesystem": { "$ref": "#/$defs/filesystem" } } }, "partitionedMdRaid": { "type": "object", "additionalProperties": false, "required": ["partitions"], "properties": { "search": { "$ref": "#/$defs/mdRaidSearch" }, "alias": { "$ref": "#/$defs/alias" }, "name": { "$ref": "#/$defs/baseName" }, "level": { "$ref": "#/$defs/mdRaidLevel" }, "parity": { "$ref": "#/$defs/mdRaidParity" }, "chunkSize": { "$ref": "#/$defs/sizeValue" }, "devices": { "$ref": "#/$defs/mdRaidDevices" }, "ptableType": { "$ref": "#/$defs/ptableType" }, "partitions": { "type": "array", "items": { "$ref": "#/$defs/partitionElement" } } } }, "mdRaidLevel": { "title": "MD level", "enum": [ "raid0", "raid1", "raid5", "raid6", "raid10" ] }, "mdRaidParity": { "title": "MD parity", "description": "Only applies to raid5, raid6 and raid10", "enum": [ "left_asymmetric", "left_symmetric", "right_asymmetric", "right_symmetric", "first", "last", "near_2", "offset_2", "far_2", "near_3", "offset_3", "far_3" ] }, "mdRaidDevices": { "description": "Devices used by the MD RAID.", "type": "array", "items": { "$ref": "#/$defs/alias" } }, "ptableType": { "description": "Partition table type.", "$comment": "The partition table is created only if all the current partitions are deleted.", "enum": ["gpt", "msdos", "dasd"] }, "partitionElement": { "anyOf": [ { "$ref": "#/$defs/simpleVolumesGenerator" }, { "$ref": "#/$defs/advancedPartitionsGenerator" }, { "$ref": "#/$defs/regularPartition" }, { "$ref": "#/$defs/partitionToDelete" }, { "$ref": "#/$defs/partitionToDeleteIfNeeded" } ] }, "simpleVolumesGenerator": { "description": "Automatically creates the default or mandatory volumes configured by the selected product.", "type": "object", "additionalProperties": false, "required": ["generate"], "properties": { "generate": { "enum": ["default", "mandatory"] } } }, "advancedPartitionsGenerator": { "description": "Creates the default or mandatory partitions configured by the selected product.", "type": "object", "additionalProperties": false, "required": ["generate"], "properties": { "generate": { "type": "object", "additionalProperties": false, "required": ["partitions"], "properties": { "partitions": { "enum": ["default", "mandatory"] }, "encryption": { "$ref": "#/$defs/encryption" } } } } }, "regularPartition": { "type": "object", "additionalProperties": false, "properties": { "search": { "$ref": "#/$defs/partitionSearch" }, "alias": { "$ref": "#/$defs/alias" }, "id": { "title": "Partition id", "enum": [ "linux", "swap", "lvm", "raid", "esp", "prep", "bios_boot" ] }, "size": { "$ref": "#/$defs/size" }, "encryption": { "$ref": "#/$defs/encryption" }, "filesystem": { "$ref": "#/$defs/filesystem" } } }, "partitionToDelete": { "type": "object", "additionalProperties": false, "required": ["delete", "search"], "properties": { "search": { "$ref": "#/$defs/deletePartitionSearch" }, "delete": { "description": "Delete the partition.", "const": true } } }, "partitionToDeleteIfNeeded": { "type": "object", "additionalProperties": false, "required": ["deleteIfNeeded", "search"], "properties": { "search": { "$ref": "#/$defs/deletePartitionSearch" }, "deleteIfNeeded": { "description": "Delete the partition if needed to make space.", "const": true }, "size": { "$ref": "#/$defs/size" } } }, "volumeGroup": { "description": "LVM volume group.", "type": "object", "additionalProperties": false, "required": ["name"], "properties": { "name": { "$ref": "#/$defs/baseName" }, "search": { "$ref": "#/$defs/volumeGroupSearch" }, "extentSize": { "$ref": "#/$defs/sizeValue" }, "physicalVolumes": { "description": "Devices to use as physical volumes.", "type": "array", "items": { "$ref": "#/$defs/physicalVolumeElement" } }, "logicalVolumes": { "type": "array", "items": { "$ref": "#/$defs/logicalVolumeElement" } } } }, "physicalVolumeElement": { "anyOf": [ { "$ref": "#/$defs/alias" }, { "$ref": "#/$defs/simplePhysicalVolumesGenerator" }, { "$ref": "#/$defs/advancedPhysicalVolumesGenerator" } ] }, "simplePhysicalVolumesGenerator": { "description": "Automatically creates the needed physical volumes in the indicated devices.", "type": "object", "additionalProperties": false, "required": ["generate"], "properties": { "generate": { "type": "array", "items": { "$ref": "#/$defs/alias" } } } }, "advancedPhysicalVolumesGenerator": { "description": "Automatically creates the needed physical volumes in the indicated devices.", "type": "object", "additionalProperties": false, "required": ["generate"], "properties": { "generate": { "type": "object", "additionalProperties": false, "required": ["targetDevices"], "properties": { "targetDevices": { "type": "array", "items": { "$ref": "#/$defs/alias" } }, "spacePolicy": { "description": "Policy for creating physical volumes: either using all the available space or only the needed space for allocating the logical volumes.", "enum": ["useNeeded", "useAvailable"], "default": "useNeeded" }, "encryption": { "$ref": "#/$defs/encryption" } } } } }, "logicalVolumeElement": { "anyOf": [ { "$ref": "#/$defs/simpleVolumesGenerator" }, { "$ref": "#/$defs/advancedLogicalVolumesGenerator" }, { "$ref": "#/$defs/logicalVolume" }, { "$ref": "#/$defs/thinPoolLogicalVolume" }, { "$ref": "#/$defs/thinLogicalVolume" }, { "$ref": "#/$defs/logicalVolumeToDelete" }, { "$ref": "#/$defs/logicalVolumeToDeleteIfNeeded" } ] }, "advancedLogicalVolumesGenerator": { "description": "Automatically creates the default or mandatory logical volumes configured by the selected product.", "type": "object", "additionalProperties": false, "required": ["generate"], "properties": { "generate": { "type": "object", "additionalProperties": false, "required": ["logicalVolumes"], "properties": { "logicalVolumes": { "enum": ["default", "mandatory"] }, "encryption": { "$ref": "#/$defs/encryption" }, "stripes": { "$ref": "#/$defs/logicalVolumeStripes" }, "stripeSize": { "$ref": "#/$defs/sizeValue" } } } } }, "logicalVolume": { "type": "object", "additionalProperties": false, "properties": { "name": { "$ref": "#/$defs/baseName" }, "search": { "$ref": "#/$defs/logicalVolumeSearch" }, "size": { "$ref": "#/$defs/size" }, "stripes": { "$ref": "#/$defs/logicalVolumeStripes" }, "stripeSize": { "$ref": "#/$defs/sizeValue" }, "encryption": { "$ref": "#/$defs/encryption" }, "filesystem": { "$ref": "#/$defs/filesystem" } } }, "thinPoolLogicalVolume": { "type": "object", "additionalProperties": false, "required": ["pool"], "properties": { "pool": { "description": "LVM thin pool.", "const": true }, "alias": { "$ref": "#/$defs/alias" }, "name": { "$ref": "#/$defs/baseName" }, "size": { "$ref": "#/$defs/size" }, "stripes": { "$ref": "#/$defs/logicalVolumeStripes" }, "stripeSize": { "$ref": "#/$defs/sizeValue" }, "encryption": { "$ref": "#/$defs/encryption" } } }, "thinLogicalVolume": { "type": "object", "additionalProperties": false, "required": ["usedPool"], "properties": { "name": { "$ref": "#/$defs/baseName" }, "size": { "$ref": "#/$defs/size" }, "usedPool": { "$ref": "#/$defs/alias" }, "encryption": { "$ref": "#/$defs/encryption" }, "filesystem": { "$ref": "#/$defs/filesystem" } } }, "logicalVolumeToDelete": { "type": "object", "additionalProperties": false, "required": ["delete", "search"], "properties": { "search": { "$ref": "#/$defs/deleteLogicalVolumeSearch" }, "delete": { "description": "Delete the logical volume.", "const": true } } }, "logicalVolumeToDeleteIfNeeded": { "type": "object", "additionalProperties": false, "required": ["deleteIfNeeded", "search"], "properties": { "search": { "$ref": "#/$defs/deleteLogicalVolumeSearch" }, "deleteIfNeeded": { "description": "Delete the logical volume if needed to make space.", "const": true }, "size": { "$ref": "#/$defs/size" } } }, "logicalVolumeStripes": { "description": "Number of stripes.", "type": "integer", "minimum": 1, "maximum": 128 }, "searchSortCriterionOrder": { "description": "Direction of sorting at the search results", "enum": ["asc", "desc"] }, "driveSearch": { "anyOf": [ { "$ref": "#/$defs/searchAll" }, { "$ref": "#/$defs/searchName" }, { "$ref": "#/$defs/driveAdvancedSearch" } ] }, "driveAdvancedSearch": { "type": "object", "additionalProperties": false, "properties": { "condition": { "$ref": "#/$defs/driveSearchCondition" }, "sort": { "$ref": "#/$defs/driveSearchSort" }, "max": { "$ref": "#/$defs/searchMax" }, "ifNotFound": { "$ref": "#/$defs/searchActions" } } }, "driveSearchCondition": { "anyOf": [ { "$ref": "#/$defs/searchConditionName" }, { "$ref": "#/$defs/searchConditionSize" } ] }, "driveSearchSort": { "anyOf": [ { "$ref": "#/$defs/driveSearchSortCriterion" }, { "type": "array", "items": { "$ref": "#/$defs/driveSearchSortCriterion" } } ] }, "driveSearchSortCriterion": { "anyOf": [ { "$ref": "#/$defs/driveSearchSortCriterionShort" }, { "$ref": "#/$defs/driveSearchSortCriterionFull" } ] }, "driveSearchSortCriterionShort": { "enum": ["name", "size"] }, "driveSearchSortCriterionFull": { "type": "object", "additionalProperties": false, "properties": { "name": { "$ref": "#/$defs/searchSortCriterionOrder" }, "size": { "$ref": "#/$defs/searchSortCriterionOrder" } }, "minProperties": 1, "maxProperties": 1 }, "mdRaidSearch": { "anyOf": [ { "$ref": "#/$defs/searchAll" }, { "$ref": "#/$defs/searchName" }, { "$ref": "#/$defs/mdRaidAdvancedSearch" } ] }, "mdRaidAdvancedSearch": { "type": "object", "additionalProperties": false, "properties": { "condition": { "$ref": "#/$defs/mdRaidSearchCondition" }, "sort": { "$ref": "#/$defs/mdRaidSearchSort" }, "max": { "$ref": "#/$defs/searchMax" }, "ifNotFound": { "$ref": "#/$defs/searchCreatableActions" } } }, "mdRaidSearchCondition": { "anyOf": [ { "$ref": "#/$defs/searchConditionName" }, { "$ref": "#/$defs/searchConditionSize" } ] }, "mdRaidSearchSort": { "anyOf": [ { "$ref": "#/$defs/mdRaidSearchSortCriterion" }, { "type": "array", "items": { "$ref": "#/$defs/mdRaidSearchSortCriterion" } } ] }, "mdRaidSearchSortCriterion": { "anyOf": [ { "$ref": "#/$defs/mdRaidSearchSortCriterionShort" }, { "$ref": "#/$defs/mdRaidSearchSortCriterionFull" } ] }, "mdRaidSearchSortCriterionShort": { "enum": ["name", "size"] }, "mdRaidSearchSortCriterionFull": { "type": "object", "additionalProperties": false, "properties": { "name": { "$ref": "#/$defs/searchSortCriterionOrder" }, "size": { "$ref": "#/$defs/searchSortCriterionOrder" } }, "minProperties": 1, "maxProperties": 1 }, "volumeGroupSearch": { "anyOf": [ { "$ref": "#/$defs/searchAll" }, { "$ref": "#/$defs/searchName" }, { "$ref": "#/$defs/volumeGroupAdvancedSearch" } ] }, "volumeGroupAdvancedSearch": { "type": "object", "additionalProperties": false, "properties": { "condition": { "$ref": "#/$defs/volumeGroupSearchCondition" }, "sort": { "$ref": "#/$defs/volumeGroupSearchSort" }, "max": { "$ref": "#/$defs/searchMax" }, "ifNotFound": { "$ref": "#/$defs/searchCreatableActions" } } }, "volumeGroupSearchCondition": { "anyOf": [ { "$ref": "#/$defs/searchConditionName" }, { "$ref": "#/$defs/searchConditionSize" } ] }, "volumeGroupSearchSort": { "anyOf": [ { "$ref": "#/$defs/volumeGroupSearchSortCriterion" }, { "type": "array", "items": { "$ref": "#/$defs/volumeGroupSearchSortCriterion" } } ] }, "volumeGroupSearchSortCriterion": { "anyOf": [ { "$ref": "#/$defs/volumeGroupSearchSortCriterionShort" }, { "$ref": "#/$defs/volumeGroupSearchSortCriterionFull" } ] }, "volumeGroupSearchSortCriterionShort": { "enum": ["name", "size"] }, "volumeGroupSearchSortCriterionFull": { "type": "object", "additionalProperties": false, "properties": { "name": { "$ref": "#/$defs/searchSortCriterionOrder" }, "size": { "$ref": "#/$defs/searchSortCriterionOrder" } }, "minProperties": 1, "maxProperties": 1 }, "partitionSearch": { "anyOf": [ { "$ref": "#/$defs/searchAll" }, { "$ref": "#/$defs/searchName" }, { "$ref": "#/$defs/partitionAdvancedSearch" } ] }, "partitionAdvancedSearch": { "type": "object", "additionalProperties": false, "properties": { "condition": { "$ref": "#/$defs/partitionSearchCondition" }, "sort": { "$ref": "#/$defs/partitionSearchSort" }, "max": { "$ref": "#/$defs/searchMax" }, "ifNotFound": { "$ref": "#/$defs/searchCreatableActions" } } }, "deletePartitionSearch": { "anyOf": [ { "$ref": "#/$defs/searchAll" }, { "$ref": "#/$defs/searchName" }, { "$ref": "#/$defs/deletePartitionAdvancedSearch" } ] }, "deletePartitionAdvancedSearch": { "type": "object", "additionalProperties": false, "properties": { "condition": { "$ref": "#/$defs/partitionSearchCondition" }, "sort": { "$ref": "#/$defs/partitionSearchSort" }, "max": { "$ref": "#/$defs/searchMax" }, "ifNotFound": { "$ref": "#/$defs/searchActions" } } }, "partitionSearchCondition": { "anyOf": [ { "$ref": "#/$defs/searchConditionName" }, { "$ref": "#/$defs/searchConditionSize" }, { "$ref": "#/$defs/searchConditionPartitionNumber" } ] }, "logicalVolumeSearch": { "anyOf": [ { "$ref": "#/$defs/searchAll" }, { "$ref": "#/$defs/searchName" }, { "$ref": "#/$defs/logicalVolumeAdvancedSearch" } ] }, "logicalVolumeAdvancedSearch": { "type": "object", "additionalProperties": false, "properties": { "condition": { "$ref": "#/$defs/logicalVolumeSearchCondition" }, "sort": { "$ref": "#/$defs/logicalVolumeSearchSort" }, "max": { "$ref": "#/$defs/searchMax" }, "ifNotFound": { "$ref": "#/$defs/searchCreatableActions" } } }, "deleteLogicalVolumeSearch": { "anyOf": [ { "$ref": "#/$defs/searchAll" }, { "$ref": "#/$defs/searchName" }, { "$ref": "#/$defs/deleteLogicalVolumeAdvancedSearch" } ] }, "deleteLogicalVolumeAdvancedSearch": { "type": "object", "additionalProperties": false, "properties": { "condition": { "$ref": "#/$defs/logicalVolumeSearchCondition" }, "sort": { "$ref": "#/$defs/logicalVolumeSearchSort" }, "max": { "$ref": "#/$defs/searchMax" }, "ifNotFound": { "$ref": "#/$defs/searchActions" } } }, "logicalVolumeSearchCondition": { "anyOf": [ { "$ref": "#/$defs/searchConditionName" }, { "$ref": "#/$defs/searchConditionSize" } ] }, "searchConditionName": { "type": "object", "additionalProperties": false, "required": ["name"], "properties": { "name": { "$ref": "#/$defs/searchName" } } }, "searchConditionSize": { "type": "object", "additionalProperties": false, "required": ["size"], "properties": { "size": { "anyOf": [ { "$ref": "#/$defs/sizeValue" }, { "$ref": "#/$defs/searchConditionSizeEqual" }, { "$ref": "#/$defs/searchConditionSizeGreater" }, { "$ref": "#/$defs/searchConditionSizeLess" } ] } } }, "searchConditionSizeEqual": { "type": "object", "additionalProperties": false, "required": ["equal"], "properties": { "equal": { "$ref": "#/$defs/sizeValue" } } }, "searchConditionSizeGreater": { "type": "object", "additionalProperties": false, "required": ["greater"], "properties": { "greater": { "$ref": "#/$defs/sizeValue" } } }, "searchConditionSizeLess": { "type": "object", "additionalProperties": false, "required": ["less"], "properties": { "less": { "$ref": "#/$defs/sizeValue" } } }, "searchConditionPartitionNumber": { "type": "object", "additionalProperties": false, "required": ["number"], "properties": { "number": { "description": "Partition number (e.g., 1 for vda1).", "type": "integer", "minimum": 1 } } }, "partitionSearchSort": { "anyOf": [ { "$ref": "#/$defs/partitionSearchSortCriterion" }, { "type": "array", "items": { "$ref": "#/$defs/partitionSearchSortCriterion" } } ] }, "partitionSearchSortCriterion": { "anyOf": [ { "$ref": "#/$defs/partitionSearchSortCriterionShort" }, { "$ref": "#/$defs/partitionSearchSortCriterionFull" } ] }, "partitionSearchSortCriterionShort": { "enum": ["name", "size", "number"] }, "partitionSearchSortCriterionFull": { "type": "object", "additionalProperties": false, "properties": { "name": { "$ref": "#/$defs/searchSortCriterionOrder" }, "size": { "$ref": "#/$defs/searchSortCriterionOrder" }, "number": { "$ref": "#/$defs/searchSortCriterionOrder" } }, "minProperties": 1, "maxProperties": 1 }, "logicalVolumeSearchSort": { "anyOf": [ { "$ref": "#/$defs/logicalVolumeSearchSortCriterion" }, { "type": "array", "items": { "$ref": "#/$defs/logicalVolumeSearchSortCriterion" } } ] }, "logicalVolumeSearchSortCriterion": { "anyOf": [ { "$ref": "#/$defs/logicalVolumeSearchSortCriterionShort" }, { "$ref": "#/$defs/logicalVolumeSearchSortCriterionFull" } ] }, "logicalVolumeSearchSortCriterionShort": { "enum": ["name", "size", "number"] }, "logicalVolumeSearchSortCriterionFull": { "type": "object", "additionalProperties": false, "properties": { "name": { "$ref": "#/$defs/searchSortCriterionOrder" }, "size": { "$ref": "#/$defs/searchSortCriterionOrder" } }, "minProperties": 1, "maxProperties": 1 }, "searchMax": { "description": "Maximum devices to match.", "type": "integer", "minimum": 1 }, "searchActions": { "description": "How to handle the section if the device is not found.", "enum": ["skip", "error"], "default": "error" }, "searchCreatableActions": { "description": "How to handle the section if the device is not found.", "enum": ["skip", "error", "create"], "default": "error" }, "searchAll": { "description": "Shortcut to match all devices if there is any (equivalent to specify no conditions and to skip the entry if no device is found).", "const": "*" }, "searchName": { "description": "Search by device name", "type": "string", "examples": ["/dev/vda", "/dev/disk/by-id/ata-WDC_WD3200AAKS-75L9"] }, "alias": { "description": "Alias used to reference a device.", "type": "string" }, "baseName": { "description": "Device base name.", "type": "string", "pattern": "^[^/]+$", "examples": ["system"] }, "size": { "title": "Size", "anyOf": [ { "$ref": "#/$defs/sizeValue" }, { "title": "Size tuple", "description": "Lower size limit and optionally upper size limit.", "type": "array", "items": { "$ref": "#/$defs/sizeValueWithCurrent" }, "minItems": 1, "maxItems": 2, "examples": [ [1024, "current"], ["1 GiB", "5 GiB"], [1024, "2 GiB"], ["2 GiB"] ] }, { "title": "Size range", "description": "Size range.", "type": "object", "additionalProperties": false, "required": ["min"], "properties": { "min": { "$ref": "#/$defs/sizeValueWithCurrent" }, "max": { "$ref": "#/$defs/sizeValueWithCurrent" } } } ] }, "sizeValue": { "anyOf": [ { "$ref": "#/$defs/sizeString" }, { "$ref": "#/$defs/sizeBytes" } ] }, "sizeValueWithCurrent": { "anyOf": [ { "$ref": "#/$defs/sizeValue" }, { "title": "Size current", "description": "The current size of the device.", "const": "current" } ] }, "sizeString": { "description": "Human readable size.", "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?(\\s*([KkMmGgTtPpEeZzYy][iI]?)?[Bb])?$", "examples": ["2 GiB", "1.5 TB", "1TIB", "1073741824 b", "1073741824"] }, "sizeBytes": { "description": "Size in bytes.", "type": "integer", "minimum": 0, "examples": [1024, 2048] }, "encryption": { "anyOf": [ { "$ref": "#/$defs/encryptionLuks1" }, { "$ref": "#/$defs/encryptionLuks2" }, { "$ref": "#/$defs/encryptionPervasiveLuks2" }, { "$ref": "#/$defs/encryptionTpmFde" }, { "$ref": "#/$defs/encryptionSwap" } ] }, "encryptionLuks1": { "description": "LUKS1 encryption.", "type": "object", "additionalProperties": false, "required": ["luks1"], "properties": { "luks1": { "type": "object", "additionalProperties": false, "required": ["password"], "properties": { "password": { "$ref": "#/$defs/encryptionPassword" }, "cipher": { "$ref": "#/$defs/encryptionCipher" }, "keySize": { "$ref": "#/$defs/encryptionKeySize" } } } } }, "encryptionLuks2": { "description": "LUKS2 encryption.", "type": "object", "additionalProperties": false, "required": ["luks2"], "properties": { "luks2": { "type": "object", "additionalProperties": false, "required": ["password"], "properties": { "password": { "$ref": "#/$defs/encryptionPassword" }, "cipher": { "$ref": "#/$defs/encryptionCipher" }, "keySize": { "$ref": "#/$defs/encryptionKeySize" }, "pbkdFunction": { "$ref": "#/$defs/encryptionPbkdFunction" }, "label": { "description": "LUKS2 label.", "type": "string" }, "tpm": { "description": "Whether to use TPM2 unlocking.", "type": "boolean", "default": false } } } } }, "encryptionPervasiveLuks2": { "description": "LUKS2 pervasive encryption.", "type": "object", "additionalProperties": false, "required": ["pervasiveLuks2"], "properties": { "pervasiveLuks2": { "type": "object", "additionalProperties": false, "required": ["password"], "properties": { "password": { "$ref": "#/$defs/encryptionPassword" }, "apqns": { "description": "List of APQNs used to generate secure keys.", "type": "array", "items": { "examples": ["01.0001", "01.0002"], "type": "string" } }, "keyType": { "description": "Type of the generated secure key.", "enum": ["EP11-AES", "CCA-AESCIPHER", "CCA-AESDATA"] } } } } }, "encryptionTpmFde": { "deprecated": true, "description": "TPM-Based Full Disk Encryption.", "type": "object", "additionalProperties": false, "required": ["tpmFde"], "properties": { "tpmFde": { "type": "object", "additionalProperties": false, "required": ["password"], "properties": { "password": { "$ref": "#/$defs/encryptionPassword" } } } } }, "encryptionSwap": { "description": "Swap encryptions. The snake case names are deprecated.", "enum": ["protected_swap", "secure_swap", "random_swap", "protectedSwap", "secureSwap", "randomSwap"] }, "encryptionPassword": { "description": "Password to use when creating a new encryption device.", "type": "string" }, "encryptionCipher": { "description": "The value must be compatible with the --cipher argument of the command cryptsetup.", "type": "string" }, "encryptionKeySize": { "description": "The value (in bits) has to be a multiple of 8. The possible key sizes are limited by the used cipher.", "type": "integer" }, "encryptionPbkdFunction": { "enum": ["pbkdf2", "argon2i", "argon2id"] }, "filesystem": { "type": "object", "additionalProperties": false, "properties": { "reuseIfPossible": { "description": "Try to reuse the existing file system. In some cases the file system could not be reused, for example, if the device is re-encrypted.", "type": "boolean", "default": false }, "type": { "$ref": "#/$defs/filesystemType" }, "label": { "description": "File system label.", "type": "string" }, "path": { "description": "Mount path.", "type": "string", "examples": ["/var/log"] }, "mountBy": { "title": "Mount by", "description": "How to mount the device.", "enum": ["device", "id", "label", "path", "uuid"] }, "mkfsExtraArguments": { "description": "Additional arguments injected as-is to the mkfs command when creating the file system.", "type": "string" }, "mkfsOptions": { "deprecated": true, "description": "Deprecated in favor of mkfsExtraArguments", "type": "array", "items": { "type": "string" } }, "mountOptions": { "description": "Options to add to the fourth field of fstab.", "type": "array", "items": { "type": "string" } } } }, "filesystemType": { "anyOf": [ { "$ref": "#/$defs/filesystemTypeAny" }, { "$ref": "#/$defs/filesystemTypeBtrfs" } ] }, "filesystemTypeAny": { "enum": [ "bcachefs", "btrfs", "exfat", "ext2", "ext3", "ext4", "f2fs", "jfs", "nfs", "nilfs2", "ntfs", "reiserfs", "swap", "tmpfs", "vfat", "xfs" ] }, "filesystemTypeBtrfs": { "description": "Btrfs file system.", "type": "object", "additionalProperties": false, "required": ["btrfs"], "properties": { "btrfs": { "type": "object", "additionalProperties": false, "properties": { "snapshots": { "description": "Whether to configrue Btrfs snapshots.", "type": "boolean" } } } } } } }