nixos-config/hosts/north/hardware.nix

68 lines
2 KiB
Nix

{
inputs,
config,
pkgs,
lib,
...
}:
{
imports = [
inputs.disko.nixosModules.default
./disko.nix
];
hardware.enableRedistributableFirmware = true;
boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"nvme"
"usb_storage"
"usbhid"
"sd_mod"
];
boot.kernelModules = [
"kvm-amd"
"k10temp"
"nct6775"
];
nixpkgs.hostPlatform = "x86_64-linux";
hardware.cpu.amd.updateMicrocode = true;
services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
package = config.boot.kernelPackages.nvidiaPackages.beta;
};
systemd.services.gpu-temp-reader = {
wantedBy = [ "multi-user.target" ];
requires = [ "fancontrol.service" ];
before = [ "fancontrol.service" ];
script = ''
${lib.getExe' pkgs.coreutils "touch"} /tmp/nvidia-gpu-temp
while :; do
temp="$(${lib.getExe' config.hardware.nvidia.package "nvidia-smi"} --query-gpu=temperature.gpu --format=csv,noheader,nounits)"
${lib.getExe' pkgs.coreutils "echo"} "$((temp * 1000))" > /tmp/nvidia-gpu-temp
${lib.getExe' pkgs.coreutils "sleep"} 2
done
'';
};
hardware.fancontrol = {
enable = true;
config = ''
# pwm1=rear pwm2=cpu pwm3=front+top pwm4=gpu pwm=motherboard?
INTERVAL=2
DEVPATH=hwmon1=devices/pci0000:00/0000:00:18.3 hwmon2=devices/platform/nct6775.656
DEVNAME=hwmon1=k10temp hwmon2=nct6798
FCTEMPS=hwmon2/pwm1=hwmon2/temp1_input hwmon2/pwm2=hwmon1/temp1_input hwmon2/pwm3=hwmon2/temp1_input hwmon2/pwm4=/tmp/nvidia-gpu-temp
FCFANS=hwmon2/pwm1=hwmon2/fan1_input hwmon2/pwm2=hwmon2/fan7_input+hwmon2/fan2_input hwmon2/pwm3=hwmon2/fan3_input hwmon2/pwm4=hwmon2/fan4_input
MINTEMP=hwmon2/pwm1=35 hwmon2/pwm2=45 hwmon2/pwm3=35 hwmon2/pwm4=40
MAXTEMP=hwmon2/pwm1=100 hwmon2/pwm2=100 hwmon2/pwm3=100 hwmon2/pwm4=100
MINSTART=hwmon2/pwm1=16 hwmon2/pwm2=16 hwmon2/pwm3=16 hwmon2/pwm4=30
MINSTOP=hwmon2/pwm1=16 hwmon2/pwm2=16 hwmon2/pwm3=16 hwmon2/pwm4=30
'';
};
}