nixos-lib/hardware/nvidia/opensource.nix

56 lines
1.3 KiB
Nix

{
config,
pkgs,
lib,
...
}:
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
str
bool
])
);
example = {
NvBoost = 1;
};
default = { };
};
};
config = mkIf (cfg.enable && cfg.variant == "nouveau") {
boot.initrd.kernelModules = [ "nouveau" ];
aviallon.boot.cmdline = {
"nouveau.pstate" = 1;
"nouveau.runpm" = 1;
"nouveau.modeset" = 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;
environment.variables = {
RUSTICL_ENABLE = "nouveau";
};
};
}