Skip to content

xealstudios/nixos-pi-zero-2

 
 

Repository files navigation

Building a NixOS SD image for a Raspberry Pi Zero 2 w

  1. Update zero2w.nix

In particular, don't forget:

  • to configure your wifi
  • to add an admin user able to connect through ssh
  1. Build the image
nix build -L .#nixosConfigurations.zero2w.config.system.build.sdImage
  1. Copy the image in your sd card
DEVICE=/dev/disk5 # Whatever your sd card reader is
sudo dd if=result/sd-image/zero2.img of=$DEVICE bs=1M conv=fsync status=progress
  1. Boot your Zero
  2. Get your IP
ifconfig wlan0
  1. From another machine, rebuild the system:
ZERO2_IP=<the-zero2-ip>
SSH_USER=<the-admin-user-in-the-pi>
nix run github:serokell/deploy-rs .#zero2w -- --ssh-user $SSH_USER --hostname $ZERO2_IP

Notes

  • The Zero 2 doesn't have enough RAM to build itself. An initial lead was to create a swap partition, but it turns out it was a bad idea, as it would have decreased the sd card lifetime (sd cards don't like many write operations). A zram swap is not big enough to work. Hence the use of deploy-rs.
    • Note that nixos-rebuild --target-host would work instead of using deploy-rs. but as nixos-rebuild is not available on Darwin, I'm using deploy-rs that works both on NixOS and Darwin.
  • I still couldn't find a way to use boot.kernelPackages = pkgs.linuxKernel.packages.linux_rpi3.
  • the sdImage.extraFirmwareConfig option is not ideal as it cannot update config.txt after it is created in the sd image.

OTG ethernet

OTG ethernet is enabled by default and will force usb into device mode. Disable OTG ethernet to use the usb port.

Serial Console

The serial console is enabled by default and can be disabled

See also

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Nix 100.0%