12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- { config, pkgs, lib, ... }:
- {
- imports = [ <nixpkgs/nixos/modules/installer/sd-card/sd-image.nix> ];
- # 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 = "bcm2709-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";
- }
|