GitXplorerGitXplorer
s

learning-nix

public
64 stars
5 forks
0 issues

Commits

List of commits on branch main.
Unverified
d66331f085bf4156b508d2be3e7681ed6e010a74

Add explanatory comments to ncdu example solution

sspacekookie committed 2 years ago
Unverified
9fb0f16440721ece9aa7e721db7b0f38f4607fd1

Add excercise solutions for day 2

sspacekookie committed 2 years ago
Unverified
42cf35ac24a88267c3119019a8df1a44d4067e7c

Update course day 2 and (a bit) 3

sspacekookie committed 2 years ago
Unverified
cba22cea90c37bdfcbbb10cc445fafb3e7809ef7

Update courses day 1 and 2

sspacekookie committed 2 years ago
Unverified
cf4ab61f59b056fbaabfe0b02611221829a1b888

Fix typos

rremimimimimi committed 2 years ago
Unverified
a5b750a78c7143ada28514a35ac7d224df3a2afd

Update export mechanism to new course structure

sspacekookie committed 2 years ago

README

The README file for this repository.

#+Title: NixOS training material #+Author: Katharina Fey #+SETUPFILE: html.setup

Welcome to my Nix training material repository!

I created this material for the purpose of having a set of slides, code snippets, example projects, and advanced visualisations to teach the /Nix expression language/ and ecosystem to developers of varying backgrounds.

(Note that this material was really designed with a teacher in mind. As such, some slides are very sparse and not self-explanatory. I'm working on expanding speaker notes to make the course material easier to read on your own.)

Is your company looking for on-site or remote training? [[mailto:kookie@spacekookie.de][Contact me]] for details and booking!

** Course outline

This course is meant to be taught in 5 half-day sessions. It ranges from beginner subjects all the way to advanced usage of the module system, cross-compilation, and other special niches.

  • [[file:courses/day-01-introduction/README.org][Day 1: Introduction]] :: A short introduction and elevator-pitch of what Nix(OS) can do for you. This course covers some theoretical background on how Nix does what it does, priming you to think like Nix, and some exercises to get practise in writing Nix code.

  • [[file:courses/day-02-builders/README.org][Day 2: Builders]] :: Get started writing Nix packages with so called /stand-alone builders/. This course covers some of the packaging details, such as understanding dependencies and overriding build mechanisms.

  • [[file:courses/day-03-advanced/README.org][Day 3: Advanced Concepts]] :: This course covers an introduction into /nixpkgs/, a repository set of over 80,000 packages and many different Nix utilities for creating new packages and modules. Furthermore this course touches on /flakes/ and more advanced concepts such as /cross compilation/.

  • [[file:courses/day-05-modules/README.org][Day 4: Module system]] :: Nix is a powerful configuration language. If you run NixOS on your system, you may have already used modules! This course demystifies their functionality and provides a set of examples on how to build your own module abstractions.

** Building these slides

The slides are written in [[https://org-mode.org][org-mode]], a plain-text markup language. As such it is very easy to read and adapt in any text editor. GitHub and GitLab are able to render the documents, but not as slide decks.

A hosted version of this course is available at [[https://learn.spacekookie.de/nix/][learn.spacekookie.de]]!

If you want to build the slides yourself, you will need org-mode and org-reveal installed. You can find a utility function for generating the output in [[./ci/export-course.el][ci/export-course.el]]. (Load the function with =M-x eval-buffer=)

** Sponsors

This course has been sponsored by various companies that have paid for training and the creation of new material in the past.

(todo: insert logos)

** License

This material is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) or later.

This license allows you to include the material in your own work, as long as that work is also shared under the same license (CC-BY-SA 4.0 or later). Importantly your work must attribute any original authors of work that you have used.

This text is not legal advice! Check with a lawyer in your respective jurisdiction what your rights and obligations under this license are.