diff --git a/common/cpu/intel/arrow-lake/cpu-only.nix b/common/cpu/intel/arrow-lake/cpu-only.nix new file mode 100644 index 000000000..82892615d --- /dev/null +++ b/common/cpu/intel/arrow-lake/cpu-only.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ../cpu-only.nix + ]; +} diff --git a/common/cpu/intel/arrow-lake/default.nix b/common/cpu/intel/arrow-lake/default.nix new file mode 100644 index 000000000..a788a778a --- /dev/null +++ b/common/cpu/intel/arrow-lake/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./cpu-only.nix + ../../../gpu/intel/arrow-lake + ]; +} diff --git a/common/gpu/intel/arrow-lake/default.nix b/common/gpu/intel/arrow-lake/default.nix new file mode 100644 index 000000000..b232719e1 --- /dev/null +++ b/common/gpu/intel/arrow-lake/default.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: +{ + imports = [ ../. ]; + hardware.intelgpu = { + driver = lib.mkIf (lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.8") "xe"; + vaapiDriver = "intel-media-driver"; + }; +} diff --git a/flake.nix b/flake.nix index a0ac1fb81..6003693c0 100644 --- a/flake.nix +++ b/flake.nix @@ -157,6 +157,7 @@ hp-notebook-14-df0023 = import ./hp/notebook/14-df0023; intel-nuc-8i7beh = import ./intel/nuc/8i7beh; lenovo-ideacentre-k330 = import ./lenovo/ideacentre/k330; + lenovo-ideapad-14iah10 = import ./lenovo/ideapad/14iah10; lenovo-ideapad-14imh9 = import ./lenovo/ideapad/14imh9; lenovo-ideapad-15alc6 = import ./lenovo/ideapad/15alc6; lenovo-ideapad-15arh05 = import ./lenovo/ideapad/15arh05; diff --git a/lenovo/ideapad/14iah10/README.md b/lenovo/ideapad/14iah10/README.md new file mode 100644 index 000000000..f6a1ccad9 --- /dev/null +++ b/lenovo/ideapad/14iah10/README.md @@ -0,0 +1,7 @@ +# Lenovo IdeaPad 5 Pro / XiaoXin Pro 14 GT (14IAH10) + +This module provides configuration common to all Arrow Lake (Core Ultra 200H +series)-based devices and rectifies a few quirks with the system that are mostly +all caused by firmware or BIOS bugs. While the solution isn't perfect, the +laptop is decently usable with these tweaks, including networking and speakers +output. diff --git a/lenovo/ideapad/14iah10/default.nix b/lenovo/ideapad/14iah10/default.nix new file mode 100644 index 000000000..e4b62cf0b --- /dev/null +++ b/lenovo/ideapad/14iah10/default.nix @@ -0,0 +1,40 @@ +{ + lib, + ... +}: +{ + imports = [ + ../../../common/cpu/intel/arrow-lake + ../../../common/pc/laptop + ../../../common/pc/ssd + ]; + + boot = { + # DSP-based SOF drivers currently don't work due to missing topology + # definitions, so we fall back to old snd_hda_intel drivers + # See https://thesofproject.github.io/latest/getting_started/intel_debug/introduction.html#pci-devices-introduced-after-2016 + # + # Last tested with sof-firmware version 2025.05; newer SOF releases + # may include updated topologies + extraModprobeConfig = '' + options snd-intel-dspcfg dsp_driver=1 + ''; + + # HACK: Fix the infamous "Unable to change power state from D3cold to D0" + # error when resuming the system from a suspended state, by _completely_ + # disabling PCIe port power management and thereby preventing the Wi-Fi + # adapter from turning off at all. + # + # This is theoretically bad from a battery life standpoint, but it's + # necessary until Intel ships a functioning firmware release that doesn't + # suffer from this issue. In my real-world testing this doesn't seem to + # have caused a noticable decrease in battery life, however. + # + # See Intel's (non-)response regarding this issue with this exact model at: + # https://community.intel.com/t5/Wireless/Intel-WiFi-7-BE200-loses-connection-after-suspend-resume-on/m-p/1700055 + # + # Last tested to be necessary on ucode version 98 — this might no + # longer be necessary for newer firmware releases! + kernelParams = [ "pcie_port_pm=off" ]; + }; +}