# Configuration common to all Raspberry Pi 2 Model B devices { config, pkgs, lib, ... }: { boot = { consoleLogLevel = lib.mkDefault 7; initrd = { availableKernelModules = [ "bcm2835_dma" # Allows early (earlier) mode setting "i2c_bcm2835" # Allows early (earlier) mode setting "usbhid" "usb_storage" "vc4" # Allows early (earlier) mode setting ]; }; kernelPackages = pkgs.linuxPackages_latest; # For a Raspberry Pi 2 or 3) kernelParams = [ "console=ttyS0,115200n8" # Enable the serial console "console=ttyAMA0,115200n8" "console=tty0" ]; loader = { generic-extlinux-compatible = { enable = true; # Enables the generation of /boot/extlinux/extlinux.conf }; grub = { enable = false; # NixOS wants to enable GRUB by default. }; raspberryPi = { enable = true; version = 3; firmwareConfig = '' hdmi_force_hotplug=1 # Enable headless booting ''; }; }; }; # File systems configuration for using the installer's partition layout fileSystems = { "/" = { device = "/dev/disk/by-label/NIXOS_SD"; fsType = "ext4"; }; "/boot/firmware" = { device = "/dev/disk/by-label/FIRMWARE"; fsType = "vfat"; # Alternatively, this could be removed from the configuration. # The filesystem is not needed at runtime, it could be treated # as an opaque blob instead of a discrete FAT32 filesystem. options = [ "nofail" "noauto" ]; }; "/var" = { device = "/dev/disk/by-label/var"; fsType = "ext4"; }; }; # !!! Adding a swap file is optional, but strongly recommended! swapDevices = [{ device = "/swapfile"; size = 1024; }]; hardware = { enableRedistributableFirmware = true; # Enable support for Pi firmware blobs }; networking = { enableB43Firmware = false; # If true, enable Pi wireless firmware }; sound.enable = false; # Disable sound. environment.systemPackages = with pkgs; [ libraspberrypi # Userland tools for the Raspberry Pi board ]; }