///|
fn mac_model(
  name~ : String,
  about~ : String,
  host~ : String,
  os~ : String,
  device~ : String,
  kernel~ : String,
  resolution~ : Resolution?,
  cpu~ : Cpu,
  gpu~ : Gpu,
  memory~ : Memory,
) -> DeviceModel {
  {
    name,
    about,
    host,
    os,
    device,
    kernel,
    uptime: { hours: 3, mins: 12 },
    shell: "zsh 5.9",
    resolution,
    de: "Quartz Compositor",
    wm: "Quartz Compositor",
    wm_theme: "Aqua",
    terminal: "Apple_Terminal",
    term_font: "SF Mono 12",
    cpu,
    gpu,
    memory,
    logo: "macos",
  }
}

///|
/// MacBook Pro 16" (2023), Apple M3 Max, 128 GB unified memory, 2 TB SSD.
fn m3_max_model() -> DeviceModel {
  mac_model(
    name="m3-max",
    about="macOS MacBook Pro 16\" M3 Max 128 GB / 2 TB",
    host="mbp16",
    os="macOS 15.5 (Sequoia) 24F74 arm64",
    device="MacBook Pro (Mac15,6)",
    kernel="Darwin 24.5.0",
    resolution=Some({ width: 3456, height: 2234 }),
    cpu={ name: "Apple M3 Max", cores: 16, clock: 4.05 },
    gpu=gpu_apple_m3_max,
    memory={ used: 46.30, total: 128.00 },
  )
}

///|
/// Mac Studio (2025), Apple M3 Ultra, 512 GB unified memory, 4 TB SSD.
fn m3_ultra_model() -> DeviceModel {
  mac_model(
    name="m3-ultra",
    about="macOS Mac Studio M3 Ultra 512 GB / 4 TB",
    host="studio",
    os="macOS 15.5 (Sequoia) 24F74 arm64",
    device="Mac Studio (Mac16,9)",
    kernel="Darwin 24.5.0",
    resolution=Some({ width: 5120, height: 2880 }),
    cpu={ name: "Apple M3 Ultra", cores: 32, clock: 4.05 },
    gpu=gpu_apple_m3_ultra,
    memory={ used: 245.76, total: 512.00 },
  )
}

///|
/// MacBook Pro 14" (2023), Apple M2 Pro, 32 GB unified memory, 1 TB SSD.
fn m2_pro_model() -> DeviceModel {
  mac_model(
    name="m2-pro",
    about="macOS MacBook Pro 14\" M2 Pro 32 GB / 1 TB",
    host="mbp14",
    os="macOS 14.6 (Sonoma) 23G80 arm64",
    device="MacBook Pro (Mac14,9)",
    kernel="Darwin 23.6.0",
    resolution=Some({ width: 3024, height: 1964 }),
    cpu={ name: "Apple M2 Pro", cores: 12, clock: 3.50 },
    gpu=gpu_apple_m2_pro,
    memory={ used: 20.10, total: 32.00 },
  )
}

///|
/// MacBook Air (M1, 2020), Apple M1, 8 GB unified memory, 512 GB SSD.
fn m1_air_model() -> DeviceModel {
  mac_model(
    name="m1-air",
    about="macOS MacBook Air (M1) 8 GB / 512 GB",
    host="mba",
    os="macOS 13.6 (Ventura) 22G120 arm64",
    device="MacBook Air (MacBookAir9,1)",
    kernel="Darwin 22.6.0",
    resolution=Some({ width: 2560, height: 1600 }),
    cpu={ name: "Apple M1", cores: 8, clock: 3.20 },
    gpu=gpu_apple_m1,
    memory={ used: 5.40, total: 8.00 },
  )
}