From 62f94ad85e9af88850275dd2aeb53a8af3f76de0 Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Sun, 18 May 2025 15:10:57 +0800 Subject: [PATCH] feat(modules/hardware/nvidia): add nvidia configuration --- modules/nixos/hardware/default.nix | 19 +++++++++++++------ modules/nixos/hardware/nvidia.nix | 16 ++++++++++++++++ systems/x86_64-linux/nemesis/default.nix | 1 + 3 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 modules/nixos/hardware/nvidia.nix diff --git a/modules/nixos/hardware/default.nix b/modules/nixos/hardware/default.nix index a53b299..1463387 100644 --- a/modules/nixos/hardware/default.nix +++ b/modules/nixos/hardware/default.nix @@ -2,14 +2,21 @@ { imports = [ ./btrfs.nix + ./nvidia.nix ]; - options = { - hardware.drives.btrfs.enable = lib.mkEnableOption ""; - hardware.drives.btrfs.drive = lib.mkOption { + options.hardware = { + drives.btrfs = { + enable = lib.mkEnableOption ""; + drive = lib.mkOption { + type = lib.types.str; + default = ""; + }; + ephemeralRoot = lib.mkEnableOption ""; + }; + gpu = lib.mkOption { type = lib.types.str; - default = ""; - }; - hardware.drives.btrfs.ephemeralRoot = lib.mkEnableOption ""; + default = ""; + }; }; } diff --git a/modules/nixos/hardware/nvidia.nix b/modules/nixos/hardware/nvidia.nix new file mode 100644 index 0000000..030e6cc --- /dev/null +++ b/modules/nixos/hardware/nvidia.nix @@ -0,0 +1,16 @@ +{ lib, config, pkgs, ... }: +{ + config = lib.mkIf (config.hardware.gpu == "nvidia") (lib.mkMerge [ + { + #TODO: Setup CUDA + hardware.graphics.enable = true; + hardware.graphics.extraPackages = with pkgs; [ + nvidia-vaapi-driver + ]; + services.xserver.videoDrivers = [ "nvidia" ]; + hardware.nvidia.open = true; + hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.latest; + nixpkgs.config.allowUnfree = true; + } + ]); +} diff --git a/systems/x86_64-linux/nemesis/default.nix b/systems/x86_64-linux/nemesis/default.nix index e486ab2..a0e75be 100644 --- a/systems/x86_64-linux/nemesis/default.nix +++ b/systems/x86_64-linux/nemesis/default.nix @@ -5,6 +5,7 @@ drive = "/dev/disk/by-id/nvme-CT2000P3SSD8_2325E6E77434"; ephemeralRoot = true; }; + hardware.gpu = "nvidia"; boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ "dm-snapshot" ];