from dataclasses import dataclass


@dataclass(frozen=True, slots=True)
class BuiltinComputerTemplate:
    key: str
    name: str
    os_family: str
    distribution: str
    version: str
    browser: str
    minimum_cpu: int
    minimum_memory_mb: int
    minimum_disk_gb: int
    windows_license_required: bool = False


BUILTIN_COMPUTER_TEMPLATES: tuple[BuiltinComputerTemplate, ...] = (
    BuiltinComputerTemplate(
        "ubuntu-desktop-24-04",
        "Ubuntu Desktop 24.04 LTS",
        "linux",
        "Ubuntu Desktop",
        "24.04 LTS",
        "chromium",
        2,
        4096,
        40,
    ),
    BuiltinComputerTemplate(
        "ubuntu-server-desktop-24-04",
        "Ubuntu Server 24.04 LTS + Desktop",
        "linux",
        "Ubuntu Server + Desktop",
        "24.04 LTS",
        "chromium",
        2,
        4096,
        30,
    ),
    BuiltinComputerTemplate(
        "debian-desktop-13",
        "Debian Desktop",
        "linux",
        "Debian Desktop",
        "13",
        "chromium",
        2,
        4096,
        30,
    ),
    BuiltinComputerTemplate(
        "windows-11",
        "Windows 11",
        "windows",
        "Windows",
        "11",
        "edge",
        4,
        8192,
        80,
        True,
    ),
    BuiltinComputerTemplate(
        "windows-server",
        "Windows Server",
        "windows",
        "Windows Server",
        "2025",
        "edge",
        4,
        8192,
        80,
        True,
    ),
)

DEFAULT_COMPUTER_TEMPLATE_KEY = "ubuntu-desktop-24-04"
