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" ];