[Hardware/Nvidia] add option for easy configuration of Nouveau NvXXXX=Y style config

Also enable NvBoost on desktop PCs
This commit is contained in:
Antoine Viallon 2023-10-31 23:32:12 +01:00
parent 1ab3401832
commit df3558fe7e
Signed by: aviallon
GPG key ID: 186FC35EDEB25716

View file

@ -3,6 +3,15 @@ with lib;
let
cfg = config.aviallon.hardware.nvidia;
in {
options.aviallon.hardware.nvidia.nouveau = {
config = mkOption {
description = "nouveau boot config";
type = with types; attrsOf (nullOr (oneOf [ int string bool ]));
example = { NvBoost = 1; };
default = {};
};
};
config = mkIf (cfg.enable && cfg.variant == "nouveau") {
boot.initrd.kernelModules = [ "nouveau" ];
@ -11,9 +20,19 @@ in {
"nouveau.pstate" = 1;
"nouveau.runpm" = 1;
"nouveau.modeset" = 1;
"nouveau.config" = "NvBoost=1";
"nouveau.config" = let
toValue = v:
if isBool v
then toString (if v then 1 else 0)
else toString v;
filteredConfig = filterAttrs (n: v: ! isNull v) cfg.nouveau.config;
configList = mapAttrsToList (n: v: "${n}=${toValue v}") filteredConfig;
configString = concatStringsSep "," configList;
in trace "Nouveau config: ${configString}" configString;
};
aviallon.hardware.mesa.enable = mkDefault true;
aviallon.hardware.nvidia.nouveau.config.NvBoost = ifEnable (!config.aviallon.laptop.enable) true;
};
}