nixos @ hackspace jena
TRANSCRIPT
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: 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”