64
Hackspace, Jena, 2015-10-15 @theuni

NixOS @ Hackspace Jena

Embed Size (px)

Citation preview

Page 1: NixOS @ Hackspace Jena

Hackspace, Jena, 2015-10-15 @theuni

Page 2: NixOS @ Hackspace Jena

NixOS

Page 3: NixOS @ Hackspace Jena

oder

Page 4: NixOS @ Hackspace Jena

Ein pures Potpourri

Page 5: NixOS @ Hackspace Jena

oder

Page 6: NixOS @ Hackspace Jena

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

Page 7: NixOS @ Hackspace Jena

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

Page 8: NixOS @ Hackspace Jena

Agenda

- Warum? - Wie? - Und dann?

Page 9: NixOS @ Hackspace Jena

Warum?

Page 10: NixOS @ Hackspace Jena

Eine Distribution?

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

Page 11: NixOS @ Hackspace Jena

Ein Paketmanager

Portage, Apt, Yum, Cygwin, Homebrew, …

Page 12: NixOS @ Hackspace Jena

Eine Sprache

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

Page 13: NixOS @ Hackspace Jena

Nochmal: warum?

Page 14: NixOS @ Hackspace Jena

First Things First

Page 15: NixOS @ Hackspace Jena

Was ist ein Paket?

Page 16: NixOS @ Hackspace Jena

Was ist ein Paketmanager?

Page 17: NixOS @ Hackspace Jena

Was ist eine Distribution?

Page 18: NixOS @ Hackspace Jena

Und wo ist da jetzt das Problem?

Page 19: NixOS @ Hackspace Jena

Vollständige Abhängigkeiten

Widersprüchliche Abhängigkeiten

Wiederholbare Installationen

Atomare Updates

Rollback

Installation als Nicht-Root

Verschiedene Runtimes

klare Toolchain

Page 20: NixOS @ Hackspace Jena

Wie?

Page 21: NixOS @ Hackspace Jena

Purity

Page 22: NixOS @ Hackspace Jena

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

Page 23: NixOS @ Hackspace Jena

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.

Page 24: NixOS @ Hackspace Jena

Meet the Family

Nix nixpkgs NixOS

+ Hydra + NixOps

Page 25: NixOS @ Hackspace Jena

Nix

Page 26: NixOS @ Hackspace Jena

NixPaketmanager

Funktional, Deklarativ

Eine “richtige” Sprache

Pakete sind … anders

Page 27: NixOS @ Hackspace Jena

Highlight: Template Expressions

Page 28: NixOS @ Hackspace Jena

Syntax: Indented Strings

Page 29: NixOS @ Hackspace Jena

Syntax: Path-Strings

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

Page 30: NixOS @ Hackspace Jena

Syntax: flexible attribute sets

Page 31: NixOS @ Hackspace Jena

Syntax: recursive attribute sets

Page 32: NixOS @ Hackspace Jena

MagicPatchELF (OMFG. Please scream!)

Wrapper-Shell-Skripte

Symlink-Farm und PATH-Management

Page 33: NixOS @ Hackspace Jena

Symlink-Farm

Page 34: NixOS @ Hackspace Jena
Page 35: NixOS @ Hackspace Jena
Page 36: NixOS @ Hackspace Jena
Page 37: NixOS @ Hackspace Jena

nixpkgs

Ein Haufen Nix-Package-Expressions

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

Page 38: NixOS @ Hackspace Jena

nixpkgs

Und eine Standardlibrary um Expressions richtig zu abstrahieren

Page 39: NixOS @ Hackspace Jena
Page 40: NixOS @ Hackspace Jena
Page 41: NixOS @ Hackspace Jena
Page 42: NixOS @ Hackspace Jena
Page 43: NixOS @ Hackspace Jena

Aua. Mein. Kopf.

Naja.

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

Page 44: NixOS @ Hackspace Jena

NixOS

Page 45: NixOS @ Hackspace Jena

Aus Paketen werden Module

Gesamtes System als Nix-Expression beschrieben

Unabhängig von der Laufzeit

Abstraktion und Implementation

Page 46: NixOS @ Hackspace Jena
Page 47: NixOS @ Hackspace Jena
Page 48: NixOS @ Hackspace Jena
Page 49: NixOS @ Hackspace Jena
Page 50: NixOS @ Hackspace Jena

Und dann?

Page 51: NixOS @ Hackspace Jena

$ nixos-rebuild build

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

$ nixos-rebuild build-vm

$ nixos-rebuild switch --rollback

Page 52: NixOS @ Hackspace Jena

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

Page 53: NixOS @ Hackspace Jena

$ nix-channel --rollback

Page 54: NixOS @ Hackspace Jena

$ nix-shell

Page 55: NixOS @ Hackspace Jena
Page 56: NixOS @ Hackspace Jena

Hydra

Page 57: NixOS @ Hackspace Jena
Page 58: NixOS @ Hackspace Jena
Page 59: NixOS @ Hackspace Jena
Page 60: NixOS @ Hackspace Jena
Page 61: NixOS @ Hackspace Jena

NixOps

Page 62: NixOS @ Hackspace Jena

Caveat emptor

Page 63: NixOS @ Hackspace Jena

Ok, jetzt lieber interaktiv weiter.

Page 64: NixOS @ Hackspace Jena

“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”