From 1ab3401832a8dc278fdc1392392db4a9ab4d83cd Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Tue, 31 Oct 2023 23:24:30 +0100 Subject: [PATCH] [Hardware/Nvidia] rework Nvidia driver selection with a more versatile "variant" option --- hardware/nvidia/default.nix | 12 +++++++++++- hardware/nvidia/opensource.nix | 2 +- hardware/nvidia/proprietary.nix | 3 +-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/hardware/nvidia/default.nix b/hardware/nvidia/default.nix index c22766d..c9fc5f1 100644 --- a/hardware/nvidia/default.nix +++ b/hardware/nvidia/default.nix @@ -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" ); }; } diff --git a/hardware/nvidia/opensource.nix b/hardware/nvidia/opensource.nix index 0306891..7f9ddf8 100644 --- a/hardware/nvidia/opensource.nix +++ b/hardware/nvidia/opensource.nix @@ -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 = { diff --git a/hardware/nvidia/proprietary.nix b/hardware/nvidia/proprietary.nix index 70f9e35..c6a6556 100644 --- a/hardware/nvidia/proprietary.nix +++ b/hardware/nvidia/proprietary.nix @@ -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 = [];