# roles/thin-client/hardware/dell-optiplex-micro.nix # # Hardware class for Dell OptiPlex Micro (3020/3040/5040/7040). # These are 5th–7th gen Intel Core mini-PCs, all using Intel i915 graphics, # all UEFI-bootable. Driver-wise they're nearly identical. # # Notes: # - 3020 (Broadwell, 5th gen) — slightly older firmware, but i915 supports it. # - 3040/5040 (Skylake, 6th gen) — mainstream. # - 7040 (Skylake/Kaby Lake, 6th/7th gen) — some vPro variants exist. # All variants: Intel ME present (mostly inactive unless explicitly provisioned). { config, lib, pkgs, ... }: { config = lib.mkIf (config.az.tc.enable && config.az.tc.hardwareClass == "dell-optiplex-micro") { boot = { loader.systemd-boot.enable = true; loader.efi.canTouchEfiVariables = true; initrd.kernelModules = ["i915" "snd_hda_intel"]; kernelModules = ["i915" "thinkpad_acpi" "coretemp"]; kernelParams = [ # Quiet boot for kiosk-like feel "quiet" "splash" # Avoid rare i915 glitches on Skylake "i915.enable_guc=2" ]; kernelPackages = pkgs.linuxPackages_latest; }; services.xserver.videoDrivers = ["modesetting"]; # Firmware for Intel WiFi/BT on these models hardware.enableRedistributableFirmware = true; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; # Audio via Pipewire (set up in session/default.nix); just ensure # sound firmware is present. hardware.firmware = lib.mkDefault [pkgs.sof-firmware]; # Suspend/wake — Thin Clients are typically always-on; disable sleep # to avoid Wake-on-LAN issues on the Dell NIC. systemd.targets.sleep.enable = false; systemd.targets.suspend.enable = false; systemd.targets.hibernate.enable = false; systemd.targets.hybrid-sleep.enable = false; }; }