{ lib, config, ... }:
let
  kver = config.boot.kernelPackages.kernel.version;
in
{
  # Enables the amd cpu scaling https://www.kernel.org/doc/html/latest/admin-guide/pm/amd-pstate.html
  # On recent AMD CPUs this can be more energy efficient.

  imports = [ ./. ];
  boot = lib.mkMerge [
    (lib.mkIf
      (
        (lib.versionAtLeast kver "5.17")
        && (lib.versionOlder kver "6.1")
      )
      {
        kernelParams = [ "initcall_blacklist=acpi_cpufreq_init" ];
        kernelModules = [ "amd-pstate" ];
      })
    (lib.mkIf
      (
        (lib.versionAtLeast kver "6.1")
        && (lib.versionOlder kver "6.3")
      )
      {
        kernelParams = [ "amd_pstate=passive" ];
      })
    (lib.mkIf (lib.versionAtLeast kver "6.3") {
      kernelParams = [ "amd_pstate=active" ];
    })
  ];
}
