dotfiles/nixos/systems/omen/hardware.nix

167 lines
4.1 KiB
Nix
Raw Normal View History

# SPDX-FileCopyrightText: 2022 Richard Brežák <richard@brezak.sk>
#
# SPDX-License-Identifier: LGPL-3.0-or-later
{
pkgs,
lib,
inputs',
options,
config,
...
}: let
inherit
(lib)
singleton
mkForce
mapAttrs
mkOverride
filter
;
kernelPackages = pkgs.linuxKernel.packages.linux_6_10;
zfs_2_2_6 = args:
(pkgs.callPackage
(
{
callPackage,
kernel ? null,
stdenv,
linuxKernel,
nixosTests,
...
} @ args: let
stdenv' =
if kernel == null
then stdenv
else kernel.stdenv;
in (callPackage "${inputs'.nixpkgs}/pkgs/os-specific/linux/zfs/generic.nix" args {
# You have to ensure that in `pkgs/top-level/linux-kernels.nix`
# this attribute is the correct one for this package.
kernelModuleAttribute = "zfs_2_2";
# check the release notes for compatible kernels
kernelCompatible = kernel: kernel.kernelOlder "6.11";
# this package should point to the latest release.
version = "2.2.6";
tests = [
nixosTests.zfs.installer
nixosTests.zfs.series_2_2
];
hash = "sha256-wkgoYg6uQOHVq8a9sJXzO/QXJ6q28l7JXWkC+BFvOb0=";
})
)
args)
.overrideAttrs (old: {
postInstall = lib.pipe old.postInstall [
(lib.splitString "\n")
(lib.filter (line: line != "(cd $out/share/bash-completion/completions; ln -s zfs zpool)"))
lib.concatLines
];
});
in {
environment.systemPackages = [
kernelPackages.turbostat
];
environment.variables.NOUVEAU_USE_ZINK = "1";
hardware.cpu.intel.updateMicrocode = true;
boot = {
initrd.systemd.enable = true;
initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"usb_storage"
"sr_mod"
"rtsx_pci_sdmmc"
"nvme"
"vmd"
];
initrd.kernelModules = [
"dm_crypt"
"encrypted_keys"
"trusted"
"nhpoly1305_avx2"
"nhpoly1305_sse2"
"nhpoly1305"
"crypto_null"
"polyval_clmulni"
"polyval_generic"
"gf128mul"
"dm_mod"
"crypto_simd"
"cryptd"
"adiantum"
"libpoly1305"
"libchacha20poly1305"
"chacha_x86_64"
"libchacha"
"poly1305_x86_64"
];
kernelModules = [
"kvm-intel"
];
kernelParams = [
"zfs.zfs_arc_max=8589934592"
"zfs.zfs_arc_sys_free=3221225472"
"nouveau.config=NvGspRm=1"
];
kernelPackages = kernelPackages;
zfs.package = zfs_2_2_6 {
configFile = "user";
};
zfs.modulePackage = zfs_2_2_6 {
configFile = "kernel";
kernel = config.boot.kernelPackages.kernel;
};
};
hardware.enableRedistributableFirmware = true;
# hardware.tuxedo-keyboard.enable = true;
chaotic.mesa-git = {
enable = true;
fallbackSpecialisation = false;
};
specialisation.nvidia.configuration = {config, ...}: {
environment.variables.NIXOS_SPECIALISATION = "nvidia";
boot.loader.grub.enable = mkOverride 0 false;
boot.kernelPackages = mkForce pkgs.linuxPackages_6_6;
boot.kernelParams = [
"nvidia.NVreg_EnableS0ixPowerManagement=1"
"nvidia.NVreg_S0ixPowerManagementVideoMemoryThreshold=2048"
];
chaotic.mesa-git.enable = mkForce false;
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.mkDriver {
version = "550.120";
sha256_64bit = "sha256-gBkoJ0dTzM52JwmOoHjMNwcN2uBN46oIRZHAX8cDVpc=";
sha256_aarch64 = "";
openSha256 = "sha256-O3OrGGDR+xrpfyPVQ04aM3eGI6aWuZfRzmaPjMfnGIg=";
settingsSha256 = "sha256-fPfIPwpIijoUpNlAUt9C8EeXR5In633qnlelL+btGbU=";
persistencedSha256 = "sha256-ztEemWt0VR+cQbxDmMnAbEVfThdvASHni4SJ0dTZ2T4=";
};
hardware.nvidia = {
open = true;
nvidiaPersistenced = true;
powerManagement.enable = true;
powerManagement.finegrained = true;
prime.reverseSync.enable = false;
prime.offload.enable = true;
modesetting.enable = true;
};
services.xserver.videoDrivers = mkForce ["nvidia"];
};
}