Previously

A Raspberry Pi that boots into NeXTSTEP

It starts straight into a NeXT machine under the Previous emulator. No desktop behind it, no login to get past, and nothing on the screen but the grey NeXT panel.

  • Raspberry Pi 5
  • Raspberry Pi OS Lite, 64 bit
  • NeXTSTEP 3.3
Terminal
curl -fsSL https://previous.li/install.sh | bash

Run it as the user the machine will belong to, not under sudo. It asks for your password once and says when it is done where the admin answers.

What it is

One machine, one screen, one thing on it

The Pi disappears into the NeXT. Everything you would otherwise do at a keyboard happens in a browser on another machine.

Nothing but NeXTSTEP

The emulator takes the first console at boot and keeps it. There is no desktop underneath and no console login to step past, so the machine is the thing it is pretending to be.

An admin that looks like it

Machines, disks and screens are things you pick up rather than values you type. It answers on the network, so the Pi never needs a keyboard of its own.

Every change written down

Each step records how to undo exactly what it changed, and an interrupt walks that record backwards. What was already on the machine is left where it was.

The admin

It looks like the machine it configures

Nothing in it is redrawn. The icons come out of a NeXTSTEP 3.3 disk image, and the window furniture is cut pixel for pixel from a screenshot of the running system.

The admin tool in a browser: a main menu, an Info panel for the emulated NeXTcube, a Raspberry Pi panel with the host's readings, and a File Viewer showing folders as icons.
Its menu and three of its windows, on a Pi that has been running NeXTSTEP for 207 hours.

Install

Three steps, and the second one is the line

You need a Raspberry Pi 5 and a card imaged with Raspberry Pi OS Lite, 64 bit, based on Debian 13. The script refuses anywhere else, because Previous needs SDL3 and no earlier release carries it.

  1. Reach the Pi

    Over SSH is the comfortable way, and it stays the way in afterwards: the emulator owns the screen once this is done.

  2. Paste the line and let it finish

    It installs the emulator from its own signed archive, fetches a preinstalled NeXTSTEP 3.3 disk image, writes the configuration, installs the admin tool and hands the first console over.

    curl -fsSL https://previous.li/install.sh | bash
  3. Open the admin

    It answers at http://<your-pi>.local:2342 and asks once for a token, which the script tells you how to read.

Before you run it

What a line off the network is allowed to do

Read it first

The script reads no file beside itself, so the one file on GitHub is all of it. Nothing runs until the last line calls main, which means a download cut short runs nothing at all.

Safe to run again

An existing disk image, an existing configuration and a startup entry that is already there are all left alone. Your own NeXTSTEP image in ~/nextstep is found and used instead of a download.

Ctrl+C leaves it as it was

An interrupt and a failing step both walk the record of changes backwards. Only this run's own changes are reversed, and a step that skipped itself has nothing to take back.