# Apple Mac Pro 3,1 (Early 2008, dual Xeon Harpertown, x86_64). Desktop host:
# shared graphical/wired options live in ../../modules/desktop.nix; only
# host-specific settings are here. Install notes (EFI booting, GPU, partitions):
# see ./README.md.
{ ... }:

{
  imports = [
    ./hardware-configuration.nix
  ];

  # The Mac Pro 3,1 has 64-bit EFI (confirmed by the owner), so boot via
  # systemd-boot like the MBP -- no GRUB/BIOS shim needed.
  boot.loader.systemd-boot.enable = true;
  # Apple's EFI does not reliably support efibootmgr NVRAM writes; leave the
  # firmware vars untouched.
  boot.loader.efi.canTouchEfiVariables = false;
  # Apple-EFI quirk: if the Mac does not pick up the bootloader at the boot
  # picker, install it to the fallback path \EFI\BOOT\BOOTX64.EFI and/or
  # "bless" the ESP from macOS. Uncomment to write the removable fallback path:
  # boot.loader.efi.efiInstallAsRemovable = true;

  networking.hostName = "MacPro31-NixOS";

  # Elderly host: a compressed RAM swap softens memory pressure (earlyoom in
  # workstation.nix is the backstop).
  zramSwap.enable = true;

  # sshd (daemon, port 22, key-only policy) comes from ../../modules/ssh.nix;
  # the firewall itself is enabled in workstation.nix with a default-deny policy.

  # Dual Harpertown Xeon microcode. Redistributable firmware (GPU/NIC blobs) is
  # enabled in workstation.nix.
  hardware.cpu.intel.updateMicrocode = true;

  # GPU note: the stock card varies between units -- ATI Radeon HD 2600 XT or
  # NVIDIA GeForce 8800 GT. Sway needs a working KMS/modesetting driver; do NOT
  # install a proprietary blob here. Depending on the installed card, rely on
  # the open kernel driver:
  #   - ATI Radeon HD 2600 XT -> "radeon" (older) or "amdgpu" KMS
  #   - NVIDIA GeForce 8800 GT -> "nouveau" KMS
  # These come up automatically via the in-tree drivers + KMS, and the graphics
  # stack itself is enabled by modules/sway.nix. If a card needs to be forced, add it
  # here, e.g. `services.xserver.videoDrivers = [ "radeon" ];` (or "nouveau"),
  # and/or `boot.initrd.kernelModules = [ "radeon" ];` in
  # hardware-configuration.nix for early KMS.

  # See `man configuration.nix` / the stateVersion docs before changing.
  system.stateVersion = "26.05";
}
