LabCraft is now open in public beta: Nix First Contact is ready to try

Hi everyone,

A few weeks ago, I introduced LabCraft here on Discourse, along with a longer post about why I am building it.

At the time, LabCraft was opening in small batches and the course was not yet available to try.

Today I activated everyone who was on the waitlist. LabCraft is now open in public beta, and new learners can sign in without waiting. All Nix content is free during the beta.

Nix First Contact gives each learner a real Linux VM with its own kernel in the browser. Learners install Nix, inspect what it adds to the machine, use packages in temporary environments, search nixpkgs, repair a script with undeclared dependencies, and uninstall Nix cleanly.

The labs check what actually happened on the VM rather than requiring one exact command.

I also asked this forum whether beginner material should teach the classic or modern CLI first. First Contact now uses the modern CLI as its main path while showing classic equivalents where learners will encounter them in older documentation and existing projects. Thank you to everyone who contributed to that discussion.

You can read the public-beta announcement and start the course here:

If you try First Contact, I would especially value feedback about where an explanation loses you, where a valid approach fails a check, and which Nix or NixOS topic you think should come next.

1 Like

I’m sure it’s going to be useful to someone, but starting experimental first (implicit flake syntax in the cli from the get go) and teaching people to grab the determinate systems installer rather than upstream is just… meh. I walked though as far as I could (5/6 chapters?), Lots of cookbook material, maybe that’s what the kids want these days and I am out of touch, but I am surprised to be 6 chapters in and still just cli stuff. Where is the language? Where is even any understanding at all of what you are doing. This seems like it’s going to (if lots of people use it) churn out more users that have no grasp of what’s going on.

I also closed and re-opened the tab and the shell died and the wake up button just doesn’t work.

I don’t mean to dog on your project but you asked for feedback :slight_smile:

1 Like

Thanks for the feedback. Much appreciated.

This is just the introductory part of Nix. The goal here was to showcase the installation, and a couple of its strong points - ephemeral shells, and fully-portable shell scripts.

There are 48 or so more parts, that are still under heavy development, that cover everything else about Nix and NixOS. My hope is to get it done within the next 30-60 days, complete with the Q&A section.

Thanks for the feedback about the VM suspend/resume. I’ll definitely check it out to see what the issue is there.

Hope to post more updates soon. In the meantime, if you have any more feedback, please feel free to share.

Hey @bme,

Having had a little more time to think about it, I feel my first reply answered the roadmap part, but not your deeper concern.

I hear the worry about producing people who can run nix shell nixpkgs#... recipes without understanding what Nix is doing, and I agree that would be a bad outcome. Cookbook-only Nix education creates fragile users: they can copy commands, but they cannot diagnose evaluation, understand nixpkgs as a package set, reason about imports/fetching/pinning, or explain why flakes are shaped the way they are.

The tradeoff I’m making in First Contact is that it is aimed at a true first-time Nix user in their first session, not someone already ready to start from the REPL and work toward derivations. The goal of this first Part is deliberately narrower: install Nix in a disposable VM, inspect what changed, get one useful result, see dependency declaration once, remove it cleanly, and leave with enough mental model to choose the next route.

That said, your feedback is useful because if First Contact reads as “Nix equals modern CLI incantations,” then the boundary is not clear enough. The intended shape is:

  • First Contact: early payoff, install footprint, store/profile/daemon basics, temporary environments, package discovery, dependency-declared scripts, uninstall. It is mostly a means to answer “Why do I care about nix?” by showcasing some of the things other package managers fail to do.
  • Foundations after that: store paths, closures, expressions, attribute sets/imports, functions/laziness, fetching and pinning, nixpkgs as a package set, derivations, builders/stdenv, and error diagnosis.
  • Flakes only after the problems they address are visible.

On the installer choice: I went with the Determinate installer here because its planned install and receipt-backed uninstall are good for the install → inspect → uninstall lesson. It gives the lab a predictable footprint that learners can audit on the way in and on the way out. That is not meant to hide the upstream status of nix-command/flakes, or to imply that the Determinate defaults are the only canonical way to learn Nix. The course should say that distinction plainly and I was hoping the call-outs in the prose would help with that.

So I do not think First Contact should become “REPL and derivations first.” I do think I need to tighten the presentation so a learner understands that the CLI work is the first handle on the system, not the system itself.

On the tab close/reopen issue: that is just a platform bug, and I need to reproduce and fix it. If you are willing, I would appreciate a few details:

  • browser/OS;
  • which chapter you were in;
  • whether the VM had been idle for a while before closing the tab;
  • roughly how long the tab was closed;
  • what the wake button did when you clicked it.

No pressure, but I would also value a short follow-up conversation at some point, not as a “please bless the course” thing, but specifically to stress-test the curriculum shape: where First Contact is a useful beginner handle, and where it risks giving people surface fluency without the model underneath.

P.S.: My apologies for posting multiple responses. I’m still trying to get the hang of the UI here. :slight_smile:

nixos 26.05 / firefox 153, first chapter (?), closed tab for around 1m, reopened, on click I think I got a minor spin, before reverting to the same “wake shell” button/page.

On the rest of it: don’t be so sure my feedback is worth heeding! Let some other people give their impression. I’m just one crotchety old fart with opinions, and not even the target audience.

Thanks, that is enough to give me a concrete repro path.

And fair point on the rest. I’ll keep gathering impressions from people who are newer to Nix too. Your perspective is still helpful, just in a different way: it gives me a useful check on whether the early material is accidentally smoothing over ideas that will matter later.

Thanks