@php $iconMappings = [ 'ubuntu' => 'ubuntu', 'debian' => 'debian', 'centos' => 'centos', 'alpine' => 'alpine', 'freebsd' => 'freebsd', 'openbsd' => 'openbsd', 'fedora' => 'fedora', 'arch' => 'archlinux', 'opensuse' => 'opensuse', 'suse' => 'opensuse', 'gentoo' => 'gentoo', 'oracle' => null, 'alma' => 'almalinux', 'rocky' => 'rocky-linux', 'clear' => null, 'rhel' => 'redhat', 'red hat' => 'redhat', 'open cloud' => null, 'nethserver' => null, 'alt linux' => null, 'amazon' => null, 'windows' => null, ]; $iconOverrides = [ 'proxmox' => asset('assets/os/proxmox.png'), 'amazon linux' => asset('assets/os/amazonlinux.png'), 'amazonlinux' => asset('assets/os/amazonlinux.png'), 'windows' => asset('assets/os/WIN.png'), 'oracle' => asset('assets/os/tux.svg'), 'clear' => asset('assets/os/tux.svg'), 'nethserver' => asset('assets/os/tux.svg'), 'open cloud' => asset('assets/os/tux.svg'), 'alt linux' => asset('assets/os/tux.svg'), ]; $badgeLabels = [ 'ubuntu 24.04 (recommended)' => 'Recommended', ]; $defaultIcon = asset('assets/os/tux.svg'); $categoryDefinitions = [ 'Ubuntu' => ['ubuntu'], 'Debian' => ['debian'], 'CentOS' => ['centos'], 'Enterprise / RHEL Family' => ['rhel', 'alma', 'rocky', 'oracle'], 'Community & Rolling' => ['fedora', 'arch', 'opensuse', 'gentoo', 'clear', 'alt linux'], 'Cloud & Appliances' => ['amazon', 'open cloud', 'nethserver'], 'Lightweight' => ['alpine'], 'BSD Family' => ['freebsd', 'netbsd', 'openbsd', 'dragonfly'], 'Proxmox Hypervisor' => ['proxmox'], 'Windows Server' => ['windows'], 'Other OS' => [], ]; $sortedOs = $osList->sortBy(fn ($os) => strtolower($os->name), SORT_NATURAL); $groupedOs = []; foreach ($categoryDefinitions as $label => $keywords) { $groupedOs[$label] = []; } foreach ($sortedOs as $template) { $normalized = \Illuminate\Support\Str::lower($template->name); $matchedLabel = 'Other OS'; foreach ($categoryDefinitions as $label => $keywords) { foreach ($keywords as $keyword) { if ($keyword && \Illuminate\Support\Str::contains($normalized, $keyword)) { $matchedLabel = $label; break 2; } } } $groupedOs[$matchedLabel][] = $template; } $groupedOs = collect($groupedOs)->filter(fn ($items) => count($items) > 0); @endphp
Choose a new operating system. The selected template will be installed from scratch.