# This is a missing part that should be added to `autoinstall.yaml`
autoinstall:
  
  early-commands:
    ### add non-official APT packages ###
    # helix SEE: https://docs.helix-editor.com/install.html#ubuntu
    - sudo add-apt-repository ppa:maveonair/helix-editor
  
  # Storage configuration
  storage:
    config:
      ## Define the main disk to partition
      - type: disk
        id: disk0 # label to identify and manage the disk, within the YAML configuration file, i.e., during the automated installation process
        ptable: gpt #  GUID Partition Table, the modern standard for partition tables. An alternative partitioning scheme is `mbr` (Master Boot Record), the older standard.
        wipe: superblock-recursive # Determines how the disk is wiped (erased) before new partitions are created. `superblock-recursive` wipes all partition tables and filesystem superblocks on the disk to ensure it’s completely clean.
        preserve: false # Deletes all existing partitions and data on the disk.
        grub_device: true # Installs GRUB on this disk, enabling it to boot the installed operating system.
        match:
          size: largest
      ## Partition
      # Boot EFI System partition
      - id: boot
        type: partition
        device: disk0
        size: 300MB
        flag: boot # `flag`'s value defines a disk-level attribute that defines how the partition should behave or be treated by the system.
      # swap partition
      - id: swap
        type: partition
        device: disk0
        size: 24GB
        flag: swap
      # root filesystem
      - id: root
        type: partition
        device: disk0
        size: 150GB
      # home directory
      - id: home
        type: partition
        device: disk0
        size: 200GB
      # leave leftover space as free
      - id: free-space
        type: partition
        device: disk0
        size: -1  # -1 uses remaining space, leaving it free
      
      ## Format
      # swap
      - id: swap-fs
        type: format
        volume: swap
        fstype: swap
        label: SWAP
      # /boot
      - id: boot-fs
        type: format
        volume: boot
        fstype: fat32 # FAT32 (File Allocation Table 32) is a legacy file system introduced by Microsoft in 1996. It’s simple and widely supported file system primarily used for compatibility purposes across different operating systems and devices, such as: USB drives, SD cards, System boot partitions (e.g., EFI System Partition). Characteristics of FAT32: Compatibility: Works across virtually all operating systems (Windows, macOS, Linux, etc.); Simple Structure: Based on a file allocation table (FAT) that maps file locations on the disk; No Journaling: FAT32 lacks any mechanism to log changes, making it less resilient to data corruption compared to modern file systems like EXT4 or NTFS; File Size Limitation: Individual files cannot exceed 4 GB; Partition Size Limitation: Maximum partition size is 32 GB (on Windows) or larger with third-party tools.
        label: BOOT
      # root /
      - id: root-fs
        type: format
        volume: root
        fstype: ext4 # a common journaling filesystem on Linux systems due to its reliability
        label: ROOT
      # /home
      - id: home-fs
        type: format
        volume: home
        fstype: ext4
        label: HOME
        
      ## Mount
      # /boot
      - id: boot-mnt
        type: mount
        device: boot-fs
        path: /boot
      # root /
      - id: root-mnt
        type: mount
        device: root-fs
        path: /
      # /home
      - id: home-mnt
        type: mount
        device: home-fs
        path: /home