I had a consulting gig a few years ago where they used Nix for a cross-compilation environment. When you need it, you really need it, but wow, the first time you install Nix and it has to download and install the entire universe? I can see students saying "oh, never mind, I'll just run a local Python installation."

I'm increasingly seeing the wisdom of just giving them a VM with a pre-installed Linux image and being done with it. So what if it's utterly antiquated and insecure in a few years? It will still get the assignment done.

(For this specific student assignment, for fun and giggles, I also wrote the assignment in Kotlin. The code is a lot more elegant than the Python code. Java's BigInteger is maybe half the speed of the GMP's mpz type, but that's irrelevant for the students. Sadly, I surveyed the students at the start of the semester, and only two out of 100 had any Kotlin experience, so I decided not to inflict that on them. I'm pondering how to back-port it from Kotlin to Java without making a mess out of it.)