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 = [];