Nixorium – NixOS for a school computer lab where only the controller has Internet

I teach at a high school in Italy, and manage a few computer labs with about 30 PCs each.

Our PCs can’t access the Internet until someone logs into the school network, which made installing and updating them a pain. Two years ago I switched the labs to NixOS and started building tools to deal with it. That’s how Nixorium started.

Now only one machine (the controller) needs Internet. It builds and signs the systems, serves them from a local Harmonia cache, and installs clients over PXE or USB + SSH. Updates happen over SSH, and student homes reset at every boot, with Btrfs snapshots kept for recovery.

Each lab is a private repo using lib.mkLab, and there’s a Go TUI so colleagues can manage things without knowing Nix.

It’s still a one-person project, GNOME-only, and release testing is done in VMs, so other hardware may surface things my labs didn’t. A substantial part of the code was written with coding agents and reviewed by me. The core is MIT and fully usable without the optional paid Assistant.

One-minute demo and install guide: https://nixorium.org

For those managing NixOS fleets: does mkLab + a private repo per site make sense, or would you have stuck with plain modules and flake-parts?

6 Likes

Please add a LLM usage disclosure to your post.

Neat idea, though!

it is already disclosed :slight_smile:

“A substantial part of the code was written with coding agents.”

1 Like

Missed that, sorry! (character limit)

1 Like

I’m always happy to use a use case for Linux in the classroom and NixOS makes even more sense!

Have you looked into this like a Deep Freeze for NixOS?:

https://nixos.wiki/wiki/Impermanence

1 Like

Yes, I considered using impermanence, and I believe it could have been a valid approach.

However, for this lab, I preferred to keep the system simpler to manage and maintain. Currently, student home directories are restored to a clean state, and snapshots are available for recovery. This already prevents unnecessary files from building up on lab computers, without introducing the additional complexity of a fully ephemeral system that only preserves selected data.