97 lines
2.3 KiB
Nix
97 lines
2.3 KiB
Nix
{
|
|
inputs,
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
modulesPath,
|
|
...
|
|
}:
|
|
|
|
{
|
|
imports = [
|
|
inputs.nixos-hardware.nixosModules.raspberry-pi-4
|
|
(modulesPath + "/installer/sd-card/sd-image-aarch64.nix")
|
|
];
|
|
|
|
boot = {
|
|
kernelParams = [
|
|
"panic=0"
|
|
];
|
|
supportedFilesystems = lib.mkForce [
|
|
"f2fs"
|
|
"vfat"
|
|
"xfs"
|
|
];
|
|
tmp.cleanOnBoot = false;
|
|
};
|
|
|
|
hardware = {
|
|
raspberry-pi."4" = {
|
|
apply-overlays-dtmerge.enable = true;
|
|
audio.enable = false;
|
|
xhci.enable = false;
|
|
};
|
|
deviceTree = {
|
|
enable = true;
|
|
filter = "*rpi-4-*.dtb";
|
|
# From https://github.com/Electrostasy/dots/blob/3b81723feece67610a252ce754912f6769f0cd34/hosts/phobos/klipper.nix#L43-L65
|
|
overlays =
|
|
let
|
|
mkCompatibleDtsFile =
|
|
dtbo:
|
|
let
|
|
drv =
|
|
pkgs.runCommand "fix-dts"
|
|
{
|
|
nativeBuildInputs = with pkgs; [
|
|
dtc
|
|
gnused
|
|
];
|
|
}
|
|
''
|
|
mkdir "$out"
|
|
dtc -I dtb -O dts ${dtbo} | sed -e 's/bcm2835/bcm2711/' > $out/overlay.dts
|
|
'';
|
|
in
|
|
"${drv}/overlay.dts";
|
|
|
|
inherit (config.boot.kernelPackages) kernel;
|
|
in
|
|
[
|
|
{
|
|
name = "imx708.dtbo";
|
|
dtsFile = mkCompatibleDtsFile "${kernel}/dtbs/overlays/imx708.dtbo";
|
|
}
|
|
{
|
|
name = "vc4-kms-v3d-pi4.dtbo";
|
|
dtsFile = mkCompatibleDtsFile "${kernel}/dtbs/overlays/vc4-kms-v3d-pi4.dtbo";
|
|
}
|
|
];
|
|
};
|
|
firmware = with pkgs; [
|
|
firmwareLinuxNonfree
|
|
];
|
|
};
|
|
|
|
services.udev.extraRules = ''
|
|
SUBSYSTEM=="rpivid-*", GROUP="video", MODE="0660"
|
|
KERNEL=="vcsm-cma", GROUP="video", MODE="0660"
|
|
SUBSYSTEM=="dma_heap", GROUP="video", MODE="0660"
|
|
SUBSYSTEM=="dma_heap", KERNEL=="linux,cma", SYMLINK+="dma_heap/vidbuf_cached", OPTIONS+="link_priority=-50"
|
|
'';
|
|
|
|
nixpkgs.overlays = [
|
|
(final: super: {
|
|
makeModulesClosure = x: super.makeModulesClosure (x // { allowMissing = true; });
|
|
})
|
|
];
|
|
|
|
fileSystems = {
|
|
"/" = {
|
|
device = "/dev/disk/by-label/NIXOS_SD";
|
|
fsType = "ext4";
|
|
options = [ "noatime" ];
|
|
};
|
|
};
|
|
}
|