Code Monkey home page Code Monkey logo

nixos-pi-zero-2's Introduction

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

  1. Update common.nix

In particular, don't forget:

  • to configure your wifi
  • to change the admin user able to connect through ssh
  1. Build the image

Zero 2 W:

nix build -L .#nixosConfigurations.zero2w.config.system.build.sdImage

Or for Pi 4:

nix build -L .#nixosConfigurations.pi4.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/pi.img of=$DEVICE bs=1M conv=fsync status=progress
  1. Boot your Pi
  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>

For Zero 2 W:

nix run github:serokell/deploy-rs .#zero2w -- --ssh-user $SSH_USER --hostname $ZERO2_IP

For Pi 4:

nix run github:serokell/deploy-rs .#pi4 -- --ssh-user $SSH_USER --hostname $ZERO2_IP

Notes

  • Various features are much better supported on the Pi 4 than on the Zero 2 W because the Pi 4 has a nixos-hardware profile.
  • 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.

See also

nixos-pi-zero-2's People

Contributors

mcdonc avatar plmercereau avatar rjpcasalino avatar

Stargazers

Cody W Tucker avatar Ricardo Valero de la Rosa avatar  avatar Chris Lloyd avatar Maja Bojarska avatar Glenn avatar Matt Carrier avatar

Watchers

Stefan Schroeder avatar  avatar Glenn avatar

Forkers

bnlrnz djbender

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.