system.nix 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. { config, ... }:
  2. {
  3. # Boot configuration
  4. boot = {
  5. # Use systemd-boot for UEFI systems
  6. loader.systemd-boot.enable = true;
  7. loader.efi.canTouchEfiVariables = true;
  8. loader.grub.devices = [
  9. config.disko.devices.disk.main.device
  10. ];
  11. loader.timeout = 3;
  12. # Kernel parameters for server workload
  13. blacklistedKernelModules = [ "k10temp" ];
  14. kernelParams = [ "rootflags=compress=zstd:1,noatime" ];
  15. kernelModules = [ "zenpower" "nct6775" ];
  16. extraModulePackages = [ config.boot.kernelPackages.zenpower ];
  17. # Enable KSM for memory efficiency with containers
  18. kernel.sysctl = {
  19. "kernel.sysrq" = 1;
  20. "vm.swappiness" = 10;
  21. "net.core.default_qdisc" = "cake";
  22. };
  23. };
  24. hardware.fancontrol = {
  25. enable = true;
  26. config = ''
  27. INTERVAL=10
  28. DEVPATH=hwmon1=devices/pci0000:00/0000:00:02.2/0000:04:00.0/nvme/nvme0 hwmon2=devices/platform/nct6775.656
  29. DEVNAME=hwmon1=nvme hwmon2=nct6798
  30. FCTEMPS=hwmon2/pwm7=hwmon1/temp1_input hwmon2/pwm2=hwmon1/temp1_input
  31. FCFANS=hwmon2/pwm7=hwmon2/fan7_input hwmon2/pwm2=hwmon2/fan2_input
  32. MINTEMP=hwmon2/pwm7=30 hwmon2/pwm2=30
  33. MAXTEMP=hwmon2/pwm7=60 hwmon2/pwm2=60
  34. MINSTART=hwmon2/pwm7=95 hwmon2/pwm2=150
  35. MINSTOP=hwmon2/pwm7=75 hwmon2/pwm2=0
  36. '';
  37. };
  38. services.hddfancontrol.enable = true;
  39. services.hddfancontrol.settings = {
  40. harddrives =
  41. let
  42. devices = config.disko.devices.disk;
  43. in
  44. {
  45. disks = [
  46. devices.parity1.device
  47. devices.data1.device
  48. devices.data2.device
  49. ];
  50. pwmPaths = [
  51. "/sys/class/hwmon/hwmon2/pwm1:20:0"
  52. "/sys/class/hwmon/hwmon2/pwm4:80:60"
  53. ];
  54. logVerbosity = "DEBUG";
  55. extraArgs = [
  56. "--min-fan-speed-prct=0"
  57. ];
  58. };
  59. };
  60. # Btrfs maintenance
  61. services.btrfs.autoScrub = {
  62. enable = true;
  63. interval = "monthly";
  64. fileSystems = [ "/" ];
  65. };
  66. }