home-lab/machines/little-rascal/hardware-configuration.nix
Geir Okkenhaug Jerstad 51335f144b Try Linux 5.15 LTS kernel for touchpad compatibility
6.1 LTS improved I2C communication significantly, but hidraw device
still not created. Trying 5.15 LTS since laptop worked with older distros.
2025-06-30 19:25:33 +02:00

150 lines
3.8 KiB
Nix

# Hardware Configuration for Little Rascal
# Lenovo Yoga Slim 7 14ARE05 - AMD Ryzen 7 4700U
{
config,
lib,
pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
# Boot configuration for AMD Ryzen 7 4700U
boot = {
initrd = {
availableKernelModules = [
"nvme"
"xhci_pci"
"usb_storage"
"sd_mod"
"sdhci_pci"
# I2C modules for touchpad support
"i2c_hid"
"i2c_hid_acpi"
"i2c_piix4"
];
kernelModules = [];
};
kernelModules = [
"kvm-amd" # AMD Ryzen system
# HID and input modules for touchpad
"hid_generic"
"hid_multitouch"
"i2c_hid"
"i2c_hid_acpi"
# Additional HID drivers that might help
"hid_input"
"evdev"
];
# Use LTS kernel for better hardware compatibility
kernelPackages = pkgs.linuxPackages_5_15;
extraModulePackages = [];
};
# Filesystem configuration - TEMPLATE
# Update these paths and UUIDs after running nixos-generate-config
fileSystems = {
"/" = {
device = "/dev/disk/by-label/nixos";
fsType = "ext4";
};
"/boot" = {
device = "/dev/disk/by-label/BOOT";
fsType = "vfat";
options = ["fmask=0022" "dmask=0022"];
};
};
# Swap configuration - TEMPLATE
# Uncomment and update if using swap partition
# swapDevices = [
# { device = "/dev/disk/by-uuid/REPLACE-WITH-SWAP-UUID"; }
# ];
# Hardware-specific configuration for Lenovo Yoga Slim 7 14ARE05
hardware = {
# CPU configuration - AMD Ryzen 7 4700U
cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
# Enable firmware updates
enableRedistributableFirmware = true;
# Graphics configuration - AMD Radeon Vega (integrated)
# Using open source driver without ROCm and 32-bit support
graphics = {
enable = true;
enable32Bit = false; # Disabled 32-bit support
# AMD open source graphics drivers only
extraPackages = with pkgs; [
amdvlk # AMD Vulkan driver
# Removed ROCm packages for simpler configuration
];
# No 32-bit support packages needed
};
# Bluetooth support for Intel AX200
bluetooth = {
enable = true;
powerOnBoot = true;
};
};
# Power management for AMD Ryzen 7 4700U
powerManagement = {
enable = true;
powertop.enable = true; # Power optimization
cpuFreqGovernor = "powersave"; # Better battery life
};
# Network hardware - Intel Wi-Fi 6 AX200
networking = {
# Enable NetworkManager for WiFi management
networkmanager.enable = true;
# Disable wpa_supplicant (using NetworkManager)
wireless.enable = false;
};
# Firmware for Intel WiFi and Bluetooth
hardware.firmware = with pkgs; [
linux-firmware
];
# AMD-specific optimizations
boot.kernelParams = [
# Enable AMD graphics performance
"amdgpu.ppfeaturemask=0xffffffff"
# I2C HID touchpad parameters
"i2c_hid.debug=1"
# Ensure ACPI devices are properly detected
"acpi_enforce_resources=lax"
# Force ITE touchpad to be recognized as input device
"i2c_hid_acpi.probe_defer=1"
];
# TLP for better power management (alternative to power-profiles-daemon)
services.tlp = {
enable = false; # Using power-profiles-daemon instead
settings = {
# Would be configured here if enabled
CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
};
};
# Notes for this specific hardware:
# - Lenovo Yoga Slim 7 14ARE05
# - AMD Ryzen 7 4700U with Radeon Vega Graphics
# - 16GB LPDDR4 RAM (soldered, not upgradeable)
# - Intel Wi-Fi 6 AX200 + Bluetooth
# - 128GB SSD storage
# - Currently running btrfs filesystem
}