#!ipxe

:global_vars
set base_url        http://download.creekside.network/ipxe

:version_menu
menu Choose Rocky Linux Version
item --gap -- --------------------------------------------------------------------------
item rocky8   Rocky Linux 8
item rocky9   Rocky Linux 9
item --gap -- --------------------------------------------------------------------------
item back     Back to Main Menu
item --gap -- --------------------------------------------------------------------------
choose version && goto ${version}

:back
chain ${base_url}/boot.ipxe

:rocky8
set version 8
goto desktop_menu

:rocky9
set version 9
goto desktop_menu

:desktop_menu
menu Choose Desktop Environment
item --gap -- --------------------------------------------------------------------------
item mini     Minimal
item desktop     Desktop
item --gap -- --------------------------------------------------------------------------
item version_menu     Back to Version Selection
item --gap -- --------------------------------------------------------------------------
choose desktop && goto ${desktop}

:mini
set install_type mini
goto partition_menu

:desktop
set install_type desktop
goto partition_menu

:partition_menu
menu Choose Partition Mode
item --gap -- --------------------------------------------------------------------------
item auto     Auto Partitioning
item manual   Manual Partitioning
item --gap -- --------------------------------------------------------------------------
item desktop_menu     Back to Desktop Selection
item --gap -- --------------------------------------------------------------------------
choose partition && goto ${partition}

:auto
set partition_mode auto
goto region_menu

:manual 
set partition_mode manual
goto region_menu

:region_menu
menu Choose Region
item --gap -- --------------------------------------------------------------------------
item global   Global - Official Rocky Server
item uk       UK     - University of Kent Mirror Service
item china    China  - Mirror sites
item --gap -- --------------------------------------------------------------------------
item partition_menu     Back to Desktop Selection
item --gap -- --------------------------------------------------------------------------
choose region && goto ${region}

:global
set base-rocky-url  http://dl.rockylinux.org/pub/rocky
set region global
set mirror official
goto launch

:uk
set base-rocky-url  http://www.mirrorservice.org/sites/download.rockylinux.org/pub/rocky
set region uk
set mirror mirrorservice
goto launch

:china
set region china
goto china_menu

:china_menu
menu Choose China Mirror
item --gap -- --------------------------------------------------------------------------
item nju      Nanjing University (NJU) Mirror
item aliyun   Alibaba Cloud Mirror
item --gap -- --------------------------------------------------------------------------
item region_menu     Back to Region Selection
item --gap -- --------------------------------------------------------------------------
choose mirror && goto ${mirror}

:nju
set base-rocky-url  http://mirrors.nju.edu.cn/rocky
goto launch

:aliyun
set base-rocky-url  http://mirrors.aliyun.com/rockylinux
goto launch

:launch
kernel ${base-rocky-url}/${version}/BaseOS/x86_64/os/images/pxeboot/vmlinuz initrd=initrd.img inst.repo=${base-rocky-url}/${version}/BaseOS/x86_64/os inst.ks=${base_url}/rocky/rocky.ks desktop=${install_type} region=${region} mirror=${mirror} partition=${partition_mode}
initrd ${base-rocky-url}/${version}/BaseOS/x86_64/os/images/pxeboot/initrd.img
boot
