# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#

# Options for EFI system partition.
#
# - *mountPoint*
#   This setting specifies the mount point of the EFI system partition. Some
#   distributions (Fedora, Debian, Manjaro, etc.) use /boot/efi, others (KaOS,
#   etc.) use just /boot.
#
#   Defaults to "/boot/efi", may be empty (but weird effects ensue)
# - *recommendedSize*
#   This optional setting specifies the size of the EFI system partition.
#   If nothing is specified, the default size of 300MiB will be used.
#   When writing quantities here, M is treated as MiB, and if you really
#   want one-million (10^6) bytes, use MB.
# - *minimumSize*
#   This optional setting specifies the absolute minimum size of the EFI
#   system partition. If nothing is specified, the *recommendedSize*
#   is used instead.
# - *label*
#   This optional setting specifies the name of the EFI system partition (see
#   PARTLABEL; gpt only; requires KPMCore >= 4.2.0).
#   If nothing is specified, the partition name is left unset.
#
# Going below the *recommended* size is allowed, but the user will
# get a warning that it might not work. Going below the *minimum*
# size is not allowed and the user will be told it will not work.
#
# Both quantities must be at least 32MiB, this is enforced by the EFI
# spec. If minimum is not specified, it defaults to the recommended
# size. Distro's that allow more user latitude can set the minimum lower.
efi:
    mountPoint:         "/boot"
    recommendedSize:    700MiB
    minimumSize:        300MiB
    label:              "EFI"

# Deprecated alias of efi.mountPoint
# efiSystemPartition:     "/boot/efi"

# Deprecated alias of efi.recommendedSize
# efiSystemPartitionSize:          300MiB

# Deprecated alias of efi.label
# efiSystemPartitionName:     EFI

# In autogenerated partitioning, allow the user to select a swap size?
# If there is exactly one choice, no UI is presented, and the user
# cannot make a choice -- this setting is used. If there is more than
# one choice, a UI is presented.
#
# Legacy settings *neverCreateSwap* and *ensureSuspendToDisk* correspond
# to values of *userSwapChoices* as follows:
#    - *neverCreateSwap* is true, means [none]
#    - *neverCreateSwap* is false, *ensureSuspendToDisk* is false, [small]
#    - *neverCreateSwap* is false, *ensureSuspendToDisk* is true, [suspend]
#
# Autogenerated swap sizes are as follows:
#    - *suspend*: Swap is always at least total memory size,
#      and up to 4GiB RAM follows the rule-of-thumb 2 * memory;
#      from 4GiB to 8 GiB it stays steady at 8GiB, and over 8 GiB memory
#      swap is the size of main memory.
#    - *small*: Follows the rules above, but Swap is at
#      most 8GiB, and no more than 10% of available disk.
# In both cases, a fudge factor (usually 10% extra) is applied so that there
# is some space for administrative overhead (e.g. 8 GiB swap will allocate
# 8.8GiB on disk in the end).
#
# If *file* is enabled here, make sure to have the *fstab* module
# as well (later in the exec phase) so that the swap file is
# actually created.
userSwapChoices:
    - none      # Create no swap, use no swap
    - small     # Up to 4GB
    - suspend   # At least main memory size
    # - reuse     # Re-use existing swap, but don't create any (unsupported right now)
    - file      # To swap file instead of partition

# This optional setting specifies the name of the swap partition (see
# PARTLABEL; gpt only; requires KPMCore >= 4.2.0).
# If nothing is specified, the partition name is left unset.
swapPartitionName:      swap

# LEGACY SETTINGS (these will generate a warning)
# ensureSuspendToDisk:    true
neverCreateSwap:        false

# This setting specifies the LUKS generation (i.e LUKS1, LUKS2) used internally by
# cryptsetup when creating an encrypted partition.
#
# This option is set to luks1 by default, as grub doesn't support LUKS2 + Argon2id
# currently. On the other hand grub does support LUKS2 with PBKDF2 and could therefore be
# also set to luks2. Also there are some patches for grub and Argon2.
# See: https://aur.archlinux.org/packages/grub-improved-luks2-git
#
# Choices: luks1, luks2 (in addition, "luks" means "luks1")
#
# The default is luks1
#
luksGeneration: luks2

