diff --git a/hosts/default/configuration.nix b/hosts/default/configuration.nix index 69c3037..aaebab0 100644 --- a/hosts/default/configuration.nix +++ b/hosts/default/configuration.nix @@ -8,15 +8,11 @@ imports = [ # Hardware-related ./hardware-configuration.nix - ../../modules/nixos/hardware/swap.nix - ../../modules/nixos/hardware/nvidia.nix + ../../modules/nixos/alienware/alienware.nix # Gnome customization ../../modules/nixos/gnome.nix - # Nh helper - ../../modules/nixos/nh.nix - # Home-manager inputs.home-manager.nixosModules.default @@ -24,9 +20,6 @@ #../../modules/nixos/stylix/ghibli.nix ../../modules/nixos/stylix/kuromi.nix #../../modules/nixos/stylix/dracula.nix - - # Gaming - ../../modules/nixos/gaming.nix ]; # Bootloader. diff --git a/modules/nixos/alienware/alienware.nix b/modules/nixos/alienware/alienware.nix new file mode 100644 index 0000000..44d7f5c --- /dev/null +++ b/modules/nixos/alienware/alienware.nix @@ -0,0 +1,28 @@ +{ lib, ... }: + +{ + imports = [ + ./hardware/cpu/tiger-lake.nix + ./hardware/gpu/nvidia.nix + ./gaming.nix + ./nh.nix + ]; + + swapDevices = [{ + device = "/var/lib/swapfile"; + size = 20*1024; + }]; + + hardware = { + enableRedistributableFirmware = lib.mkDefault true; + }; + + services = { + fwupd = { + enable = lib.mkDefault true; + }; + thermald = { + enable = lib.mkDefault true; + }; + }; +} \ No newline at end of file diff --git a/modules/nixos/gaming.nix b/modules/nixos/alienware/gaming.nix similarity index 100% rename from modules/nixos/gaming.nix rename to modules/nixos/alienware/gaming.nix diff --git a/modules/nixos/alienware/hardware/cpu/intel.nix b/modules/nixos/alienware/hardware/cpu/intel.nix new file mode 100644 index 0000000..ca0626d --- /dev/null +++ b/modules/nixos/alienware/hardware/cpu/intel.nix @@ -0,0 +1,4 @@ +{ config, lib, ... }: +{ + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} \ No newline at end of file diff --git a/modules/nixos/alienware/hardware/cpu/tiger-lake.nix b/modules/nixos/alienware/hardware/cpu/tiger-lake.nix new file mode 100644 index 0000000..cb47faa --- /dev/null +++ b/modules/nixos/alienware/hardware/cpu/tiger-lake.nix @@ -0,0 +1,15 @@ +{ config, lib, ... }: +{ + imports = [ + ./intel.nix + ../gpu/intel.nix + ]; + config = lib.mkMerge [ + (lib.mkIf (lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.8") { + hardware.intelgpu.driver = "xe"; + }) + (lib.mkIf (config.hardware.intelgpu.driver == "i915") { + boot.kernelParams = [ "i915.enable_guc=3" ]; + }) + ]; +} \ No newline at end of file diff --git a/modules/nixos/alienware/hardware/gpu/intel.nix b/modules/nixos/alienware/hardware/gpu/intel.nix new file mode 100644 index 0000000..3257c21 --- /dev/null +++ b/modules/nixos/alienware/hardware/gpu/intel.nix @@ -0,0 +1,62 @@ +{ + config, + lib, + pkgs, + ... +}: +{ + options.hardware.intelgpu.driver = lib.mkOption { + description = "Intel GPU driver to use"; + type = lib.types.enum [ + "i915" + "xe" + ]; + default = "i915"; + }; + + options.hardware.intelgpu.loadInInitrd = + lib.mkEnableOption ( + lib.mdDoc "Load the Intel GPU kernel module at stage 1 boot. (Added to `boot.initrd.kernelModules`)" + ) + // { + default = true; + }; + + config = { + boot.initrd.kernelModules = [ config.hardware.intelgpu.driver ]; + + environment.variables = { + VDPAU_DRIVER = lib.mkIf config.hardware.graphics.enable (lib.mkDefault "va_gl"); + }; + + hardware.graphics.extraPackages = with pkgs; [ + ( + if (lib.versionOlder (lib.versions.majorMinor lib.version) "23.11") then + vaapiIntel + else + intel-vaapi-driver + ) + intel-media-driver + ]; + + hardware.graphics.extraPackages32 = with pkgs.driversi686Linux; [ + ( + if (lib.versionOlder (lib.versions.majorMinor lib.version) "23.11") then + vaapiIntel + else + intel-vaapi-driver + ) + intel-media-driver + ]; + + assertions = [ + { + assertion = ( + config.hardware.intelgpu.driver != "xe" + || lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.8" + ); + message = "Intel Xe GPU driver is not supported on kernels earlier than 6.8. Update or use the i915 driver."; + } + ]; + }; +} \ No newline at end of file diff --git a/modules/nixos/hardware/nvidia.nix b/modules/nixos/alienware/hardware/gpu/nvidia.nix similarity index 100% rename from modules/nixos/hardware/nvidia.nix rename to modules/nixos/alienware/hardware/gpu/nvidia.nix diff --git a/modules/nixos/nh.nix b/modules/nixos/alienware/nh.nix similarity index 100% rename from modules/nixos/nh.nix rename to modules/nixos/alienware/nh.nix diff --git a/modules/nixos/hardware/swap.nix b/modules/nixos/hardware/swap.nix deleted file mode 100644 index 38682ce..0000000 --- a/modules/nixos/hardware/swap.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ pkgs, ... }: - -{ - swapDevices = [{ - device = "/var/lib/swapfile"; - size = 20*1024; - }]; -} \ No newline at end of file