{ pkgs, config, lib, ... }: let cfg = config.grimmShared; in { config = with cfg; lib.mkIf (enable && laptop_hardware.enable) { environment.systemPackages = with pkgs; [ lm_sensors lshw pciutils usbutils opentabletdriver ddcutil ] ++ lib.optionals graphical [ ddcui ]; hardware.i2c.enable = true; services.libinput.enable = true; hardware.opentabletdriver.enable = true; services.udisks2.enable = true; services.udev.extraRules = '' SUBSYSTEM=="i2c-dev", ACTION=="add",\ ATTR{name}=="NVIDIA i2c adapter*",\ TAG+="ddcci",\ TAG+="systemd",\ ENV{SYSTEMD_WANTS}+="ddcci@$kernel.service" ''; systemd.services."ddcci@" = { scriptArgs = "%i"; script = '' sleep 20 echo Trying to attach ddcci to $1 i=0 id=$(echo $1 | cut -d "-" -f 2) if ${pkgs.ddcutil}/bin/ddcutil getvcp 10 -b $id; then echo ddcci 0x37 > /sys/bus/i2c/devices/$1/new_device fi ''; serviceConfig.Type = "oneshot"; }; boot = { kernelParams = [ # "splash" # "quiet" # "intel_iommu=on" # "iommu=force" # "pcie_acs_override=downstream" # "mmio_stale_data=full,nosmt" # "pcie_aspm=off" ]; # "vfio-pci.ids=10de:1aeb,10de:2191,10de:1aed,10de:1aec" ]; initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; loader.systemd-boot.enable = true; extraModulePackages = [ (config.boot.kernelPackages.ddcci-driver.overrideAttrs (old: { patches = [ (pkgs.fetchpatch { url = "https://gitlab.com/Sweenu/ddcci-driver-linux/-/commit/7f851f5fb8fbcd7b3a93aaedff90b27124e17a7e.patch"; hash = "sha256-Y1ktYaJTd9DtT/mwDqtjt/YasW9cVm0wI43wsQhl7Bg="; }) ]; })) ]; kernelModules = [ # "kvm-intel" # "vfio_pci" # "vfio_iommu_type1" # "vfio" "ddcci_backlight" "i2c-dev" ]; # blacklistedKernelModules = [ "i2c_nvidia_gpu" ]; }; }; options.grimmShared.laptop_hardware = { enable = lib.mkEnableOption "grimm-laptop"; }; }