nixos-config/modules/hosts/yggdrasil/hardware.nix

53 lines
1.4 KiB
Nix

{
flake.modules.nixos."hosts/yggdrasil" =
{
config,
lib,
pkgs,
...
}:
let
zfsCompatibleKernelPackages = lib.filterAttrs (
name: kernelPackages:
(builtins.match "linux_[0-9]+_[0-9]+" name) != null
&& (builtins.tryEval kernelPackages).success
&& (!kernelPackages.${config.boot.zfs.package.kernelModuleAttribute}.meta.broken)
) pkgs.linuxKernel.packages;
latestKernelPackage = lib.last (
lib.sort (a: b: (lib.versionOlder a.kernel.version b.kernel.version)) (
builtins.attrValues zfsCompatibleKernelPackages
)
);
in
{
boot = {
zfs.package = pkgs.zfs_2_4;
kernelPackages = latestKernelPackage;
extraModulePackages = with config.boot.kernelPackages; [ r8125 ];
blacklistedKernelModules = [ "r8169" ];
kernelParams = [ "split_lock_detect=off" ];
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
initrd.availableKernelModules = [
"nvme"
"ahci"
"xhci_pci"
"usbhid"
"usb_storage"
"sd_mod"
];
kernelModules = [ "kvm-amd" ];
};
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.enableRedistributableFirmware = true;
hardware.cpu.amd.updateMicrocode = true;
};
}