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

**URL:** https://discourse.nixos.org/t/nixorium-nixos-for-a-school-computer-lab-where-only-the-controller-has-internet/80861
**Category:** Links
**Created:** [October 30, 2026, 6:54pm UTC](https://discourse.nixos.org/t/nixorium-nixos-for-a-school-computer-lab-where-only-the-controller-has-internet/80861 "2026-10-30T18:54:51Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![giovantenne](https://discourse.nixos.org/user_avatar/discourse.nixos.org/giovantenne/32/39200_2.png) [@giovantenne](https://discourse.nixos.org/u/giovantenne)
#### Post date: [October 30, 2026, 6:54pm UTC](https://discourse.nixos.org/t/nixorium-nixos-for-a-school-computer-lab-where-only-the-controller-has-internet/80861/1 "2026-10-30T18:54:51Z")

</div>

> **[GitHub - giovantenne/nixorium: Manages a multi-PC NixOS lab, optimized for...](https://github.com/giovantenne/nixorium)**
>
> Manages a multi-PC NixOS lab, optimized for network installation (Netboot) with no internet access and a master PC acting as the local controller.

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](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?

---

<div class="post-metadata">

### Author: ![bitbloxhub](https://discourse.nixos.org/user_avatar/discourse.nixos.org/bitbloxhub/32/35210_2.png) [@bitbloxhub](https://discourse.nixos.org/u/bitbloxhub)
#### Post date: [October 30, 2026, 7:25pm UTC](https://discourse.nixos.org/t/nixorium-nixos-for-a-school-computer-lab-where-only-the-controller-has-internet/80861/2 "2026-10-30T19:25:19Z")

</div>

> [@Discourse LLM Policy](https://discourse.nixos.org/t/discourse-llm-policy/78302):
>
> Hello community, There’s been some very understandable uncertainty, in our new and exciting/distressing age of LLM-infused internet culture, about what our norms for use of LLM-based tools should be — what constitutes spam, what should get flagged, etc. Thank you to everyone who has been working through this set of questions here in good faith and goodwill; for the most part, I’ve been quite proud of how our community has been operating under this uncertainty. The SC is working on establishing …

Please add a LLM usage disclosure to your post.

Neat idea, though!

---

<div class="post-metadata">

### Author: ![giovantenne](https://discourse.nixos.org/user_avatar/discourse.nixos.org/giovantenne/32/39200_2.png) [@giovantenne](https://discourse.nixos.org/u/giovantenne)
#### Post date: [October 30, 2026, 7:43pm UTC](https://discourse.nixos.org/t/nixorium-nixos-for-a-school-computer-lab-where-only-the-controller-has-internet/80861/3 "2026-10-30T19:43:36Z")

</div>

it is already disclosed 🙂

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

---

<div class="post-metadata">

### Author: ![bitbloxhub](https://discourse.nixos.org/user_avatar/discourse.nixos.org/bitbloxhub/32/35210_2.png) [@bitbloxhub](https://discourse.nixos.org/u/bitbloxhub)
#### Post date: [October 30, 2026, 7:45pm UTC](https://discourse.nixos.org/t/nixorium-nixos-for-a-school-computer-lab-where-only-the-controller-has-internet/80861/4 "2026-10-30T19:45:34Z")

</div>

Missed that, sorry! (character limit)

---

<div class="post-metadata">

### Author: ![ahoneybun](https://discourse.nixos.org/user_avatar/discourse.nixos.org/ahoneybun/32/13099_2.png) [@ahoneybun](https://discourse.nixos.org/u/ahoneybun)
#### Post date: [October 30, 2026, 9:54pm UTC](https://discourse.nixos.org/t/nixorium-nixos-for-a-school-computer-lab-where-only-the-controller-has-internet/80861/5 "2026-10-30T21:54:52Z")

</div>

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](https://nixos.wiki/wiki/Impermanence)

---

<div class="post-metadata">

### Author: ![giovantenne](https://discourse.nixos.org/user_avatar/discourse.nixos.org/giovantenne/32/39200_2.png) [@giovantenne](https://discourse.nixos.org/u/giovantenne)
#### Post date: [October 30, 2026, 10:58pm UTC](https://discourse.nixos.org/t/nixorium-nixos-for-a-school-computer-lab-where-only-the-controller-has-internet/80861/6 "2026-10-30T22:58:16Z")

</div>

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.
