2024-05-07 23:31:41 +02:00
|
|
|
{
|
|
|
|
pkgs,
|
|
|
|
config,
|
|
|
|
lib,
|
|
|
|
...
|
|
|
|
}:
|
2024-04-18 21:16:40 +02:00
|
|
|
let
|
|
|
|
cfg = config.grimmShared;
|
|
|
|
in
|
|
|
|
{
|
2024-05-07 23:31:41 +02:00
|
|
|
config =
|
|
|
|
with cfg;
|
|
|
|
lib.mkIf (enable && laptop_hardware.enable) {
|
|
|
|
environment.systemPackages =
|
|
|
|
with pkgs;
|
|
|
|
[
|
|
|
|
lm_sensors
|
|
|
|
lshw
|
|
|
|
pciutils
|
|
|
|
usbutils
|
|
|
|
opentabletdriver
|
|
|
|
ddcutil
|
|
|
|
python312Packages.py-cpuinfo
|
|
|
|
(writeShellScriptBin "lsiommu" ./lsiommu)
|
|
|
|
]
|
|
|
|
++ lib.optionals graphical [
|
|
|
|
ddcui
|
|
|
|
wootility
|
|
|
|
];
|
2024-04-26 10:25:17 +02:00
|
|
|
|
2024-05-07 23:31:41 +02:00
|
|
|
hardware.i2c.enable = true;
|
|
|
|
services.libinput.enable = true;
|
|
|
|
hardware.opentabletdriver.enable = true;
|
|
|
|
services.udisks2.enable = true;
|
2024-04-26 10:25:17 +02:00
|
|
|
|
2024-05-07 23:31:41 +02:00
|
|
|
services.udev.extraRules = ''
|
|
|
|
SUBSYSTEM=="i2c-dev", ACTION=="add",\
|
|
|
|
ATTR{name}=="NVIDIA i2c adapter*",\
|
|
|
|
TAG+="ddcci",\
|
|
|
|
TAG+="systemd",\
|
|
|
|
ENV{SYSTEMD_WANTS}+="ddcci@$kernel.service"
|
2024-04-26 10:25:17 +02:00
|
|
|
'';
|
|
|
|
|
2024-05-07 23:31:41 +02:00
|
|
|
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" ];
|
|
|
|
loader.efi.canTouchEfiVariables = true;
|
|
|
|
initrd.availableKernelModules = [
|
|
|
|
"xhci_pci"
|
|
|
|
"ahci"
|
|
|
|
"nvme"
|
|
|
|
"usbhid"
|
|
|
|
"usb_storage"
|
|
|
|
"sd_mod"
|
|
|
|
];
|
|
|
|
loader.systemd-boot.enable = true;
|
|
|
|
extraModulePackages = [
|
|
|
|
(config.boot.kernelPackages.ddcci-driver.overrideAttrs (old: {
|
2024-04-26 10:25:17 +02:00
|
|
|
patches = [
|
|
|
|
(pkgs.fetchpatch {
|
|
|
|
url = "https://gitlab.com/Sweenu/ddcci-driver-linux/-/commit/7f851f5fb8fbcd7b3a93aaedff90b27124e17a7e.patch";
|
|
|
|
hash = "sha256-Y1ktYaJTd9DtT/mwDqtjt/YasW9cVm0wI43wsQhl7Bg=";
|
|
|
|
})
|
|
|
|
];
|
|
|
|
}))
|
2024-05-07 23:31:41 +02:00
|
|
|
];
|
|
|
|
kernelModules = [
|
|
|
|
# "kvm-intel"
|
|
|
|
# "vfio_pci"
|
|
|
|
# "vfio_iommu_type1"
|
|
|
|
# "vfio"
|
|
|
|
"ddcci_backlight"
|
|
|
|
"i2c-dev"
|
|
|
|
"ec_sys"
|
|
|
|
];
|
|
|
|
# blacklistedKernelModules = [ "i2c_nvidia_gpu" ];
|
|
|
|
};
|
2024-04-18 21:16:40 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
options.grimmShared.laptop_hardware = {
|
|
|
|
enable = lib.mkEnableOption "grimm-laptop";
|
|
|
|
};
|
|
|
|
}
|