mirror of
https://github.com/aviallon/nixos-lib.git
synced 2026-04-05 17:27:50 +00:00
51 lines
1.4 KiB
Nix
51 lines
1.4 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
with lib;
|
|
let
|
|
generalCfg = config.aviallon.general;
|
|
enableZenpower =
|
|
(!isNull (builtins.match "znver[1-3]" generalCfg.cpu.arch)) && (versionOlder kernelVersion "6.13");
|
|
kernelVersion = getVersion config.boot.kernelPackages.kernel;
|
|
in
|
|
{
|
|
config = mkIf (generalCfg.cpu.vendor == "amd") {
|
|
boot.kernel.sysctl = {
|
|
|
|
# Why: https://www.phoronix.com/news/Ryzen-Segv-Response
|
|
# Workaround: https://forums.gentoo.org/viewtopic-p-2605135.html#2605135
|
|
"kernel.randomize_va_space" = mkIf (generalCfg.cpu.arch == "znver1") (
|
|
warn "Disable Adress Space Layout Randomization on Ryzen 1 CPU" 0
|
|
);
|
|
};
|
|
|
|
aviallon.boot.cmdline = {
|
|
"amd_pstate" =
|
|
if versionAtLeast kernelVersion "6.4" then
|
|
"guided"
|
|
else if versionAtLeast kernelVersion "6.3" then
|
|
"active"
|
|
else
|
|
"passive";
|
|
}
|
|
// optionalAttrs (generalCfg.cpu.arch == "znver2") {
|
|
# Required for Zen 2
|
|
"amd_pstate.shared_memory" = 1;
|
|
};
|
|
|
|
aviallon.boot.patches = mkIf config.aviallon.optimizations.enable { };
|
|
|
|
boot.extraModulePackages =
|
|
with config.boot.kernelPackages;
|
|
[ ] ++ optional enableZenpower (info "enable zenpower for Ryzen [1-3] CPU" zenpower);
|
|
|
|
boot.kernelModules = [ ] ++ optional enableZenpower "zenpower";
|
|
|
|
boot.blacklistedKernelModules =
|
|
[ ] ++ optional enableZenpower "k10-temp" # Superseded by zenpower
|
|
;
|
|
};
|
|
}
|