# This setting determines if encryption should be allowed when using zfs.  This
# setting has no effect unless zfs support is provided.
#
# This setting is to handle the fact that some bootloaders(such as grub) do not
# support zfs encryption.
#
# The default is true
#
# allowZfsEncryption: true

# Correctly draw nested (e.g. logical) partitions as such.
drawNestedPartitions:   false

# Show/hide partition labels on manual partitioning page.
alwaysShowPartitionLabels: true

# Allow manual partitioning.
#
# When set to false, this option hides the "Manual partitioning" button,
# limiting the user's choice to "Erase", "Replace" or "Alongside".
# This can be useful when using a custom partition layout we don't want
# the user to modify.
#
# If nothing is specified, manual partitioning is enabled.
allowManualPartitioning:   true

# Show not encrypted boot partition warning.
#
# When set to false, this option does not show the
# "Boot partition not encrypted" warning when encrypting the
# root partition but not /boot partition.
#
# If nothing is specified, the warning is shown.
showNotEncryptedBootMessage:   false

# Initial selection on the Choice page
#
# There are four radio buttons (in principle: erase, replace, alongside, manual),
# and you can pick which of them, if any, is initially selected. For most
# installers, "none" is the right choice: it makes the user pick something specific,
# rather than accidentally being able to click past an important choice (in particular,
# "erase" is a dangerous choice).
#
# The default is "none"
#
initialPartitioningChoice: none
#
# Similarly, some of the installation choices may offer a choice of swap;
# the available choices depend on *userSwapChoices*, above, and this
# setting can be used to pick a specific one.
#
# The default is "none" (no swap) if that is one of the enabled options, otherwise
# one of the items from the options.
initialSwapChoice: none

# armInstall
#
# Leaves 16MB empty at the start of a drive when partitioning
# where usually the u-boot loader goes
#
# armInstall: false

# Default partition table type, used when a "erase" disk is made.
#
# When erasing a disk, a new partition table is created on disk.
# In other cases, e.g. Replace and Alongside, as well as when using
# manual partitioning, this partition table exists already on disk
# and it is left unmodified.
#
# Suggested values: gpt, msdos
# If nothing is specified, Calamares defaults to "gpt" if system is
# efi or "msdos".
#
# Names are case-sensitive and defined by KPMCore.
defaultPartitionTableType: gpt

# Requirement for partition table type
#
# Restrict the installation on disks that match the type of partition
# tables that are specified.
#
# Possible values: msdos, gpt. Names are case-sensitive and defined by KPMCore.
#
# If nothing is specified, Calamares defaults to both "msdos" and "gpt".
#
# requiredPartitionTableType: gpt
# requiredPartitionTableType:
#     - msdos
#     - gpt

# Default filesystem type, used when a "new" partition is made.
#
# When replacing a partition, the new filesystem type will be from the
# defaultFileSystemType value. In other cases, e.g. Erase and Alongside,
# as well as when using manual partitioning and creating a new
# partition, this filesystem type is pre-selected. Note that
# editing a partition in manual-creation mode will not automatically
# change the filesystem type to this default value -- it is not
# creating a new partition.
#
# Suggested values: ext2, ext3, ext4, reiser, xfs, jfs, btrfs
# If nothing is specified, Calamares defaults to "ext4".
#
# Names are case-sensitive and defined by KPMCore.
defaultFileSystemType:  "ext4"

# Selectable filesystem type, used when "erase" is done.
#
# When erasing the disk, the *defaultFileSystemType* is used (see
# above), but it is also possible to give users a choice:
# list suitable filesystems here. A drop-down is provided
# to pick which is the filesystems will be used.
#
# The value *defaultFileSystemType* is added to this list (with a warning)
# if not present; the default pick is the *defaultFileSystemType*.
#
# If not specified at all, uses *defaultFileSystemType* without a
# warning (this matches traditional no-choice-available behavior best).
# availableFileSystemTypes:  ["ext4","f2fs"]

