Modularize and configure hardware

This commit is contained in:
Isshi0417 2024-07-06 19:39:59 +09:00
parent 90225d8661
commit 7f465515db
9 changed files with 110 additions and 16 deletions

View File

@ -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.

View File

@ -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;
};
};
}

View File

@ -0,0 +1,4 @@
{ config, lib, ... }:
{
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -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" ];
})
];
}

View File

@ -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.";
}
];
};
}

View File

@ -1,8 +0,0 @@
{ pkgs, ... }:
{
swapDevices = [{
device = "/var/lib/swapfile";
size = 20*1024;
}];
}