refactor kernel module

This commit is contained in:
2025-07-02 20:16:20 +02:00
parent 364d703f3d
commit aa83cf62af
5 changed files with 37 additions and 29 deletions

View File

@@ -2,9 +2,8 @@
nixos = { nixos = {
boot = { boot = {
kernel = { kernel = {
extraBlacklistedModules = []; variant = "latest";
extraKernelParams = []; hardware = ["intel"];
variant = "stable";
}; };
loader = { loader = {
default = { default = {

View File

@@ -2,10 +2,8 @@
nixos = { nixos = {
boot = { boot = {
kernel = { kernel = {
extraBlacklistedModules = [];
extraKernelParams = [];
hardware = "amd";
variant = "latest"; variant = "latest";
hardware = ["amd"];
}; };
loader = { loader = {
default = { default = {

View File

@@ -2,10 +2,8 @@
nixos = { nixos = {
boot = { boot = {
kernel = { kernel = {
extraBlacklistedModules = [];
extraKernelParams = [];
hardware = "amd";
variant = "latest"; variant = "latest";
hardware = ["amd"];
}; };
loader = { loader = {
default = { default = {

View File

@@ -2,10 +2,8 @@
nixos = { nixos = {
boot = { boot = {
kernel = { kernel = {
extraBlacklistedModules = [];
extraKernelParams = [];
hardware = "nvidia";
variant = "latest"; variant = "latest";
hardware = ["nvidia"];
}; };
loader = { loader = {
default = { default = {

View File

@@ -6,6 +6,8 @@
}: let }: let
inherit (lib) mkOption types; inherit (lib) mkOption types;
cfg = config.nixos.boot.kernel; cfg = config.nixos.boot.kernel;
hasHardware = hw: builtins.elem hw cfg.hardware;
in { in {
options = { options = {
nixos.boot.kernel = { nixos.boot.kernel = {
@@ -16,21 +18,21 @@ in {
}; };
hardware = mkOption { hardware = mkOption {
type = types.enum ["amd" "nvidia"]; type = types.listOf (types.enum ["amd" "intel" "nvidia"]);
default = ""; default = [];
description = "Hardware type (GPU) configuration."; description = "List of hardware types (e.g. GPU and CPU vendors) to configure kernel settings for.";
}; };
extraKernelParams = mkOption { extraKernelParams = mkOption {
type = types.listOf lib.types.str; type = types.listOf types.str;
default = []; default = [];
description = "Additional kernel parameters."; description = "Additional kernel parameters.";
}; };
extraBlacklistedModules = mkOption { extraBlacklistedModules = mkOption {
type = types.listOf lib.types.str; type = types.listOf types.str;
default = []; default = [];
description = "Additional kernel nixos.to blacklist."; description = "Additional kernel modules to blacklist.";
}; };
}; };
}; };
@@ -40,7 +42,7 @@ in {
consoleLogLevel = 3; consoleLogLevel = 3;
kernelPackages = let kernelPackages = let
variant = cfg.variant or "latest"; # Ensure a default value variant = cfg.variant or "latest";
in in
if variant == "stable" if variant == "stable"
then pkgs.linuxPackages then pkgs.linuxPackages
@@ -51,28 +53,41 @@ in {
else throw "Unknown kernel variant: ${variant}"; else throw "Unknown kernel variant: ${variant}";
kernelParams = kernelParams =
[ ["quiet" "splash"]
"quiet"
"splash"
]
++ ( ++ (
if cfg.hardware == "amd" if hasHardware "amd"
then ["amd_pstate=active"] then ["amd_pstate=active"]
else [] else []
) )
++ (
if hasHardware "intel"
then []
else []
)
++ (
if hasHardware "nvidia"
then []
else []
)
++ cfg.extraKernelParams; ++ cfg.extraKernelParams;
blacklistedKernelModules = blacklistedKernelModules =
( (
if cfg.hardware == "nvidia" if hasHardware "amd"
then []
else []
)
++ (
if hasHardware "intel"
then []
else []
)
++ (
if hasHardware "nvidia"
then ["nouveau"] then ["nouveau"]
else [] else []
) )
++ cfg.extraBlacklistedModules; ++ cfg.extraBlacklistedModules;
}; };
# chaotic = mkIf (cfg.variant == "cachyos") {
# environment.systemPackages = [pkgs.scx.lavd];
# };
}; };
} }