this repository contains 'a tour of nix', an interactive programming guide dedicated to the nix programming language. there is also a standalone version called 'nix-tour' which is based on 'electron' and can be installed and used offline.
happy learning!
HINT: we have a newer version of 'a tour of nix', which is based on 'bootstrap' but it is not released yet.
nix does not build with emscripten on nixos out of the box. making nix-instantiate run in the browser requires many modifications to the nix source base and lots of optimizations so that it is 'fast'.
technical background:
https://lastlog.de/blog/tour_of_nix.html
to see the tour, simply do this:
firefox index.html
nix-shell -p python3 --command 'python3 -m http.server 9000'
chromium localhost:8000
note: chromium won't load xhr requests from file:// but instead requires a webserver to work.
with electron we can create a native executable so that one can use nix-env
to install the tour locally.
note: electron support is broken, i'll leave the code for later fixes.
manually invoking it:
nix-shell
electron electron-main.js
install it:
nix-env -f default.nix -iA nix-tour
afterwards you can start it like this:
nix-tour
if you want to contribute questions or fixes to them, there is a file called questions.json
.
just edit this file and reload the 'tour' in your browser. there is a guide on how to edit questions
contained in the last question of the tour.
we, the nixcloud devs, are working on a new emscripten based toolchain in nix. once this is final, we will redo the emscripten port cleanly and put the source on our repository.
see:
- https://lastlog.de/blog/tour_of_nix.html
- NixOS/nixpkgs#16208
- https://lastlog.de/blog/emscripten-1.36.4_on_nixos.html
until that happens you can request the source code via email from us which currently is a 300mb git repository in a very unusable state. this is also the reason why we didn't upload it yet.
the bundled nix-instantiate as well as the questions.json file are licensed as:
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
exactly as the original nix codebase.
we bundled many different tools:
see COPYING.md
for details on their license.
oh, and there is this font/ - directory. really don't have a clue what license that uses. was from google and is probably licensed 'world domination with no privacy' or something... not sure...
we added these files into this repository, which is used to evaluate so called nix-expressions:
- nix-instantiate.html.mem
- nix-instantiate.data
- nix-instantiate.js
- nix-instantiate.js.mem
note: if you want to use this library for other purposes than this 'tour of nix' you probably want to read the 'building & running' section above. and you really want to read the blog post listed there.
- Paul Seitz paul.m.seitz@gmail.com
- Joachim Schiele js@lastlog.de