{ config , inputs , ... }: { imports = [ inputs.nixos-facter-modules.nixosModules.facter { config.facter.reportPath = ./facter.json; } ./age.nix ./disko.nix ./impermanence.nix ./mergerfs.nix ]; environment.systemPackages = [ config.boot.kernelPackages.cpupower config.boot.kernelPackages.turbostat ]; boot = { loader.systemd-boot.enable = true; loader.efi.canTouchEfiVariables = true; loader.grub.devices = [ config.disko.devices.disk.main.device ]; loader.timeout = 3; blacklistedKernelModules = [ "k10temp" ]; extraModulePackages = [ config.boot.kernelPackages.zenpower ]; kernelParams = [ "rootflags=compress=zstd:1,noatime" "amd_pstate=active" ]; kernelModules = [ "zenpower" "nct6775" ]; kernel.sysctl = { "kernel.sysrq" = 1; "vm.swappiness" = 10; "net.core.default_qdisc" = "cake"; }; initrd.services.udev.rules = '' ACTION=="add", SUBSYSTEM=="hwmon", DEVPATH=="/devices/platform/*/hwmon/hwmon*", \ MODE="0660", GROUP="plugdev", \ RUN+="/bin/sh -c 'for pwm in $(find /sys%p -name \"pwm[0-9]*\" | sort); do \ num=$(echo \"$pwm\" | sed -n \"s/.*pwm\([0-9]\+\).*/\1/p\"); \ ln -sf \"$pwm\" \"/dev/pwm$num\"; \ done'" ''; }; hardware.fancontrol = { enable = true; config = '' INTERVAL=10 DEVPATH=hwmon2=devices/pci0000:00/0000:00:18.3 hwmon3=devices/platform/nct6775.656 DEVNAME=hwmon2=zenpower hwmon3=nct6798 FCTEMPS=hwmon3/pwm7=hwmon2/temp1_input hwmon3/pwm2=hwmon2/temp1_input FCFANS=hwmon3/pwm7=hwmon3/fan7_input hwmon3/pwm2=hwmon3/fan2_input MINTEMP=hwmon3/pwm7=40 hwmon3/pwm2=30 MAXTEMP=hwmon3/pwm7=85 hwmon3/pwm2=80 MINSTART=hwmon3/pwm7=95 hwmon3/pwm2=150 MINSTOP=hwmon3/pwm7=75 hwmon3/pwm2=0 MINPWM= hwmon3/pwm7=0 MAXPWM=hwmon3/pwm7=255 hwmon3/pwm2=255 ''; }; services.hddfancontrol.enable = true; services.hddfancontrol.settings = { harddrives = let devices = config.disko.devices.disk; in { disks = [ devices.parity1.device devices.data1.device devices.data2.device ]; pwmPaths = [ "/sys/class/hwmon/hwmon[[:print:]]*/pwm1:20:0" "/sys/class/hwmon/hwmon[[:print:]]*/pwm4:80:60" ]; logVerbosity = "DEBUG"; extraArgs = [ "--min-fan-speed-prct=0" ]; }; }; # Btrfs maintenance services.btrfs.autoScrub = { enable = true; interval = "monthly"; fileSystems = [ "/" ]; }; }