summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/nixos/traits/default.nix1
-rw-r--r--modules/nixos/traits/nvidia.nix47
-rw-r--r--systems/glados/default.nix5
-rw-r--r--systems/glados/gpu.nix35
4 files changed, 52 insertions, 36 deletions
diff --git a/modules/nixos/traits/default.nix b/modules/nixos/traits/default.nix
index 51682a3..6816c56 100644
--- a/modules/nixos/traits/default.nix
+++ b/modules/nixos/traits/default.nix
@@ -4,6 +4,7 @@
./containers.nix
./home-manager.nix
./locale.nix
+ ./nvidia.nix
./secrets.nix
./tailscale.nix
./zram.nix
diff --git a/modules/nixos/traits/nvidia.nix b/modules/nixos/traits/nvidia.nix
new file mode 100644
index 0000000..b66fa80
--- /dev/null
+++ b/modules/nixos/traits/nvidia.nix
@@ -0,0 +1,47 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
+ cfg = config.traits.nvidia;
+ usingNvidia = lib.elem "nvidia" config.services.xserver.videoDrivers;
+in {
+ options.traits.nvidia = {
+ enable = lib.mkEnableOption "NVIDIA drivers";
+ nvk.enable = lib.mkEnableOption "NVK specialisation";
+ };
+
+ config = lib.mkIf cfg.enable (lib.mkMerge [
+ {
+ boot.kernelParams = lib.optional usingNvidia "nvidia_drm.fbdev=1";
+
+ services.xserver.videoDrivers = ["nvidia"];
+
+ hardware = {
+ opengl.extraPackages = [pkgs.vaapiVdpau];
+ nvidia = {
+ package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.latest;
+ modesetting.enable = true;
+ };
+ };
+ }
+
+ (lib.mkIf cfg.nvk.enable {
+ specialisation = {
+ nvk.configuration = {
+ boot = {
+ kernelParams = ["nouveau.config=NvGspRm=1"];
+ initrd.kernelModules = ["nouveau"];
+ };
+
+ hardware.opengl.extraPackages = lib.mkForce [];
+
+ services.xserver.videoDrivers = lib.mkForce ["modesetting"];
+
+ system.nixos.tags = ["with-nvk"];
+ };
+ };
+ })
+ ]);
+}
diff --git a/systems/glados/default.nix b/systems/glados/default.nix
index 847940e..86cb76a 100644
--- a/systems/glados/default.nix
+++ b/systems/glados/default.nix
@@ -6,7 +6,6 @@
imports = [
./boot.nix
./hardware-configuration.nix
- ./gpu.nix
];
archetypes.personal.enable = true;
@@ -20,6 +19,10 @@
traits = {
containers.enable = true;
+ nvidia = {
+ enable = true;
+ nvk.enable = true;
+ };
tailscale.enable = true;
zram.enable = true;
};
diff --git a/systems/glados/gpu.nix b/systems/glados/gpu.nix
deleted file mode 100644
index 8e494c7..0000000
--- a/systems/glados/gpu.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}: let
- usingNvidia = lib.elem "nvidia" config.services.xserver.videoDrivers;
-in {
- boot.kernelParams = lib.optional usingNvidia "nvidia_drm.fbdev=1";
-
- services.xserver.videoDrivers = ["nvidia"];
-
- hardware = {
- opengl.extraPackages = [pkgs.vaapiVdpau];
- nvidia = {
- package = config.boot.kernelPackages.nvidiaPackages.latest;
- modesetting.enable = true;
- };
- };
-
- specialisation = {
- nvk.configuration = {
- boot = {
- kernelParams = ["nouveau.config=NvGspRm=1"];
- initrd.kernelModules = ["nouveau"];
- };
-
- hardware.opengl.extraPackages = lib.mkForce [];
-
- services.xserver.videoDrivers = lib.mkForce ["modesetting"];
-
- system.nixos.tags = ["with-nvk"];
- };
- };
-}