Nix Roadmaps (Skill Trees)

Since an acquaintance showed me https://roadmap.sh a couple of weeks ago, I have been brewing on the idea of building different roadmaps with different angles for learning Nix. When I read the Nix Ecosystem Mind Map thread and @hugosenari provided an actual roadmap to their Nix learning some time last year, it prompted me to share this idea.

I see two purposes for making Nix roadmaps:

  1. To improve the process of documenting Nix: to structure learning material, get an overview of common dependencies, so that they can be provided, and so that dependencies are more clearly mapped out. For example, a lot of services depend on secrets, and secrets management isn’t particularly easy.

  2. To make it easier to learn Nix: Roadmaps are made for learners and educators alike. They’re not really meant as a documenter’s working tool, but rather a learner’s overview with which you can interactively track your progress. I’m not necessarily talking specifically about https://roadmap.sh, which is a SaaS, but the general idea of Skill Trees as described in the article Structuring Competency-Based Courses Through Skill Trees by Hildo Bijl.

Roadmaps can reference existing learning material; so it’s a way to structure the wealth of scattered and/or overlooked material. (Had I just known how valuable nix.dev is before I started, and sunk a fair amount of hours into it early on, I would’ve been smarter sooner.)

I’m trying to gather my effort at github.com/nix-tools/nix-roadmaps for now, just so that it’s public.

But if this Discourse thread is a lower barrier to entry, feel free to just write here.

I’m interested in…

  • your Nix roadmaps, if you made any
  • your feedback for some first roadmaps: both titles and content
  • your contributions to shared roadmaps of which there currently are none

I will structure them using https://roadmap.sh to begin with, but am interested in providing them in a more open format. Having a particularly good, coherent roadmap may serve as the basis for improving the currently disabled Nix Exercism track. Before that project is revived, it’d be nice to have an overview, and a roadmap can provide that, since it resembles the way modern Exercism tracks are modelled.

8 Likes

On a semi-related note: I’ve been entertaining the thought of compiling
possible development trajectories for Nixpkgs architecture (or for Nix)
into a similar format. Think a world of warcraft-style character
development tree, but the “skills” you unlock are “late binding in
python3Packages”, “checkPhase derivation”, or “immutable src”, “load
graphics drivers via libcapsule”, “$ORIGIN-relative DT_RUNPATHs”, etc. -
or , for (S)Nix, “FUSE /nix/store” followed by “Lazy input realization”,
or “CDC” followed by either of N variants of “castore GC”, etc. Resp.,
the “modifiers” you get from “skills” can be “# rebuilds reduced by
50%”, or “gdb can now find sources”, or “Run OpenGL apps from a
newer-than-system Nixpkgs revision”, or “Nixpkgs GUI apps work on
Ubuntu”, or “reduce cache.nixos.org size by 70%”

Obviously had no time to even move a finger to make this happen so far…

4 Likes

How do I feel now.

Can you draw that on paper or whiteboard, whatever tool you think could create 5y old, kind of sketch and post the picture here?

1 Like

Beware!!
You may lose the focus on what matters: Teach something about Nix.

That said, I’d like something Brilliant or Vim Adventure

I started to do that at some point but using a different tool, you can find the post at Life of a pull request against NixOS/nixpkgs