From 4ce6bba2f7c0d13b930685068e964dfd9f542fe1 Mon Sep 17 00:00:00 2001 From: Ganga Ram Date: Wed, 21 May 2025 16:51:52 +0400 Subject: [PATCH 1/3] Update correct hash for imx mkimage utility - Don't fetch dotGit directory. - Dot git dir gets different object packs when it is pulled from different nixpkgs versions which causes hash mismatch. - Patch Makefile not use git revision from .git. Signed-off-by: Ganga Ram --- nxp/imx8mp-evk/bsp/imx8mp-boot.nix | 15 +++++++++------ nxp/imx8mq-evk/bsp/imx8mq-boot.nix | 15 +++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/nxp/imx8mp-evk/bsp/imx8mp-boot.nix b/nxp/imx8mp-evk/bsp/imx8mp-boot.nix index c078f9ca..b7fec803 100644 --- a/nxp/imx8mp-evk/bsp/imx8mp-boot.nix +++ b/nxp/imx8mp-evk/bsp/imx8mp-boot.nix @@ -15,18 +15,21 @@ with pkgs; let imx8mp-firmware = pkgs.callPackage ./imx8mp-firmware.nix {}; imx8mp-uboot = pkgs.callPackage ./imx8mp-uboot.nix {}; imx8mp-optee-os = pkgs.callPackage ./imx8mp-optee-os.nix {}; + src = pkgs.fetchgit { + url = "https://github.com/nxp-imx/imx-mkimage.git"; + rev = "c4365450fb115d87f245df2864fee1604d97c06a"; + sha256 = "sha256-KVIVHwBpAwd1RKy3RrYxGIniE45CDlN5RQTXsMg1Jwk="; + }; + shortRev = builtins.substring 0 8 src.rev; in { imx8m-boot = pkgs.stdenv.mkDerivation rec { + inherit src; name = "imx8mp-mkimage"; version = "lf-6.1.55-2.2.0"; - src = pkgs.fetchgit { - url = "https://github.com/nxp-imx/imx-mkimage.git"; - rev = "c4365450fb115d87f245df2864fee1604d97c06a"; - sha256 = "sha256-xycEaWKVM63BlDyBKNN0OefyK6iX/fQOTvv4fRVM55U="; - leaveDotGit = true; - }; postPatch = '' + substituteInPlace Makefile \ + --replace 'git rev-parse --short=8 HEAD' 'echo ${shortRev}' substituteInPlace Makefile \ --replace 'CC = gcc' 'CC = clang' patchShebangs scripts diff --git a/nxp/imx8mq-evk/bsp/imx8mq-boot.nix b/nxp/imx8mq-evk/bsp/imx8mq-boot.nix index f0e53d49..2b5c246d 100644 --- a/nxp/imx8mq-evk/bsp/imx8mq-boot.nix +++ b/nxp/imx8mq-evk/bsp/imx8mq-boot.nix @@ -14,18 +14,21 @@ with pkgs; let imx8mq-firmware = pkgs.callPackage ./imx8mq-firmware.nix {}; imx8mq-uboot = pkgs.callPackage ./imx8mq-uboot.nix {}; imx8mq-optee-os = pkgs.callPackage ./imx8mq-optee-os.nix {}; + src = pkgs.fetchgit { + url = "https://github.com/nxp-imx/imx-mkimage.git"; + rev = "c4365450fb115d87f245df2864fee1604d97c06a"; + sha256 = "sha256-KVIVHwBpAwd1RKy3RrYxGIniE45CDlN5RQTXsMg1Jwk="; + }; + shortRev = builtins.substring 0 8 src.rev; in { imx8m-boot = pkgs.stdenv.mkDerivation rec { + inherit src; name = "imx8mq-mkimage"; version = "lf-6.1.55-2.2.0"; - src = pkgs.fetchgit { - url = "https://github.com/nxp-imx/imx-mkimage.git"; - rev = "c4365450fb115d87f245df2864fee1604d97c06a"; - sha256 = "sha256-xycEaWKVM63BlDyBKNN0OefyK6iX/fQOTvv4fRVM55U="; - leaveDotGit = true; - }; postPatch = '' + substituteInPlace Makefile \ + --replace 'git rev-parse --short=8 HEAD' 'echo ${shortRev}' substituteInPlace Makefile \ --replace 'CC = gcc' 'CC = clang' patchShebangs scripts From 50c1d00e9def0ca0b483459dc2f1e403158eabb1 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Wed, 28 May 2025 20:32:58 -0400 Subject: [PATCH 2/3] add optional config that makes lgpio and pigpio work --- raspberry-pi/4/default.nix | 1 + raspberry-pi/4/gpio.nix | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 raspberry-pi/4/gpio.nix diff --git a/raspberry-pi/4/default.nix b/raspberry-pi/4/default.nix index ca2c7a89..150a66b9 100644 --- a/raspberry-pi/4/default.nix +++ b/raspberry-pi/4/default.nix @@ -8,6 +8,7 @@ ./cpu-revision.nix ./digi-amp-plus.nix ./dwc2.nix + ./gpio.nix ./i2c.nix ./leds.nix ./modesetting.nix diff --git a/raspberry-pi/4/gpio.nix b/raspberry-pi/4/gpio.nix new file mode 100644 index 00000000..23c7bdae --- /dev/null +++ b/raspberry-pi/4/gpio.nix @@ -0,0 +1,36 @@ +{ pkgs, lib, config, ... }: +{ + options.hardware.raspberry-pi."4".gpio = { + enable = lib.mkOption { + type = lib.types.bool; + description = + "Enable udev rules and kernelParams that make lgpio and pigpio work"; + default = false; + }; + }; + config = let + cfg = config.hardware.raspberry-pi."4".gpio; + in + lib.mkIf cfg.enable { + users.groups.gpio = lib.mkDefault { }; + + # the bit that matters to lgpio here is + # "${pkgs.coreutils}/bin/chgrp gpio /dev/%k && chmod 660 /dev/%k" + # see https://github.com/NixOS/nixpkgs/pull/352308 + + # sudo udevadm test --action=add /dev/gpiochip0 to test + + # import lgpio; lgpio.gpiochip_open(0) should show "1" and not raise + # an exception + + services.udev.extraRules = lib.mkBefore '' + KERNEL=="gpiomem", GROUP="gpio", MODE="0660" + SUBSYSTEM=="gpio", KERNEL=="gpiochip*", ACTION=="add", PROGRAM="${pkgs.bash}/bin/bash -c '${pkgs.coreutils}/bin/chgrp gpio /dev/%k && chmod 660 /dev/%k && ${pkgs.coreutils}/bin/chgrp -R gpio /sys/class/gpio && ${pkgs.coreutils}/bin/chmod -R g=u /sys/class/gpio'" + SUBSYSTEM=="gpio", ACTION=="add", PROGRAM="${pkgs.bash}/bin/bash -c '${pkgs.coreutils}/bin/chgrp -R gpio /sys%p && ${pkgs.coreutils}/bin/chmod -R g=u /sys%p'" + ''; + + boot.kernelParams = [ + "iomem=relaxed" # for pigpiod + ]; + }; +} From 0985f253857967e0e5ea0f147672742a117c9ca0 Mon Sep 17 00:00:00 2001 From: Ralf Gueldemeister <410488+rgueldem@users.noreply.github.com> Date: Wed, 9 Apr 2025 19:37:17 -0600 Subject: [PATCH 3/3] Add Lenovo Thinkpad X1 13th Gen --- README.md | 1 + flake.nix | 1 + lenovo/thinkpad/x1/13th-gen/default.nix | 12 ++++++++++++ 3 files changed, 14 insertions(+) create mode 100644 lenovo/thinkpad/x1/13th-gen/default.nix diff --git a/README.md b/README.md index 1bf859ab..8d6bcf95 100644 --- a/README.md +++ b/README.md @@ -305,6 +305,7 @@ See code for all available configurations. | [Lenovo ThinkPad X1 (10th Gen)](lenovo/thinkpad/x1/10th-gen) | `` | | [Lenovo ThinkPad X1 (11th Gen)](lenovo/thinkpad/x1/11th-gen) | `` | | [Lenovo ThinkPad X1 (12th Gen)](lenovo/thinkpad/x1/12th-gen) | `` | +| [Lenovo ThinkPad X1 (13th Gen)](lenovo/thinkpad/x1/13th-gen) | `` | | [Lenovo ThinkPad X1 Extreme Gen 2](lenovo/thinkpad/x1-extreme/gen2) | `` | | [Lenovo ThinkPad X1 Extreme Gen 3](lenovo/thinkpad/x1-extreme/gen3) | `` | | [Lenovo ThinkPad X1 Extreme Gen 4](lenovo/thinkpad/x1-extreme/gen4) | `` | diff --git a/flake.nix b/flake.nix index 048a59b7..915d9a78 100644 --- a/flake.nix +++ b/flake.nix @@ -249,6 +249,7 @@ lenovo-thinkpad-x1-10th-gen = import ./lenovo/thinkpad/x1/10th-gen; lenovo-thinkpad-x1-11th-gen = import ./lenovo/thinkpad/x1/11th-gen; lenovo-thinkpad-x1-12th-gen = import ./lenovo/thinkpad/x1/12th-gen; + lenovo-thinkpad-x1-13th-gen = import ./lenovo/thinkpad/x1/13th-gen; lenovo-thinkpad-x1-extreme = import ./lenovo/thinkpad/x1-extreme; lenovo-thinkpad-x1-extreme-gen2 = import ./lenovo/thinkpad/x1-extreme/gen2; lenovo-thinkpad-x1-extreme-gen3 = import ./lenovo/thinkpad/x1-extreme/gen3; diff --git a/lenovo/thinkpad/x1/13th-gen/default.nix b/lenovo/thinkpad/x1/13th-gen/default.nix new file mode 100644 index 00000000..399ea64a --- /dev/null +++ b/lenovo/thinkpad/x1/13th-gen/default.nix @@ -0,0 +1,12 @@ +{lib, ...}: + +{ + imports = [ + ../../../../common/pc/ssd + ../../../../common/cpu/intel/lunar-lake + ]; + + hardware.trackpoint.device = "TPPS/2 Synaptics TrackPoint"; + + services.thermald.enable = lib.mkDefault true; +}