From e1c4bac14beb8c409d0534382cf967171706b9d9 Mon Sep 17 00:00:00 2001 From: Mic92 <96200+Mic92@users.noreply.github.com> Date: Wed, 10 Apr 2024 14:40:48 +0000 Subject: [PATCH] Lenovo ThinkPad Z13 Gen 2 (#844) lenovo-thinkpad-z: remove HiDPI * lenovo-thinkpad-z: move z13 to gen1/z13, leave generic settings * lenovo-thinkpad-z-gen2: add z13 * Update lenovo/thinkpad/z/gen2/default.nix * Update lenovo/thinkpad/z/gen2/default.nix --- README.md | 3 +- flake.nix | 3 +- lenovo/thinkpad/z/default.nix | 5 +-- lenovo/thinkpad/z/gen1/default.nix | 8 +++++ lenovo/thinkpad/z/gen1/z13/default.nix | 5 +++ lenovo/thinkpad/z/gen2/default.nix | 44 ++++++++++++++++++++++++++ lenovo/thinkpad/z/gen2/z13/default.nix | 19 +++++++++++ lenovo/thinkpad/z/z13/default.nix | 5 --- lenovo/thinkpad/z13/default.nix | 10 ++++++ 9 files changed, 91 insertions(+), 11 deletions(-) create mode 100644 lenovo/thinkpad/z/gen1/default.nix create mode 100644 lenovo/thinkpad/z/gen1/z13/default.nix create mode 100644 lenovo/thinkpad/z/gen2/default.nix create mode 100644 lenovo/thinkpad/z/gen2/z13/default.nix delete mode 100644 lenovo/thinkpad/z/z13/default.nix create mode 100644 lenovo/thinkpad/z13/default.nix diff --git a/README.md b/README.md index 69eb126..ed7464d 100644 --- a/README.md +++ b/README.md @@ -238,7 +238,8 @@ See code for all available configurations. | [Lenovo ThinkPad X280](lenovo/thinkpad/x280) | `` | | [Lenovo ThinkPad X390](lenovo/thinkpad/x390) | `` | | [Lenovo ThinkPad Z Series](lenovo/thinkpad/z) | `` | -| [Lenovo ThinkPad Z13](lenovo/thinkpad/z/z13) | `` | +| [Lenovo ThinkPad Z13 Gen 1](lenovo/thinkpad/z/gen1/z13) | `` | +| [Lenovo ThinkPad Z13 Gen 2](lenovo/thinkpad/z/gen2/z13) | `` | | [LENOVO Yoga 6 13ALC6 82ND](lenovo/yoga/6/13ALC6) | `` | | [LENOVO Yoga Slim 7 Pro-X 14ARH7 82ND](lenovo/yoga/7/14ARH7/amdgpu) | `` | | [LENOVO Yoga Slim 7 Pro-X 14ARH7 82ND](lenovo/yoga/7/14ARH7/nvidia) | `` | diff --git a/flake.nix b/flake.nix index 1c39afe..31b92ef 100644 --- a/flake.nix +++ b/flake.nix @@ -175,7 +175,8 @@ lenovo-thinkpad-x280 = import ./lenovo/thinkpad/x280; lenovo-thinkpad-x390 = import ./lenovo/thinkpad/x390; lenovo-thinkpad-z = import ./lenovo/thinkpad/z; - lenovo-thinkpad-z13 = import ./lenovo/thinkpad/z/z13; + lenovo-thinkpad-z13-gen1 = import ./lenovo/thinkpad/z/gen1/z13; + lenovo-thinkpad-z13-gen2 = import ./lenovo/thinkpad/z/gen2/z13; lenovo-yoga-6-13ALC6 = import ./lenovo/yoga/6/13ALC6; lenovo-yoga-7-14ARH7 = import ./lenovo/yoga/7/14ARH7; lenovo-yoga-7-slim-gen8 = import ./lenovo/yoga/7/slim/gen8; diff --git a/lenovo/thinkpad/z/default.nix b/lenovo/thinkpad/z/default.nix index d37af1f..020a159 100644 --- a/lenovo/thinkpad/z/default.nix +++ b/lenovo/thinkpad/z/default.nix @@ -7,17 +7,14 @@ ../../../common/pc/laptop ../../../common/pc/laptop/acpi_call.nix ../../../common/pc/laptop/ssd - ../../../common/hidpi.nix # can be dropped after nixos 23.05 ]; - # kernel versions prior to 5.18 won't boot - boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "5.18") (lib.mkDefault pkgs.linuxPackages_latest); hardware.enableRedistributableFirmware = lib.mkDefault true; hardware.trackpoint.device = lib.mkDefault "TPPS/2 Elan TrackPoint"; services.fprintd.enable = lib.mkDefault true; - # kernel versions below 6.0 don't contain ACPI suspend2idle drivers for the Z13s AMD hardware + # kernel versions below 6.0 don’t contain ACPI suspend2idle drivers for the Z-series’ AMD hardware # my Z13 froze after waking up from suspend/ hibernate services.logind.lidSwitch = lib.mkIf (lib.versionOlder pkgs.linux.version "6.00") (lib.mkDefault "lock"); } diff --git a/lenovo/thinkpad/z/gen1/default.nix b/lenovo/thinkpad/z/gen1/default.nix new file mode 100644 index 0000000..b51da6e --- /dev/null +++ b/lenovo/thinkpad/z/gen1/default.nix @@ -0,0 +1,8 @@ +{ lib, pkgs, ... }: { + imports = [ + ../../../../lenovo/thinkpad/z + ]; + + # Kernel 5.18 is required for the Ryzen 6000 series + boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "5.18") (lib.mkDefault pkgs.linuxPackages_latest); +} diff --git a/lenovo/thinkpad/z/gen1/z13/default.nix b/lenovo/thinkpad/z/gen1/z13/default.nix new file mode 100644 index 0000000..18193c0 --- /dev/null +++ b/lenovo/thinkpad/z/gen1/z13/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ../../../../../lenovo/thinkpad/z/gen1 + ]; +} diff --git a/lenovo/thinkpad/z/gen2/default.nix b/lenovo/thinkpad/z/gen2/default.nix new file mode 100644 index 0000000..cb7e05c --- /dev/null +++ b/lenovo/thinkpad/z/gen2/default.nix @@ -0,0 +1,44 @@ +{ lib, pkgs, ... }: + +{ + imports = [ + ../../../../lenovo/thinkpad/z + ]; + + # Kernel 6.4 is required for the Ryzen 7040 series + boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "6.4") (lib.mkDefault pkgs.linuxPackages_latest); + + systemd.services = { + # Modified from Arch Wiki + "touchpad-fix" = { + enable = lib.mkDefault true; + description = "I2C HID devices can fail to initialize so try to reload"; + unitConfig = { + Type = "oneshot"; + }; + serviceConfig = { + User = "root"; + }; + wantedBy = [ "multi-user.target" ]; + after = [ "multi-user.target" ]; + script = '' + count=0 + while true; do + ${lib.getExe pkgs.libinput} list-devices | ${lib.getExe pkgs.gnugrep} --quiet SNSL && break + count=$((count + 1)) + + if test $count -ge 5; then + echo "Touchpad not read after $count attempts" + break + fi + + echo "Touchpad not ready; attempt $count to reload" + ${pkgs.kmod}/bin/rmmod i2c_hid_acpi + ${pkgs.kmod}/bin/modprobe i2c_hid_acpi + + sleep $((2 + (count * 3))) + done + ''; + }; + }; +} diff --git a/lenovo/thinkpad/z/gen2/z13/default.nix b/lenovo/thinkpad/z/gen2/z13/default.nix new file mode 100644 index 0000000..5eb6ef0 --- /dev/null +++ b/lenovo/thinkpad/z/gen2/z13/default.nix @@ -0,0 +1,19 @@ +{ pkgs, lib, ...}: + +{ + imports = [ + ../../../../../lenovo/thinkpad/z/gen2 + ]; + + sound.extraConfig = '' + pcm.!default { + type plug + slave.pcm "hw:1,0" + } + + ctl.!default { + type hw + card 1 + } + ''; +} diff --git a/lenovo/thinkpad/z/z13/default.nix b/lenovo/thinkpad/z/z13/default.nix deleted file mode 100644 index cf1a5b4..0000000 --- a/lenovo/thinkpad/z/z13/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - imports = [ - ../../../../lenovo/thinkpad/z - ]; -} diff --git a/lenovo/thinkpad/z13/default.nix b/lenovo/thinkpad/z13/default.nix new file mode 100644 index 0000000..4eb91c9 --- /dev/null +++ b/lenovo/thinkpad/z13/default.nix @@ -0,0 +1,10 @@ +{ + assertions = [ + { + assertion = true; + message = '' + Lenovo Z-series received a second generation so the hardware configuration has been split by generation. For the Z13 Gen 1 config, change from `lenovo-thinkpad-z13` to `lenovo-thinkpad-z13-gen1`. + ''; + } + ]; +}