nixos/system/machines/tv/hardware.nix
2026-04-19 20:28:02 -04:00

56 lines
No EOL
1.7 KiB
Nix

{ config, lib, pkgs, modulesPath, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = {
initrd = {
availableKernelModules = [ "xhci_pci" "usbhid" ];
kernelModules = [ ];
};
kernelModules = [ ];
extraModulePackages = [ ];
# Pi boots via extlinux from the Hydra SD image — not GRUB/systemd-boot
loader = {
grub.enable = false;
generic-extlinux-compatible.enable = true;
};
};
# Pi 4 GPU acceleration. Per the NixOS wiki, two options are needed:
# fkms-3d -> enables the fake-KMS + V3D renderer overlay
# apply-overlays-dtmerge -> activates the dtmerge-based overlay pipeline
# Without apply-overlays-dtmerge, hardware.deviceTree.overlays entries are
# silently ignored — they show up in the evaluated config but never get
# merged into the emitted DTB.
# https://wiki.nixos.org/wiki/NixOS_on_ARM/Raspberry_Pi_4
hardware.raspberry-pi."4" = {
fkms-3d.enable = true;
apply-overlays-dtmerge.enable = true;
};
hardware.deviceTree = {
enable = true;
filter = "*rpi-4-*.dtb";
};
# UUIDs are baked into the Hydra SD image — identical on every Pi flashed
# from that image. FIRMWARE (FAT) holds the Pi bootloader; NIXOS_SD (ext4)
# is root. /boot/firmware must be mounted so nixos-rebuild can update
# extlinux config on subsequent rebuilds.
fileSystems."/" = {
device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888";
fsType = "ext4";
};
fileSystems."/boot/firmware" = {
device = "/dev/disk/by-uuid/2178-694E";
fsType = "vfat";
options = [ "nofail" ];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
}