#!ipxe

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

:version_menu
menu Choose Ubuntu Server Version
item --gap -- --------------------------------------------------------------------------
item ubuntu2404   Ubuntu Server 24.04 LTS
item ubuntu2604   Ubuntu Server 26.04 LTS
item --gap -- --------------------------------------------------------------------------
item back     Back to Main Menu
item --gap -- --------------------------------------------------------------------------
choose version && goto ${version}

:back
chain ${base_url}/boot.ipxe

:ubuntu2404
set version 24.04
set iso_name ubuntu-24.04.5-live-server-amd64.iso
goto partition_menu

:ubuntu2604
set version 26.04
set iso_name ubuntu-26.04.1-live-server-amd64.iso
goto partition_menu

:partition_menu
menu Choose Partition Mode
item --gap -- --------------------------------------------------------------------------
item auto     Auto Partitioning
item manual   Manual Partitioning
item --gap -- --------------------------------------------------------------------------
item version_menu     Back to Version 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 Ubuntu Server
item uk       UK     - University of Kent Mirror Service
item china    China  - Mirror sites
item --gap -- --------------------------------------------------------------------------
item partition_menu     Back to Partition Selection
item --gap -- --------------------------------------------------------------------------
choose region && goto ${region}

:global
set base-ubuntu-url http://releases.ubuntu.com
set region global
set mirror official
goto launch

:uk
set base-ubuntu-url http://www.mirrorservice.org/sites/releases.ubuntu.com
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-ubuntu-url http://mirrors.nju.edu.cn/ubuntu-releases
goto launch

:aliyun
set base-ubuntu-url http://mirrors.aliyun.com/ubuntu-releases
goto launch

:launch
# kernel/initrd come from the mirror's netboot directory; the installer downloads the ISO itself (needs ~6GB+ RAM)
set iso_url ${base-ubuntu-url}/${version}/${iso_name}
kernel ${base-ubuntu-url}/${version}/netboot/amd64/linux initrd=initrd ip=dhcp url=${iso_url} autoinstall ds=nocloud-net;s=${base_url}/ubuntu/${partition_mode}/ region=${region} mirror=${mirror}
initrd --name initrd ${base-ubuntu-url}/${version}/netboot/amd64/initrd
boot
