Skip to content

nixcloud/tour_of_nix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

introduction

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.

https://nixcloud.io/tour/

happy learning!

HINT: we have a newer version of 'a tour of nix', which is based on 'bootstrap' but it is not released yet.

meerkats FTW

building & running

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

firefox index.html

chrome/chromium

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.

electron

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

collaboration

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.

future work

source code rework

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:

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.

license

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.

third party

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...

bundled nix-instantiate

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.

authors

meerkats FTW