# Show/hide LUKS related functionality in automated partitioning modes.
# Disable this if you choose not to deploy early unlocking support in GRUB2
# and/or your distribution's initramfs solution.
#
# BIG FAT WARNING:
#
# This option is unsupported, as it cuts out a crucial security feature.
# Disabling LUKS and shipping Calamares without a correctly configured GRUB2
# and initramfs is considered suboptimal use of the Calamares software. The
# Calamares team will not provide user support for any potential issue that
# may arise as a consequence of setting this option to false.
# It is strongly recommended that system integrators put in the work to support
# LUKS unlocking support in GRUB2 and initramfs/dracut/mkinitcpio/etc.
# For more information on setting up GRUB2 for Calamares with LUKS, see
# https://github.com/calamares/calamares/wiki/Deploy-LUKS
#
# If nothing is specified, LUKS is enabled in automated modes.
enableLuksAutomatedPartitioning:    true

# Partition layout.
#
# This optional setting specifies a custom partition layout.
#
# If nothing is specified, the default partition layout is a single partition
# for root that uses 100% of the space and uses the filesystem defined by
# defaultFileSystemType.
#
# Note: the EFI system partition is prepended automatically to the layout if
# needed; the swap partition is appended to the layout if enabled (selections
# "small" or "suspend" in *userSwapChoices*).
#
# Otherwise, the partition layout is defined as follow:
#
# partitionLayout:
#     - name: "rootfs"
#       type: "4f68bce3-e8cd-4db1-96e7-fbcaf984b709"
#       filesystem: "ext4"
#       noEncrypt: false
#       mountPoint: "/"
#       size: 20%
#       minSize: 500M
#       maxSize: 10G
#       attributes: 0xffff000000000003
#     - name: "home"
#       type: "933ac7e1-2eb4-4f13-b844-0e14e2aef915"
#       filesystem: "ext4"
#       noEncrypt: false
#       mountPoint: "/home"
#       size: 3G
#       minSize: 1.5G
#       features:
#         64bit: false
#         casefold: true
#     - name: "data"
#       filesystem: "fat32"
#       mountPoint: "/data"
#       features:
#         sector-size: 4096
#         sectors-per-cluster: 128
#       size: 100%
#
# There can be any number of partitions, each entry having the following attributes:
#   - name: filesystem label
#           and
#           partition name (gpt only; since KPMCore 4.2.0)
#   - uuid: partition uuid (optional parameter; gpt only; requires KPMCore >= 4.2.0)
#   - type: partition type (optional parameter; gpt only; requires KPMCore >= 4.2.0)
#   - attributes: partition attributes (optional parameter; gpt only; requires KPMCore >= 4.2.0)
#   - filesystem: filesystem type (optional parameter)
#       - if not set at all, treat as "unformatted"
#       - if "unformatted", no filesystem will be created
#       - if "unknown" (or an unknown FS name, like "elephant") then the
#         default filesystem type, or the user's choice, will be applied instead
#         of "unknown" (e.g. the user might pick ext4, or xfs).
#   - noEncrypt: whether this partition is exempt from encryption if enabled (optional parameter; default is false)
#   - mountPoint: partition mount point (optional parameter; not mounted if unset)
#   - size: partition size in bytes (append 'K', 'M' or 'G' for KiB, MiB or GiB)
#           or
#           % of the available drive space if a '%' is appended to the value
#   - minSize: minimum partition size (optional parameter)
#   - maxSize: maximum partition size (optional parameter)
#   - features: filesystem features (optional parameter; requires KPMCore >= 4.2.0)
#       name: boolean or integer or string

# Checking for available storage
#
# This overlaps with the setting of the same name in the welcome module's
# requirements section. If nothing is set by the welcome module, this
# value is used instead. It is still a problem if there is no required
# size set at all, and the replace and resize options will not be offered
# if no required size is set.
#
# The value is in Gibibytes (GiB).
#
# BIG FAT WARNING: except for OEM-phase-0 use, you should be using
#                  the welcome module, **and** configure this value in
#                  `welcome.conf`, not here.
# requiredStorage: 3.5
