[Hardware/Nvidia] rework Nvidia driver selection with a more versatile "variant" option

This commit is contained in:
Antoine Viallon 2023-10-31 23:24:30 +01:00
parent 8c76734e33
commit 1ab3401832
Signed by: aviallon
GPG key ID: 186FC35EDEB25716
3 changed files with 13 additions and 4 deletions

View file

@ -13,13 +13,23 @@ in {
options.aviallon.hardware.nvidia = {
enable = mkEnableOption "enable Nvidia hardware config";
useProprietary = mkEnableOption "nvidia proprietary drivers";
useProprietary = mkEnableOption "nvidia proprietary drivers" // {
default = (cfg.variant == "proprietary");
};
variant = mkOption {
type = with types; enum [ "proprietary" "open" "nouveau" ];
description = "What driver variant to use";
default = "proprietary";
example = "nouveau";
};
};
config = mkIf cfg.enable {
hardware.opengl.driSupport32Bit = true;
aviallon.programs.nvtop.enable = true;
aviallon.hardware.nvidia.useProprietary = mkForce ( cfg.variant == "proprietary" );
};
}

View file

@ -3,7 +3,7 @@ with lib;
let
cfg = config.aviallon.hardware.nvidia;
in {
config = mkIf (cfg.enable && !cfg.useProprietary) {
config = mkIf (cfg.enable && cfg.variant == "nouveau") {
boot.initrd.kernelModules = [ "nouveau" ];
aviallon.boot.cmdline = {

View file

@ -11,7 +11,6 @@ let
in {
options = {
aviallon.hardware.nvidia.proprietary = {
#enable = mkEnableOption "Wether to user NVidia proprietary drivers";
gsync = mkEnableOption "Screen is GSYNC monitor";
vsync = mkOption {
description = "Wether to enable or disable vsync";
@ -38,7 +37,7 @@ in {
};
};
config = mkIf (cfg.enable && cfg.useProprietary) {
config = mkIf (cfg.enable && cfg.variant == "proprietary") {
assertions = [];