SlideShare uma empresa Scribd logo
1 de 64
Baixar para ler offline
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
Nix
Paketmanager
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
Magic
PatchELF (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”

Mais conteúdo relacionado

NixOS @ Hackspace Jena