hosts/PiZero2W/ — host config plus serial-ppp.nix (pppd on /dev/ttyAMA0, 10.0.0.1↔10.0.0.2, NAT out of wlan0, socket-activated telnetd for the Psion's terminal client), email-proxy.nix, an SD-image variant, and a hardware-configuration.nix placeholder.
Host table entry on nixos-hardware's raspberry-pi-3 profile — the Zero 2 W is the Pi 3's BCM2837 SoC. nixpkgs' linuxPackages_rpi02w is deprecated and warns that the linux-rpi series is being removed in favour of nixos-hardware.
The host owns its firmware partition (hardware.raspberry-pi.firmware), which is what puts the disable-bt and uart0,ctsrts overlays into config.txt so /dev/ttyAMA0 is the RS232 header rather than Bluetooth. uboot.enable keeps the U-Boot → extlinux boot path that the rewritten config.txt would otherwise lose.
packages.aarch64-linux.zero2w-sd-image — the host's own configuration as an installable card. The board has no Ethernet and no free serial port, so a generic image would leave no way in.
docs/hosts/pizero2w.md, plus the README host table and shared-layer notes.
its sd-image module calls lib.mdDoc, removed in 26.05;
its cross-compilation recipe sets nixpkgs.pkgs, which nixos/modules/misc/nixpkgs.nix forbids alongside a non-empty nixpkgs.config — and every host here sets allowUnfreePredicate.
Its useful content is ~40 lines, most of which nixos-hardware already provides.
Security
The Psion speaks no TLS, so telnet (23) and the mail proxy (110/25) are cleartext and unauthenticated. The firewall is the confinement: ppp0 is trusted, wlan0 is not, and those ports are never opened there. Only key-only sshd is reachable over wifi. Documented in the host notes.
nix flake check — green against the merged proxy flake.
lyrathorpe-zero2w and zero2w-sd-image both evaluate.
Rendered and reviewed the generated config.txt, /etc/ppp/peers/psion, and the telnetd units.
Not yet run on hardware; the board is not built.
## What
A headless `aarch64` companion for a Psion 5MX, after [Kian Ryan's PPP modem and terminal write-up](https://www.kianryan.co.uk/2022-11-28-psion-sidecar-ppp-modem-and-terminal/).
- `hosts/PiZero2W/` — host config plus `serial-ppp.nix` (pppd on `/dev/ttyAMA0`, `10.0.0.1`↔`10.0.0.2`, NAT out of `wlan0`, socket-activated telnetd for the Psion's terminal client), `email-proxy.nix`, an SD-image variant, and a `hardware-configuration.nix` placeholder.
- Host table entry on `nixos-hardware`'s `raspberry-pi-3` profile — the Zero 2 W is the Pi 3's BCM2837 SoC. nixpkgs' `linuxPackages_rpi02w` is deprecated and warns that the `linux-rpi` series is being removed in favour of nixos-hardware.
- The host owns its firmware partition (`hardware.raspberry-pi.firmware`), which is what puts the `disable-bt` and `uart0,ctsrts` overlays into `config.txt` so `/dev/ttyAMA0` is the RS232 header rather than Bluetooth. `uboot.enable` keeps the U-Boot → extlinux boot path that the rewritten `config.txt` would otherwise lose.
- `packages.aarch64-linux.zero2w-sd-image` — the host's own configuration as an installable card. The board has no Ethernet and no free serial port, so a generic image would leave no way in.
- `docs/hosts/pizero2w.md`, plus the README host table and shared-layer notes.
## Why not the upstream Pi Zero 2 flake
[plmercereau/nixos-pi-zero-2](https://github.com/plmercereau/nixos-pi-zero-2) is pinned to nixpkgs 25.11 and is not consumable here:
- its `sd-image` module calls `lib.mdDoc`, removed in 26.05;
- its cross-compilation recipe sets `nixpkgs.pkgs`, which `nixos/modules/misc/nixpkgs.nix` forbids alongside a non-empty `nixpkgs.config` — and every host here sets `allowUnfreePredicate`.
Its useful content is ~40 lines, most of which nixos-hardware already provides.
## Security
The Psion speaks no TLS, so telnet (23) and the mail proxy (110/25) are cleartext and unauthenticated. The firewall is the confinement: `ppp0` is trusted, `wlan0` is not, and those ports are never opened there. Only key-only sshd is reachable over wifi. Documented in the host notes.
## Dependency
Consumes [legacy-email-proxy#16](https://code.emmathe.dev/lyrathorpe/legacy-email-proxy/pulls/16) (merged); `flake.lock` pins it at `f1e1373`.
## Verification
- `nix flake check` — green against the merged proxy flake.
- `lyrathorpe-zero2w` and `zero2w-sd-image` both evaluate.
- Rendered and reviewed the generated `config.txt`, `/etc/ppp/peers/psion`, and the telnetd units.
- Not yet run on hardware; the board is not built.
A headless aarch64 companion for a Psion 5MX: PPP over RS232 with NAT out to
wifi and a telnet login, plus a cleartext POP3/SMTP proxy for the Psion's mail
client.
- hosts/PiZero2W/: host config, serial-ppp.nix, email-proxy.nix, an SD-image
variant, and a hardware-configuration.nix placeholder.
- Host table entry on nixos-hardware's raspberry-pi-3 profile; the Zero 2 W is
the Pi 3's BCM2837 SoC. nixpkgs' linuxPackages_rpi02w is deprecated and warns
that the linux-rpi series is being removed in favour of nixos-hardware.
- The host owns its firmware partition (hardware.raspberry-pi.firmware), which
is what puts the disable-bt and uart0/ctsrts overlays in config.txt so
/dev/ttyAMA0 is the RS232 header rather than Bluetooth. uboot.enable keeps the
U-Boot -> extlinux boot path the rewritten config.txt would otherwise lose.
- packages.aarch64-linux.zero2w-sd-image: the host's own configuration as an
installable card. The board has no Ethernet and no free serial port, so a
generic image would leave no way in.
- The mail proxy comes from the legacy-email-proxy flake, which provides the
package and the NixOS module; nothing about it is vendored here.
- docs/hosts/pizero2w.md, plus README host table and shared-layer notes.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What
A headless
aarch64companion for a Psion 5MX, after Kian Ryan's PPP modem and terminal write-up.hosts/PiZero2W/— host config plusserial-ppp.nix(pppd on/dev/ttyAMA0,10.0.0.1↔10.0.0.2, NAT out ofwlan0, socket-activated telnetd for the Psion's terminal client),email-proxy.nix, an SD-image variant, and ahardware-configuration.nixplaceholder.nixos-hardware'sraspberry-pi-3profile — the Zero 2 W is the Pi 3's BCM2837 SoC. nixpkgs'linuxPackages_rpi02wis deprecated and warns that thelinux-rpiseries is being removed in favour of nixos-hardware.hardware.raspberry-pi.firmware), which is what puts thedisable-btanduart0,ctsrtsoverlays intoconfig.txtso/dev/ttyAMA0is the RS232 header rather than Bluetooth.uboot.enablekeeps the U-Boot → extlinux boot path that the rewrittenconfig.txtwould otherwise lose.packages.aarch64-linux.zero2w-sd-image— the host's own configuration as an installable card. The board has no Ethernet and no free serial port, so a generic image would leave no way in.docs/hosts/pizero2w.md, plus the README host table and shared-layer notes.Why not the upstream Pi Zero 2 flake
plmercereau/nixos-pi-zero-2 is pinned to nixpkgs 25.11 and is not consumable here:
sd-imagemodule callslib.mdDoc, removed in 26.05;nixpkgs.pkgs, whichnixos/modules/misc/nixpkgs.nixforbids alongside a non-emptynixpkgs.config— and every host here setsallowUnfreePredicate.Its useful content is ~40 lines, most of which nixos-hardware already provides.
Security
The Psion speaks no TLS, so telnet (23) and the mail proxy (110/25) are cleartext and unauthenticated. The firewall is the confinement:
ppp0is trusted,wlan0is not, and those ports are never opened there. Only key-only sshd is reachable over wifi. Documented in the host notes.Dependency
Consumes legacy-email-proxy#16 (merged);
flake.lockpins it atf1e1373.Verification
nix flake check— green against the merged proxy flake.lyrathorpe-zero2wandzero2w-sd-imageboth evaluate.config.txt,/etc/ppp/peers/psion, and the telnetd units.fd97b694adtoa94a749f29View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.