NixOS @ Hackspace Jena

Preview:

Citation preview

Hackspace, Jena, 2015-10-15 @theuni

NixOS

oder

Ein pures Potpourri

oder

“Warum tut mein Gehirn plötzlich weh … ?”

Agenda- Tutorial - systematisch - perfekt - vollständig - logisch

Agenda

- Warum? - Wie? - Und dann?

Warum?

Eine Distribution?

Debian, Suse, Ubuntu, Gentoo, Red Hat, Fedora, Mint, ArchLinux, …

Ein Paketmanager

Portage, Apt, Yum, Cygwin, Homebrew, …

Eine Sprache

Shell, Python, Perl, C, C++, Go, Tcl, …

Nochmal: warum?

First Things First

Was ist ein Paket?

Was ist ein Paketmanager?

Was ist eine Distribution?

Und wo ist da jetzt das Problem?

Vollständige Abhängigkeiten

Widersprüchliche Abhängigkeiten

Wiederholbare Installationen

Atomare Updates

Rollback

Installation als Nicht-Root

Verschiedene Runtimes

klare Toolchain

Wie?

Purity

Das System das mein Paket baut, hat nichts mit dem Bau des Pakets zu tun.

Leeres CHROOT

Kein Netzwerkzugriff

Keine unbekannten, zufälligen Abhängigkeiten vom Host oder aus dem Netzwerk

Jedem Tierchen, sein Plaisierchen

/nix/store/<hash>-<name>-<version>

Pakete treten sich nicht auf den Füßen rum.

Dass irgendwas im Store liegt, hat noch gar nichts zu sagen.

Meet the Family

Nix nixpkgs NixOS

+ Hydra + NixOps

Nix

NixPaketmanager

Funktional, Deklarativ

Eine “richtige” Sprache

Pakete sind … anders

Highlight: Template Expressions

Syntax: Indented Strings

Syntax: Path-Strings

./build.sh src/install http://nixos.org

Syntax: flexible attribute sets

Syntax: recursive attribute sets

MagicPatchELF (OMFG. Please scream!)

Wrapper-Shell-Skripte

Symlink-Farm und PATH-Management

Symlink-Farm

nixpkgs

Ein Haufen Nix-Package-Expressions

Für Linux, BSD, OS X, Cygwin, …

nixpkgs

Und eine Standardlibrary um Expressions richtig zu abstrahieren

Aua. Mein. Kopf.

Naja.

Alles ist eine Derivation. Alles ist eine Expression. Alles ist eine Function.

NixOS

Aus Paketen werden Module

Gesamtes System als Nix-Expression beschrieben

Unabhängig von der Laufzeit

Abstraktion und Implementation

Und dann?

$ nixos-rebuild build

$ nixos-rebuild test $ nixos-rebuild switch $ nixos-rebuild boot

$ nixos-rebuild build-vm

$ nixos-rebuild switch --rollback

$ ssh ctheune@foo foo> nix-env -i firefox foo> nix-env --rollback foo> nix-channel --add

$ nix-channel --rollback

$ nix-shell

Hydra

NixOps

Caveat emptor

Ok, jetzt lieber interaktiv weiter.

“Options” und “Packages” auf der Webseite

http://nixos.org/nix/manual http://nixos.org/nixpkgs/manual http://nixos.org/nixos/manual

http://slides.com/garbas

“Nix Pills”