{ config, pkgs, lib, ... }: { imports = [ ]; # Define the image name sdImage.imageBaseName = "nixos-rpi2"; sdImage.compressImage = false; # Required: Set populateRootCommands sdImage.populateRootCommands = '' mkdir -p ./files echo "NixOS for Raspberry Pi 2" > ./files/welcome.txt ''; sdImage.populateFirmwareCommands = ""; # Bootloader: Use U-Boot for Raspberry Pi 2 boot.loader.generic-extlinux-compatible.enable = true; hardware.deviceTree.enable = true; hardware.deviceTree.name = "bcm2836-rpi-2-b.dtb"; # Correct DTB for RPi2 # Disable GRUB (not used on Raspberry Pi) boot.loader.grub.enable = false; # Qemu storage drivers # boot.initrd.enable = true; # boot.initrd.kernelModules = [ "brcmfmac" "bcm2835_rng" "mmc_block" "sdhci" "sdhci-pci" "sdhci-pltfm" ]; # boot.initrd.network.enable = false; # boot.initrd.availableKernelModules = [ "mmc_block" "sdhci" "usb_storage" "ext4" ]; # boot.initrd.availableKernelModules = [ "virtio_blk" "virtio_pci" "virtio_mmio" ]; # boot.kernelModules = [ "virtio_blk" "virtio_net" "sd" "sdhci" ]; # hardware.enableAllFirmware = true; boot.kernelPackages = lib.mkForce pkgs.linuxPackages_rpi2; nixpkgs.overlays = [ (final: super: { makeModulesClosure = x: super.makeModulesClosure (x // { allowMissing = true; }); }) ]; boot.supportedFilesystems = lib.mkForce [ "vfat" "ext4" ]; # Networking networking.hostName = "nixos-rpi2"; networking.wireless.enable = false; # Enable this if using WiFi networking.interfaces.eth0.useDHCP = true; # Enable SSH services.openssh.enable = true; # User setup users.users.nixos = { isNormalUser = true; initialPassword = "nixos"; extraGroups = [ "wheel" ]; }; users.groups.nixos = {}; # Set system version (avoid warnings) system.stateVersion = "25.05"; # Enable cross-compilation nixpkgs.crossSystem = { system = "armv7l-linux"; }; }