WEBVTT

00:00:06.400 --> 00:00:11.120
<v Ingo>Binärgewitter, der Podcast rund um Web,

00:00:11.280 --> 00:00:13.840
<v Ingo>Technologie und Open Source.

00:00:17.440 --> 00:00:24.160
<v Ingo>Halli, hallo, herzlich willkommen zu Binärgewitter Spezialausgabe 7 über das Thema Nixos.

00:00:24.560 --> 00:00:25.760
<v Ingo>Heute mit Felix.

00:00:25.920 --> 00:00:26.480
<v Ingo>Hallo.

00:00:27.280 --> 00:00:29.120
<v Ingo>Und mit Jörg, a.k.a.

00:00:29.280 --> 00:00:30.400
<v Ingo>MIG92.

00:00:30.560 --> 00:00:32.640
<v Gast 1>Edmüber grüßt Wolkokrat.

00:00:33.920 --> 00:00:34.240
<v Gast 1>Schön.

00:00:34.480 --> 00:00:36.560
<v Ingo>Und mit meiner einer, ich bin Ingo.

00:00:36.720 --> 00:00:37.440
<v Ingo>Hallo.

00:00:37.840 --> 00:00:38.480
<v Ingo>Genau.

00:00:39.440 --> 00:00:45.120
<v Ingo>Der Jörg und der Felix haben sich gedacht, Nixos ist so cool, wir müssen da unbedingt drüber reden.

00:00:45.200 --> 00:00:51.360
<v Ingo>Und weil es einfach nicht reicht, das in ja mal so ein Thema zu packen in der Binär-Gewittersendung,

00:00:51.680 --> 00:00:56.560
<v Ingo>machen wir ein ganzes Spezial draus, haben wir euch ja auch schon immer wieder vertröstet und versprochen,

00:00:56.640 --> 00:00:59.520
<v Ingo>irgendwann kommt's und heute ist es jetzt so endlich soweit.

00:00:59.840 --> 00:01:02.000
<v Ingo>Wir reden über Nix bzw.

00:01:02.400 --> 00:01:03.120
<v Ingo>Nixos.

00:01:03.680 --> 00:01:09.280
<v Ingo>Und vielleicht dividieren wir das erstmal auseinander, weil es ist ja nicht beides dasselbe.

00:01:09.600 --> 00:01:12.320
<v Ingo>Was ist denn Nix, Jörg?

00:01:12.880 --> 00:01:19.760
<v Gast 1>Ja, also Nix ist erstmal ein Paketmanager für Linux und auch verschiedene andere

00:01:19.760 --> 00:01:21.280
<v Gast 1>Systeme, wie zum Beispiel macOS.

00:01:22.720 --> 00:01:29.360
<v Gast 1>Das ist so ein Systempaketmanager auf der Ebene wie zum Beispiel Apt unter Debian oder Pac-Man oder

00:01:29.360 --> 00:01:30.880
<v Gast 1>Arch Linux.

00:01:31.840 --> 00:01:37.040
<v Gast 1>Und was Nix aber auszeichnet, ist, dass es

00:01:38.960 --> 00:01:40.880
<v Gast 1>ein paar einzigartige Funktionen hat.

00:01:40.960 --> 00:01:47.920
<v Gast 1>Also dass man im Gegensatz zu Pac-Man

00:01:48.080 --> 00:01:52.080
<v Gast 1>oder Atomar up und Downtreten kann.

00:01:52.160 --> 00:01:55.520
<v Gast 1>Also man kann wieder seine Updates, die man eben eingespielt hat, wieder zurückspielen.

00:01:56.000 --> 00:02:01.680
<v Gast 1>Und dass die Pakete, die man mit Nix installieren kann,

00:02:01.760 --> 00:02:06.320
<v Gast 1>die können unterschiedlichen, die können untereinander im Konflikt stehen.

00:02:06.400 --> 00:02:09.600
<v Gast 1>Also man kann von jedem Paket verschiedene Versionen installieren.

00:02:09.840 --> 00:02:13.920
<v Gast 1>Und dann gibt es noch andere Sachen, wie zum Beispiel, dass auf einem System,

00:02:14.000 --> 00:02:18.640
<v Gast 1>wo nichts installiert ist, dass dann jeder Benutzer seinen eigenen Paketstand haben kann,

00:02:18.720 --> 00:02:21.600
<v Gast 1>also dass jeder Nutzer Pakete installieren kann.

00:02:22.000 --> 00:02:22.640
<v Gast 1>Genau.

00:02:23.040 --> 00:02:29.600
<v Felix>Für jedes von den Funktionen ist eigentlich ein gutes Beispiel beim atomaren

00:02:29.600 --> 00:02:36.000
<v Felix>Upgrades und Downgrades, dass man kennt es von Arc Linux vielleicht,

00:02:36.240 --> 00:02:40.240
<v Felix>wenn man mal versucht hat, seinen Pac-Man zu upgraden und vergessen hat,

00:02:40.320 --> 00:02:45.440
<v Felix>die Library von Pac-Man oder irgendwelche Keychains vorher abzugraden,

00:02:45.600 --> 00:02:48.960
<v Felix>dann geht das komplette System kaputt, weil man nicht mehr upgraden kann,

00:02:49.040 --> 00:02:51.840
<v Felix>weil irgendwelche Vergangenheitssachen gefehlt haben.

00:02:52.320 --> 00:02:58.560
<v Felix>Config-free Installation ist eine Sache, man kann sich das so vorstellen,

00:02:58.720 --> 00:03:05.280
<v Felix>man hat ein Python 2 und man hat ein Python 3 und die heißen beide Python und können für verschiedene

00:03:05.280 --> 00:03:06.480
<v Felix>Pakete benutzt werden.

00:03:06.640 --> 00:03:08.400
<v Felix>Und die leben quasi nebeneinander.

00:03:08.480 --> 00:03:13.680
<v Felix>Oder Ruby 1.2.3, 1, weiß ich nicht, wo die jetzt gerade sind, 1.3, genau, ob es nett ist.

00:03:13.920 --> 00:03:14.320
<v Felix>Oder zwei?

00:03:14.480 --> 00:03:15.520
<v Felix>2.3 sind die schon.

00:03:16.880 --> 00:03:17.280
<v Felix>Keine Ahnung.

00:03:17.520 --> 00:03:18.560
<v Felix>Ja, ich glaube schon.

00:03:18.640 --> 00:03:25.120
<v Felix>Und mehr Benutzerunterstützung ist so dieses typische so im Vergleich

00:03:25.360 --> 00:03:26.800
<v Felix>Ruby Version Manager.

00:03:26.880 --> 00:03:33.520
<v Felix>Also nicht nur für einen Benutzer was eigenes, sondern für jedes eigene Projekt kann man die Version

00:03:33.520 --> 00:03:34.880
<v Felix>einzeln verwalten.

00:03:35.600 --> 00:03:39.520
<v Gast 1>Also das wird dann aber auch wirklich bloß einmal installiert und zwar global.

00:03:39.760 --> 00:03:46.560
<v Gast 1>Und jeder Benutzer, der halt irgend sich was installiert, der sieht dann halt diese Pakete und den Rest ist

00:03:46.880 --> 00:03:53.040
<v Gast 1>dann halt zwar da, aber den Destiny in der Umgebung von dem Benutzer zu sehen.

00:03:54.320 --> 00:03:58.720
<v Ingo>Also Das heißt also, ich kann nicht bei irgendeinem anderen Benutzer irgendwas rumfummeln oder so.

00:03:59.040 --> 00:03:59.360
<v Ingo>Genau.

00:03:59.920 --> 00:04:04.880
<v Ingo>Also weil du sagst, es ist jetzt mehrfach da oder doch nicht mehrfach da.

00:04:05.360 --> 00:04:10.800
<v Ingo>Also du siehst zwar die Sachen vom anderen, aber du kannst da nichts drin machen, oder wie?

00:04:12.080 --> 00:04:17.200
<v Gast 1>Das funktioniert so, dass wenn man was installiert, wird das.

00:04:18.240 --> 00:04:19.840
<v Gast 1>Ich fange mal an, machen wir andersrum.

00:04:20.640 --> 00:04:22.800
<v Gast 1>Klein mal wie ein normaler Paketmanager funktioniert.

00:04:22.960 --> 00:04:28.400
<v Gast 1>Also wenn wir zum Beispiel mit Absicht was installiert,

00:04:28.640 --> 00:04:34.800
<v Gast 1>zum Beispiel SL, also hier diese Eisenbahn, wenn man hier LS vertippt.

00:04:35.840 --> 00:04:40.480
<v Gast 1>Was dann abmacht, ist, dass er lädt sich so erstmal so die Paketliste runter,

00:04:40.560 --> 00:04:44.240
<v Gast 1>wenn er dies nicht schon runtergeladen hat, dann guckt sich das an,

00:04:44.320 --> 00:04:48.960
<v Gast 1>wenn ich jetzt hier das Upget-Install SSL mache, dann sucht es sich erstmal raus,

00:04:49.040 --> 00:04:52.000
<v Gast 1>was brauche ich jetzt dafür, also irgendwelche Abhängigkeiten.

00:04:52.560 --> 00:04:57.200
<v Gast 1>Dann tut es halt bei diesen Abhängigkeiten nur versuchen, Versionskonflikte aufzulösen.

00:04:57.280 --> 00:05:01.520
<v Gast 1>Also es kann ja sein, dass jetzt meinetwegen SL braucht jetzt N-Curses,

00:05:01.600 --> 00:05:04.000
<v Gast 1>weil es irgendeine grafische Oberfläche auf dem Terminal macht.

00:05:04.160 --> 00:05:07.600
<v Gast 1>Und das braucht es jetzt in einer bestimmten Version und vielleicht ein anderes Paket braucht es in einer

00:05:07.600 --> 00:05:11.280
<v Gast 1>anderen Version, dann müsst ihr da irgendwie ab versuchen, diesen Konflikt aufzulösen,

00:05:11.360 --> 00:05:13.840
<v Gast 1>dass es irgendwie gemeinsam ein Ender findet.

00:05:14.080 --> 00:05:19.040
<v Gast 1>Und danach installiert das in ein so festgelegtes Verzeichnis.

00:05:19.120 --> 00:05:25.680
<v Gast 1>Und Linux gibt es da so Konversionen, dass dann meinetwegen ausführbarer Programme immer in User Bin

00:05:25.840 --> 00:05:27.920
<v Gast 1>liegen oder in Bin.

00:05:28.880 --> 00:05:34.160
<v Gast 1>Und wenn ich das dann aufrufen will,

00:05:34.240 --> 00:05:39.200
<v Gast 1>dann kann ich das dann halt über den Pfad oder über meine Umgebungsvariablen dann benutzen.

00:05:40.160 --> 00:05:45.520
<v Ingo>Wenn ich so einen Pfad habe, dann reicht es, wenn ich dann SL eintippe und dann kommt die Eisenbahn.

00:05:45.760 --> 00:05:46.480
<v Ingo>Genau.

00:05:46.800 --> 00:05:48.560
<v Gast 1>Bei Nix ist das ein bisschen anders.

00:05:48.960 --> 00:05:54.480
<v Gast 1>Wenn ich da jetzt sage, wenn ich da jetzt das Paket SL mir

00:05:55.280 --> 00:05:59.760
<v Gast 1>benutzen will, kann ich das halt entweder über ein Programm,

00:05:59.840 --> 00:06:02.800
<v Gast 1>was ich Nixnv nennt, installieren.

00:06:02.880 --> 00:06:05.120
<v Gast 1>Oder wenn ich es einfach bloß mal ausprobieren will, da gibt es was,

00:06:05.200 --> 00:06:11.200
<v Gast 1>das heißt Nix Shell, sage ich dann halt Nix Shell-P und dann der Paketname.

00:06:11.600 --> 00:06:16.400
<v Gast 1>Und bei Nix die Paketliste,

00:06:16.480 --> 00:06:22.560
<v Gast 1>die heißt dann, das sind die sogenannten Nix-Expressions, darauf können wir dann später nochmal eingehen.

00:06:22.640 --> 00:06:28.240
<v Gast 1>Das ist so eine Art Bauanleitung für alle Pakete, die man in Nix installieren kann.

00:06:28.640 --> 00:06:35.120
<v Gast 1>Und dann berechnet Nix aus dieser Bauanleitung das Paket und guckt dann,

00:06:35.280 --> 00:06:41.280
<v Gast 1>ob diese Bauanleitung, ob die schon mal jemand gebaut hat, weil in der Regel will man eigentlich Sachen nicht

00:06:41.280 --> 00:06:44.880
<v Gast 1>selber bauen, weil das braucht viel zu viel CPU und so weiter.

00:06:45.520 --> 00:06:48.640
<v Ingo>Genau, also man will kein Gento machen, man will nicht einen auf Gento.

00:06:49.200 --> 00:06:53.760
<v Gast 1>Sondern in der Regel will man eigentlich alles aus dem sogenannten Binär-Cache installieren,

00:06:53.840 --> 00:06:56.080
<v Gast 1>wo die ganzen Pakete schon vorgebaut sind.

00:06:57.200 --> 00:07:04.160
<v Gast 1>Und was jetzt der große Unterschied so ab ist, dass das nie einfach irgendwie in den festen

00:07:04.160 --> 00:07:05.120
<v Gast 1>Pfad reingeschrieben wird.

00:07:05.200 --> 00:07:11.760
<v Gast 1>Also dass es jetzt zum Beispiel nach Userbin SL installiere, sondern dass ich da einen sogenannten

00:07:12.080 --> 00:07:13.600
<v Gast 1>Nix-Store-Fahrt habe.

00:07:13.680 --> 00:07:19.520
<v Gast 1>Also ich habe im Verzeichnis slash Nix slash Store und dann kommt so eine Hash-Summe

00:07:20.880 --> 00:07:26.800
<v Gast 1>für das Programm und dann nochmal für Menschen lesbar so ein Name,

00:07:26.960 --> 00:07:29.360
<v Gast 1>also zum Beispiel SL minus, wer sowas nimmer.

00:07:29.760 --> 00:07:32.960
<v Gast 1>Und dort drin lebt dann das alles, was zu dem Paket gehört.

00:07:33.200 --> 00:07:38.160
<v Gast 1>Und diese Hash-Summe, die ist halt, die wird berechnet über die Bauanleitung.

00:07:38.240 --> 00:07:43.360
<v Gast 1>Die ist quasi, wenn ich jetzt die Versionsnummer von dem Programm ändere oder die Quellen oder irgendwas

00:07:43.600 --> 00:07:46.800
<v Gast 1>ändere, wie ich das Paket baue, dann ändert sich diese Nummer.

00:07:46.960 --> 00:07:52.160
<v Gast 1>Und damit lebt jedes Update in seinem eigenen Verzeichnis.

00:07:52.480 --> 00:07:55.840
<v Felix>Genau, zum Beispiel auch, wenn sich irgendeine Abhängigkeit ändern würde,

00:07:55.920 --> 00:07:59.840
<v Felix>wenn sich zum Beispiel die LibC-Version, wenn ich dafür eine neuere Version bräuchte,

00:08:00.000 --> 00:08:04.240
<v Felix>dann würde sich auch der komplette Pfad ändern, dann wäre es quasi ein anderes Programm als das,

00:08:04.320 --> 00:08:06.720
<v Felix>was ich davor gebaut habe mit einem alten Lib C.

00:08:07.040 --> 00:08:08.240
<v Felix>Das war die Grundidee.

00:08:08.640 --> 00:08:09.040
<v Felix>Genau.

00:08:09.200 --> 00:08:14.560
<v Gast 1>Und damit kann man sieht man dann schon recht einfach, dass man, wenn man dann ein neues Programm installiert,

00:08:14.720 --> 00:08:19.520
<v Gast 1>dann muss man das alte Programm new zwangsläufig deinstallieren,

00:08:19.600 --> 00:08:24.000
<v Gast 1>sondern man kann ja einfach das landet dann automatisch in den neuen Pfad und

00:08:26.160 --> 00:08:30.720
<v Gast 1>damit kann man dann upgraden und downgraden,

00:08:30.960 --> 00:08:34.800
<v Gast 1>weil die alten Sachen ja bestehen bleiben und man kann halt

00:08:37.280 --> 00:08:42.080
<v Gast 1>Programme, also dieser Zustand, dass es jetzt irgendwas installiert ist,

00:08:42.160 --> 00:08:47.600
<v Gast 1>das ist halt weniger vagil, weil wenn man zum Beispiel bei Upt irgendwas installiert,

00:08:47.920 --> 00:08:53.680
<v Gast 1>man installiert zum Beispiel, man ersetzt seine Lib C und dann bricht das Programm ab aus irgendeinem Grund.

00:08:53.920 --> 00:08:58.640
<v Gast 1>Dann hat man ja einen Zustand, wo auf immer keine Libc mehr installiert ist und alles geht erstmal kaputt.

00:08:59.920 --> 00:09:04.000
<v Gast 1>Und bei Nix wird einfach nur Sachen hinzugefügt erstmal und dadurch,

00:09:04.320 --> 00:09:07.520
<v Gast 1>das ist halt fehleranfällig.

00:09:09.520 --> 00:09:12.320
<v Ingo>Und wie ist es jetzt mit den Abhängigkeiten?

00:09:12.640 --> 00:09:13.680
<v Ingo>Wie funktioniert das?

00:09:13.760 --> 00:09:18.960
<v Ingo>Also wenn das Ding jetzt noch irgendwelche Libraries braucht, wo liegen die dann?

00:09:19.120 --> 00:09:26.080
<v Ingo>Werden die auch als Paket, als Nix-Paket dann nochmal extra installiert oder sind die da mit drin schon?

00:09:26.880 --> 00:09:33.520
<v Gast 1>Also das Nix benutzt halt genauso dynamisches Linking wie alle anderen Linux-Dispositionen in der Regel auch.

00:09:33.760 --> 00:09:40.720
<v Gast 1>Also wenn jetzt dieses SL zum Beispiel auf Endcurses abhängt,

00:09:40.800 --> 00:09:47.760
<v Gast 1>dann gibt es halt einen zweiten Pfad, der halt Nix Store Nix slash Store slash dann diese

00:09:47.760 --> 00:09:52.400
<v Gast 1>Hash-Summe und dann Endcurses minus die Versionsnummer und das ist dann halt ein anderer Pfad.

00:09:52.720 --> 00:09:57.840
<v Gast 1>Und das Bildsystem von Nix funktioniert halt so,

00:09:57.920 --> 00:10:02.800
<v Gast 1>dass das in dem Binary dann, also dass das Programm dann weiß,

00:10:02.880 --> 00:10:05.920
<v Gast 1>wo es nachgucken muss, um diese Bibliotheken zu finden.

00:10:06.240 --> 00:10:12.080
<v Felix>Genau, das ist ein großer Unterschied zu den, wenn man normal quasi Pakete baut,

00:10:12.240 --> 00:10:18.560
<v Felix>also quasi mit den normalen Faden, dann würde der

00:10:18.560 --> 00:10:25.120
<v Felix>GCC einfach, also die Standardpfade nehmen, zum Beispiel UserLib und da halt reinschauen und Userlib Include

00:10:25.440 --> 00:10:30.320
<v Felix>quasi die Header-Files suchen und die dann einfach nehmen,

00:10:30.400 --> 00:10:31.680
<v Felix>was da gerade installiert ist.

00:10:31.840 --> 00:10:38.640
<v Felix>Und im nächsten ist es so, dass man ganz explizit sagt, ich möchte gerne diese Library mit da drin haben und

00:10:38.640 --> 00:10:41.760
<v Felix>die Library liegt an folgender Stelle.

00:10:41.920 --> 00:10:48.160
<v Felix>Und dann gibt man quasi explizit diesen Nixdore-Pfad mit in diese Bauanleitung und das wird dann damit

00:10:48.160 --> 00:10:48.800
<v Felix>reingebaut.

00:10:49.280 --> 00:10:55.760
<v Felix>Und da merkt man ganz schnell, wie fragil eigentlich dieses ganze aktuelle Pakettieren mit einem

00:10:55.920 --> 00:10:56.880
<v Felix>Betriebssystem ist.

00:10:57.040 --> 00:11:01.520
<v Felix>Weil es ist quasi immer nur Zufall, dass diese Library gerade an der richtigen Stelle liegt.

00:11:01.680 --> 00:11:05.680
<v Felix>Und es ist Zufall, dass die auch gerade in der richtigen Version ungefähr da liegt.

00:11:06.400 --> 00:11:10.080
<v Felix>Genau, und wenn das da auf einmal dann nicht mehr passt, dann explodiert natürlich alles.

00:11:11.040 --> 00:11:17.680
<v Ingo>Und kann man ja auch dann so Sachen sagen wie, ich brauche eine Version größer als oder

00:11:17.680 --> 00:11:23.280
<v Ingo>kleiner als, weil sonst wäre es ja trotzdem jetzt, wenn was weiß ich,

00:11:23.600 --> 00:11:30.000
<v Ingo>SL N-Curses in der Version X braucht, ein anderes braucht es in der Version Y und der dritte brauchst wieder

00:11:30.160 --> 00:11:33.760
<v Ingo>in der Version Z, dann liegt es ja doch trotzdem drei, vier, fünfmal rum,

00:11:33.840 --> 00:11:37.600
<v Ingo>obwohl vielleicht der eine gar keine neuen Funktionen braucht, sondern einfach der,

00:11:37.680 --> 00:11:41.760
<v Ingo>der die Bauanleitung geschrieben hat, hat die gerade aktuelle genommen oder so.

00:11:42.000 --> 00:11:44.720
<v Ingo>Und das Paket ist schon länger nicht aktualisiert worden.

00:11:45.440 --> 00:11:50.400
<v Gast 1>Also das Paket wird halt immer wieder aktualisiert, sobald sich die Abhängigkeiten davon ändern.

00:11:50.880 --> 00:11:55.600
<v Gast 1>Und in X-Packages, also in diesen Paketen sorgt man dafür,

00:11:55.680 --> 00:11:59.920
<v Gast 1>dass wenn man quasi, wenn man updatet, dass er sich da was Neues runterlädt,

00:12:00.000 --> 00:12:04.000
<v Gast 1>dass dann alles halt erstmal grundsätzlich gegen dieselbe Version gebaut wird.

00:12:04.320 --> 00:12:08.000
<v Gast 1>Und wenn man jetzt irgendein Programm hat, was jetzt einen Konflikt hätte,

00:12:08.080 --> 00:12:14.080
<v Gast 1>also meinetwegen, man hat jetzt zum Beispiel Boost in Version Schieß mich tot und man braucht jetzt für ein

00:12:14.080 --> 00:12:19.280
<v Gast 1>anderes Programm eine andere Version, dann wird das beim Bauen schon mit angegeben.

00:12:19.920 --> 00:12:24.880
<v Gast 1>Und es wird aber eigentlich grundsätzlich, wenn man dafür sorgen, dass man halt möglichst immer die gleiche

00:12:24.880 --> 00:12:29.520
<v Gast 1>Version nimmt und wenn halt irgendwie mal was anderes sein muss, weil es irgendwie,

00:12:29.680 --> 00:12:32.640
<v Gast 1>dann kommt das Programm jetzt wirklich eine andere Version braucht,

00:12:32.800 --> 00:12:37.040
<v Gast 1>dann wird das halt schon einmal global festgelegt.

00:12:37.360 --> 00:12:37.680
<v Gast 1>Genau.

00:12:37.840 --> 00:12:44.000
<v Felix>Wird es quasi so, normalerweise ist es alle benutzen das gleiche und in besonderen Fällen wird gepinnt.

00:12:44.560 --> 00:12:46.560
<v Felix>Wird quasi auf eine bestimmte Version gepinnt.

00:12:49.040 --> 00:12:54.000
<v Gast 1>Ja, wenn man was installiert, dann kriegt man halt immer eigentlich die aktuellste Version standardmäßig

00:12:54.000 --> 00:12:54.560
<v Gast 1>erstmal.

00:12:55.840 --> 00:13:02.720
<v Gast 1>Und es gibt dann halt andere Paketnamen, die dann eine andere Version sein können.

00:13:02.960 --> 00:13:06.480
<v Gast 1>Zum Beispiel gibt es halt Postgres zum Beispiel über die Datenbank.

00:13:06.560 --> 00:13:10.160
<v Gast 1>Die gibt es dann halt in verschiedenen Versionen und da kann man sich dann dahin aussuchen.

00:13:10.800 --> 00:13:14.320
<v Gast 1>Aber man versucht jetzt nie irgendwie alle möglichen Versionen immer vorzuhalten,

00:13:14.400 --> 00:13:18.400
<v Gast 1>weil das kann man halt irgendwann nicht mehr überschauen, das wird zu komplex.

00:13:21.040 --> 00:13:21.360
<v Gast 1>Okay.

00:13:22.640 --> 00:13:29.600
<v Ingo>Jetzt hattest du gesagt, die werden gebaut und trotzdem hatten wir vorhin schon mal einmal diesen

00:13:29.840 --> 00:13:31.360
<v Ingo>Binary Cache.

00:13:31.520 --> 00:13:32.880
<v Ingo>Also was denn jetzt?

00:13:32.960 --> 00:13:38.400
<v Ingo>Und wer baut die und warum und wie kriege ich die dann jetzt auf meinen Rechner?

00:13:40.000 --> 00:13:44.000
<v Gast 1>Okay, das kann man eigentlich.

00:13:44.880 --> 00:13:48.560
<v Gast 1>Es gibt diese Pakete, diese Bauanleitung, was ich vorhin gesagt habe,

00:13:48.640 --> 00:13:53.840
<v Gast 1>diese Nix-Expressions, die kommen aus so einer Sammlung von,

00:13:54.800 --> 00:13:57.680
<v Gast 1>wo alle Pakete drin sind, die man sich bei Nix so installiert.

00:13:57.920 --> 00:14:03.520
<v Gast 1>Das heißt die Nix-Packages, das ist ein Repo, was auf Repository, was auf GitHub liegt.

00:14:03.840 --> 00:14:06.080
<v Gast 1>Dort werden die im Prinzip verwaltet.

00:14:06.400 --> 00:14:12.720
<v Gast 1>Und wenn man jetzt was, also Nix ist halt sowohl so ein gemischtes

00:14:13.120 --> 00:14:20.000
<v Gast 1>Modell, also man kann sowohl halt Sachen aus dem Source-Code installieren und halt aber auch auf dieses

00:14:20.000 --> 00:14:21.440
<v Gast 1>BR-Cache zurückgreifen.

00:14:21.600 --> 00:14:27.840
<v Gast 1>Und wenn man jetzt eine Bauanleitung da in diesen mit Nix

00:14:28.080 --> 00:14:32.960
<v Gast 1>installieren will für ein Paket, dann guckt er halt, berechnet er halt diese Hash-Summe und dann guckt er

00:14:32.960 --> 00:14:35.520
<v Gast 1>halt, ob für diese Hash-Summe schon jemand was gebaut hat.

00:14:35.680 --> 00:14:42.320
<v Gast 1>Und wenn man, wenn das jetzt, wenn das für noch kein Paket gibt, weil man imetwegen irgendwie selber irgendwas

00:14:42.640 --> 00:14:48.240
<v Gast 1>in dieser Bauanleitung geändert hat, dann wird das dann halt lokal gebaut.

00:14:49.760 --> 00:14:53.920
<v Gast 1>Und also damit hat man halt so das Beste von beiden Welten.

00:14:54.000 --> 00:14:57.440
<v Gast 1>Also man kann sich halt alles Mögliche anpassen, was man braucht.

00:14:57.600 --> 00:15:02.160
<v Gast 1>Und auf der einen Seite und auf der anderen Seite ist aber das meiste eigentlich schon irgendwie binär

00:15:02.160 --> 00:15:03.440
<v Gast 1>vorgebaut da.

00:15:03.920 --> 00:15:04.240
<v Gast 1>Genau.

00:15:04.400 --> 00:15:10.320
<v Ingo>Das ist relativ ein bisschen wie bei Arch Linux, wo ich halt den größten Teil halt als Binärpakete schon

00:15:10.320 --> 00:15:16.240
<v Ingo>vorliegen habe, aber dann halt einen Teil im Hour habe, wo halt die Sachen runtergeladen werden und lokal

00:15:16.240 --> 00:15:16.800
<v Ingo>gebaut werden.

00:15:17.040 --> 00:15:22.640
<v Gast 1>Genau, nur dass halt eigentlich, also ich würde so sagen, gefühlt gibt es eigentlich

00:15:23.600 --> 00:15:29.440
<v Gast 1>binär vorliegend gibt es eigentlich mehr Pakete in Nix-Packages als jetzt im Pac-Man-Korepos.

00:15:29.600 --> 00:15:34.000
<v Gast 1>Ich habe jetzt keine konkreten Zahlen, aber so vom Gefühl her würde ich sagen, müsste das mehr sein.

00:15:34.480 --> 00:15:40.960
<v Felix>Ich weiß auch gar nicht, ob Arc Linux, ob der Pac-Man einen Vollweg macht auf die Package-Builds,

00:15:41.840 --> 00:15:43.760
<v Felix>wenn er das Release gar nicht runterladen kann.

00:15:43.920 --> 00:15:44.560
<v Felix>Nee, macht gar nichts.

00:15:44.720 --> 00:15:44.960
<v Felix>Nee, nicht.

00:15:45.520 --> 00:15:46.320
<v Ingo>Pac-Man gab es das nicht.

00:15:46.480 --> 00:15:50.160
<v Gast 1>Aber man, jawohl, genau, wenn man mit Yaword was installiert, dann geht das zum Beispiel.

00:15:50.480 --> 00:15:50.800
<v Gast 1>Okay.

00:15:51.600 --> 00:15:53.440
<v Felix>Also es ist schon halt echt cool.

00:15:53.840 --> 00:15:58.640
<v Felix>Man hat halt irgendwie ein altes System und man muss quasi ein Upgrade auf eine neue Version machen,

00:15:58.960 --> 00:16:01.200
<v Felix>beziehungsweise auf eine andere alte Version.

00:16:02.160 --> 00:16:06.080
<v Felix>Dann liegt die vielleicht nicht im Binary Cache, aber man hat auf jeden Fall die Möglichkeit,

00:16:06.240 --> 00:16:07.760
<v Felix>das System fertig zu bauen.

00:16:08.080 --> 00:16:12.560
<v Felix>Einfach nur, indem man diese Quellen quasi hernimmt und dann baut es halt irgendwie einen halben Tag,

00:16:12.800 --> 00:16:15.280
<v Felix>den News-Kernel und den Chrome und was auch immer zusammen.

00:16:15.600 --> 00:16:18.000
<v Felix>Aber am Ende hat man trotzdem ein funktionierendes System.

00:16:18.560 --> 00:16:22.160
<v Felix>Und ja, wie gesagt, das ist quasi das Beste aus beiden Welten.

00:16:22.800 --> 00:16:26.160
<v Gast 1>Ja, also man kann dann auch, wenn man hier dieses Nix-Packages hat,

00:16:26.240 --> 00:16:30.880
<v Gast 1>dieses Repo, kann man sich das halt auch runterladen und sagen,

00:16:31.120 --> 00:16:36.240
<v Gast 1>ich installiere das jetzt nie über diesem Channel, also diese Paketliste,

00:16:36.320 --> 00:16:40.560
<v Gast 1>die mir, oder diese Nix-Expression, die mir der Nix-Paketmanager runterlädt,

00:16:40.640 --> 00:16:43.520
<v Gast 1>sondern ich kann das jetzt aus diesem Git hinbauen.

00:16:43.760 --> 00:16:50.720
<v Gast 1>Und es ist halt ein bisschen intelligenter noch als jetzt dieses Umstieg von Pac-Man zu AOR.

00:16:52.000 --> 00:16:58.880
<v Gast 1>Weil das wirklich checkt, ob das, also man kann jetzt irgendein Paket einfach komplett normal neu bauen

00:16:58.960 --> 00:17:03.120
<v Gast 1>und wenn es jetzt irgendwie zufällig das gleiche ist, was jemand anders schon mal gebaut hat in X-Packages

00:17:03.280 --> 00:17:07.280
<v Gast 1>drin hat und dort hochgeladen ist, dann findet es das halt wieder.

00:17:07.600 --> 00:17:08.240
<v Gast 1>Ja, genau.

00:17:08.400 --> 00:17:11.680
<v Felix>Also Aur ist ja so ein bisschen so zweite Klasse-Gesellschaft, ja.

00:17:12.080 --> 00:17:16.560
<v Felix>Man kriegt da quasi schon irgendwie alles, aber da muss man es selber bauen und dauert so lange und dann sind

00:17:16.560 --> 00:17:20.880
<v Felix>die halt, du, halt immer ein bisschen komische Qualität halt,

00:17:21.120 --> 00:17:23.600
<v Felix>weiß man nicht genau, wie lange es abgedatet wurde.

00:17:23.920 --> 00:17:29.920
<v Felix>Bei Nix-Packages ist es so, alles ist quasi gleichberechtigt und alles,

00:17:30.160 --> 00:17:33.760
<v Felix>was nicht in Nix-Packages liegt, man aber selber braucht, dann kann,

00:17:33.920 --> 00:17:36.640
<v Felix>da kann man sich relativ leicht drum selber kümmern.

00:17:36.720 --> 00:17:41.680
<v Felix>Und wenn es dann quasi im Upstream liegen würde, dann würde es auch für dich mitgebaut werden.

00:17:41.840 --> 00:17:44.000
<v Felix>Und das ist schon sehr cool.

00:17:45.760 --> 00:17:46.560
<v Felix>Genau.

00:17:47.680 --> 00:17:53.280
<v Gast 1>Also dieses Nix-Packages, das kann man wie Ports auf FreeBSD, da gibt es halt so einen ähnlichen Ansatz,

00:17:53.600 --> 00:17:57.120
<v Gast 1>dass man, dort hat man auch ein SVN-Repository.

00:17:57.920 --> 00:18:04.080
<v Gast 1>Und da kann man halt auch in verschiedene Unterverzeichnisse auf FreeBSD reingehen und dort dann Mac aufrufen

00:18:04.080 --> 00:18:09.200
<v Gast 1>und Mac Install Install World oder irgend sowas, ich weiß es nicht mehr genau.

00:18:09.360 --> 00:18:12.400
<v Gast 1>Und dann installiert das dann halt in das System rein.

00:18:12.560 --> 00:18:15.600
<v Gast 1>Und so ist das halt bei Nix Packages auch.

00:18:15.840 --> 00:18:20.960
<v Gast 1>Dass man da, wenn man Sachen anpassen will, dass man das dann nochmal machen kann.

00:18:23.840 --> 00:18:28.560
<v Ingo>Okay, und wer hat jetzt die Möglichkeit, solche Nix-Packages anzulegen?

00:18:28.640 --> 00:18:33.440
<v Ingo>Also das sind alle Leute, die dann in dieses Git-Repo reinschreiben dürfen oder dieses GitHub-Prepo

00:18:33.440 --> 00:18:34.640
<v Ingo>reinschreiben dürfen.

00:18:36.000 --> 00:18:41.520
<v Gast 1>Also Pakete hinzufügen und so weiter kann eigentlich grundsätzlich jeder.

00:18:44.640 --> 00:18:49.200
<v Gast 1>Nix-Packages aufgenommen werden, dafür muss man dann einen Pull-Request machen auf GitHub.

00:18:49.440 --> 00:18:55.840
<v Gast 1>Das machen halt auch viele Leute, also das ist Nix-Packages gehört wahrscheinlich zu einem der größten gibt

00:18:56.080 --> 00:18:59.520
<v Gast 1>Repositories auf GitHub, also mit den meisten Kontributoren.

00:19:02.800 --> 00:19:06.560
<v Gast 1>Da kann man halt, was ich, also man kann ja auch bestehende Pakete updaten,

00:19:06.640 --> 00:19:09.760
<v Gast 1>also dass es jetzt nicht, dass er irgendwie so ein festgelegt ist, also dass es jetzt irgendwie einen

00:19:09.760 --> 00:19:14.160
<v Gast 1>Maintainer gibt für ein Paket, sondern wenn man irgendwie meint, dass man jetzt das Paket in einer neueren

00:19:14.160 --> 00:19:18.000
<v Gast 1>Version braucht oder dass man jetzt irgendwie einen Fehler gefunden hat,

00:19:18.080 --> 00:19:22.960
<v Gast 1>dann kann man halt dort reingehen und das anpassen und dann den Pull Request aufmachen.

00:19:23.200 --> 00:19:28.720
<v Gast 1>Und dann gibt es halt eine Gruppe von so Core-Maintainern, die dann halt diese Pull-Quests sich angucken,

00:19:29.040 --> 00:19:34.640
<v Gast 1>zu denen ich da auch dazu gehöre, die dann auf den Merch in eine Pull-Request merchen können.

00:19:36.400 --> 00:19:38.320
<v Ingo>Okay, und wie viele Leute sind das?

00:19:38.400 --> 00:19:41.840
<v Ingo>Also es ist natürlich auch dann wieder so eine Geschichte von Trust.

00:19:42.000 --> 00:19:46.000
<v Ingo>Also wenn das jetzt alles auf GitHub liegt und so ist

00:19:46.610 --> 00:19:52.370
<v Ingo>eine Gruppe Commenttainer gibt, die dann halt drüber gucken, muss ich euch dann halt vertrauen,

00:19:52.450 --> 00:19:53.650
<v Ingo>dass ihr keinen Scheiß baut.

00:19:53.890 --> 00:19:58.850
<v Felix>Ja, das ist so wie bei Arc Linux die Premium User oder so, wie sind es.

00:19:59.250 --> 00:20:00.610
<v Felix>Trusted User, nicht Premium-User.

00:20:01.890 --> 00:20:03.650
<v Ingo>Premium-User-Hörer sind bei uns.

00:20:03.970 --> 00:20:05.090
<v Felix>Die Premium-Hörer haben wir.

00:20:05.250 --> 00:20:08.050
<v Felix>Die Trusted-Hörer haben wir bei Arc Linux.

00:20:08.130 --> 00:20:08.290
<v Felix>Genau.

00:20:09.170 --> 00:20:10.530
<v Ingo>Trusted Hörer haben wir bei Arc Linux.

00:20:11.570 --> 00:20:12.450
<v Felix>Ähnliches Konzept.

00:20:12.530 --> 00:20:17.250
<v Felix>Oder wie bei beim Linux Kernel, wo man dann so verschiedene Gruppen hat.

00:20:17.890 --> 00:20:22.850
<v Felix>Hier ist es halt quasi gerade eine Gruppe, die sich um Nix-Packages und um die Pakete kümmert.

00:20:23.010 --> 00:20:27.170
<v Gast 1>Also es ist halt nie ganz so, also man muss ihnen halt nie hundertprozentig vertrauen,

00:20:27.250 --> 00:20:29.570
<v Gast 1>man kann ihnen halt, man kann halt auch Dinge prüfen.

00:20:29.650 --> 00:20:35.170
<v Gast 1>Also dadurch, dass man diese Bauenleitung vorliegen hat und ein Feature von Nix ist halt,

00:20:35.250 --> 00:20:38.210
<v Gast 1>dass halt viel Wert darauf gelegt werden wird.

00:20:38.610 --> 00:20:43.090
<v Gast 1>Gut, das machen mittlerweile andere Dispositionen auch, dass die Pakete reproducible sind.

00:20:43.170 --> 00:20:48.370
<v Gast 1>Das heißt, dass wenn man das versucht selber zu bauen, dass man zum gleichen Ergebnis kommt.

00:20:49.410 --> 00:20:53.410
<v Gast 1>Und man kann dann halt sich diese Bauanleitung hernehmen, das Paket nochmal bauen und gucken,

00:20:53.490 --> 00:20:55.570
<v Gast 1>ob da wieder dasselbe rauskommt.

00:20:55.730 --> 00:21:00.930
<v Gast 1>Also wird dann viel normalisiert beim Bauen, dass da die Zeitstempel,

00:21:01.010 --> 00:21:05.250
<v Gast 1>also dass die Zeitstempel alle auf 1970 sind auf Unix-Time.

00:21:05.490 --> 00:21:10.050
<v Gast 1>Und dass da halt jetzt irgendwo Zufall mit reingeschrieben wird,

00:21:10.130 --> 00:21:13.010
<v Gast 1>dass man das dann wirklich, dass das eins zu eins dasselbe ist.

00:21:15.330 --> 00:21:20.370
<v Gast 1>Können wir vielleicht noch auf ein paar andere Sachen im Nix-Ökosystem eingehen?

00:21:21.490 --> 00:21:22.210
<v Gast 1>Ja, machen wir gleich.

00:21:22.290 --> 00:21:26.290
<v Ingo>Ich würde jetzt gerne noch kurz wissen, wie groß ist so das Core-Team, wie viele Leute seid ihr da?

00:21:26.930 --> 00:21:28.610
<v Gast 1>Ich lade gerade die Liste.

00:21:31.410 --> 00:21:32.850
<v Unbekannt>Warte mal, irgendwie bin ich auch gerade.

00:21:36.050 --> 00:21:37.810
<v Ingo>Auch das kriegen wir in dieser Spezialsitzung.

00:21:37.890 --> 00:21:39.250
<v Gast 1>Ja, es muss ja aktuell sein.

00:21:39.570 --> 00:21:39.890
<v Gast 1>Genau.

00:21:40.210 --> 00:21:41.170
<v Felix>Es muss live sein.

00:21:41.410 --> 00:21:42.530
<v Unbekannt>Es muss live sein.

00:21:42.850 --> 00:21:47.010
<v Gast 1>Also ich habe erzählt gerade, bis die Contributors sind 1300.

00:21:47.970 --> 00:21:52.530
<v Ingo>Okay, das sind alle, die jemals zu irgendeinem Nix-Package beigetragen haben.

00:21:52.690 --> 00:21:52.850
<v Ingo>Genau.

00:21:53.490 --> 00:21:55.170
<v Ingo>Und sei es auch nur eine Zeile, ja.

00:21:57.010 --> 00:21:58.450
<v Gast 1>Ich finde die bestimmt nochmal.

00:21:59.410 --> 00:22:01.170
<v Gast 1>Wer jetzt alles Schreibzugriff hat.

00:22:01.490 --> 00:22:02.290
<v Gast 1>Es waren, glaube ich.

00:22:02.770 --> 00:22:04.930
<v Ingo>Okay, aber es sind so eher so 20 Leute oder.

00:22:05.570 --> 00:22:06.690
<v Gast 1>Eher so 50.

00:22:06.930 --> 00:22:08.770
<v Felix>Ich hätte jetzt auch geraten 50, also.

00:22:09.010 --> 00:22:09.890
<v Felix>Sowas in die Richtung.

00:22:10.210 --> 00:22:11.330
<v Ingo>Aber sowas in dem Dreh.

00:22:12.050 --> 00:22:12.370
<v Ingo>Okay.

00:22:12.530 --> 00:22:16.210
<v Ingo>Und ihr trefft euch auch ab und zu mal in einem RC oder irgendwas.

00:22:16.530 --> 00:22:16.610
<v Ingo>Genau.

00:22:17.250 --> 00:22:21.810
<v Gast 1>Gibt es auf Freenote, das heißt NixOS.

00:22:22.370 --> 00:22:24.370
<v Gast 1>Ja, genau, was NixOS ist, kommt, ist da.

00:22:25.010 --> 00:22:25.330
<v Gast 1>Kann man noch.

00:22:28.370 --> 00:22:28.690
<v Gast 1>Ja.

00:22:29.490 --> 00:22:29.810
<v Gast 1>Genau.

00:22:30.210 --> 00:22:36.930
<v Felix>Aber es gibt auch eine Mailingliste, die für so dieses globale Organisieren verwendet wird.

00:22:37.410 --> 00:22:41.170
<v Felix>Nix-Dev oder so auf Ja, Nix-Dev, genau.

00:22:41.410 --> 00:22:43.410
<v Felix>Weil nix-dev schon verbraucht war.

00:22:43.730 --> 00:22:49.250
<v Gast 1>Nix ist ja umstieg jetzt von irgendeiner Uni-Mailing-Liste auf Google Groups oder so.

00:22:50.050 --> 00:22:51.730
<v Felix>Weil zu viel Throughput war oder so.

00:22:51.810 --> 00:22:54.450
<v Felix>Das war einfach auch die total absurde Geschichte.

00:22:54.770 --> 00:22:57.730
<v Gast 1>Ja, hat er halt keiner verlust, das zu mainten oder so.

00:22:58.530 --> 00:22:59.490
<v Felix>Achso, ja, stimmt.

00:23:01.010 --> 00:23:04.770
<v Felix>Ja, also es gibt immer, also es gibt natürlich wie in allen großen Projekten,

00:23:04.850 --> 00:23:06.450
<v Felix>gibt es immer so ein bisschen Drama.

00:23:07.010 --> 00:23:08.450
<v Felix>Wegen allen möglichen Sachen.

00:23:08.770 --> 00:23:12.050
<v Gast 1>Ja, aber es ist eigentlich eigentlich relativ zivilisiert.

00:23:13.170 --> 00:23:14.690
<v Felix>Das stimmt, alle sind schon groß.

00:23:15.490 --> 00:23:16.370
<v Felix>Da kann man nichts sagen.

00:23:16.610 --> 00:23:18.530
<v Ingo>Also es erste Projekt.

00:23:18.690 --> 00:23:23.890
<v Gast 1>Es ist nie wie auf der Linux-Kuddel Mail-Liste, wo man dann irgendwie beschimpft wird oder so,

00:23:23.970 --> 00:23:27.810
<v Gast 1>wenn man irgendwie Touch Touch Touch-Bases gemacht hat.

00:23:29.010 --> 00:23:31.330
<v Felix>Es gibt ein Linus Torwalz.

00:23:32.770 --> 00:23:35.650
<v Ingo>Das ist der Erfinder von Nix, oder wie?

00:23:36.930 --> 00:23:38.530
<v Felix>Ja, pretty much, ja.

00:23:40.210 --> 00:23:43.170
<v Felix>Und zwar, das ist der Elko Dolstra.

00:23:43.570 --> 00:23:50.530
<v Gast 1>Ja, und das ist ein Niederländer und hat das quasi, das Ganze ist aus

00:23:50.530 --> 00:23:54.290
<v Gast 1>einem Forschungsprojekt entstanden, also das war seine Doktorarbeit.

00:23:55.090 --> 00:23:58.610
<v Gast 1>Also da hat er dann über Nix ein Paper geschrieben und dann halt noch ein paar andere Projekte,

00:23:58.690 --> 00:24:00.290
<v Gast 1>die dann darauf aufgesetzt haben.

00:24:00.530 --> 00:24:06.530
<v Gast 1>Und das Ganze war im Jahre 2004 oder so, war die erste Veröffentlichung.

00:24:07.810 --> 00:24:11.730
<v Gast 1>Und es hat aber halt so ein Stück gebraucht, bis ich das eigentlich,

00:24:12.130 --> 00:24:14.530
<v Gast 1>bis das dann angefangen hatte, mal so zu wachsen.

00:24:14.610 --> 00:24:19.970
<v Gast 1>Also das war, glaube ich, eigentlich viel lange Zeit, dass man nie so viel passiert.

00:24:20.210 --> 00:24:24.610
<v Gast 1>Es ging eigentlich, glaube ich, erst so 2014 oder so.

00:24:24.690 --> 00:24:26.370
<v Gast 1>Oder wann ging das so los, wie ich jetzt nicht?

00:24:26.610 --> 00:24:27.250
<v Gast 1>Ich weiß es nicht.

00:24:27.330 --> 00:24:32.370
<v Felix>Ich würde ja raten, wenn, wo die Haskell-Community darauf aufmerksam geworden ist.

00:24:33.330 --> 00:24:36.530
<v Felix>Also ich denke, das muss irgendwo in die Richtung passen.

00:24:37.410 --> 00:24:41.730
<v Gast 1>Also wenn man so auf die Contributions guckt, die Nix-Packages sind,

00:24:41.890 --> 00:24:46.930
<v Gast 1>dann, ja gut, es wächst eigentlich die ganze Zeit, aber würde ich sagen,

00:24:47.010 --> 00:24:51.170
<v Gast 1>so ab 2014, also so um die Zeitpunkt.

00:24:51.970 --> 00:24:53.650
<v Felix>Ich Google trend das mal.

00:24:55.810 --> 00:24:59.090
<v Ingo>Genau, und ich habe auch gesehen, es gibt auch eine Nix Foundation mittlerweile,

00:24:59.170 --> 00:25:05.410
<v Ingo>die sich so um die Weiterentwicklung des Paketformats und sowas dann kümmert.

00:25:06.050 --> 00:25:11.090
<v Gast 1>Ja, also im Prinzip ist der Nix Packages,

00:25:11.250 --> 00:25:17.330
<v Gast 1>wird halt von vielen maintained, aber der Paketmanager selber, das hat immer noch von El Codestra

00:25:18.290 --> 00:25:20.610
<v Gast 1>das Projekt, wo er dran arbeitet.

00:25:25.650 --> 00:25:28.930
<v Ingo>Okay, und das macht er im Rahmen seiner Forschungstätigkeiten.

00:25:29.250 --> 00:25:33.890
<v Gast 1>Ja, also es ist halt schon fertig, er kriegt quasi jetzt seinen Job.

00:25:33.970 --> 00:25:39.490
<v Gast 1>Also er arbeitet halt für eine Firma und die bezahlt ihn dafür, dass er daran weitermacht.

00:25:40.370 --> 00:25:40.690
<v Gast 1>Okay.

00:25:42.130 --> 00:25:46.850
<v Ingo>Okay, also ja, da gibt es zumindest Leute, die auch hauptberuflich sozusagen darauf.

00:25:47.090 --> 00:25:52.610
<v Gast 1>Also es gibt halt auch kommerziellen Support, wenn man dafür, also wenn man eben der Community-Support nie

00:25:52.690 --> 00:25:57.490
<v Gast 1>ausreicht, dann gibt es halt auch Firmen, die das, ähm, die da hinten unter die Arme greifen.

00:25:59.090 --> 00:25:59.410
<v Gast 1>Okay.

00:26:00.130 --> 00:26:03.730
<v Ingo>Also doch schon ein etwas größeres Projekt sozusagen.

00:26:04.210 --> 00:26:09.090
<v Ingo>Gut, dann können wir jetzt nochmal nochmal tiefer in die Nix-Sachen abtauchen.

00:26:09.410 --> 00:26:15.650
<v Ingo>Ich hatte dich vorhin da unterbrochen, du wolltest nochmal ein bisschen über weitere

00:26:15.650 --> 00:26:18.530
<v Ingo>Features, glaube ich, reden von Nix.

00:26:19.410 --> 00:26:21.890
<v Gast 1>Nix Adienne ist halt auch schon eine praktische Sache.

00:26:22.690 --> 00:26:28.130
<v Gast 1>Man kann das halt auch schon auch schon so hernehmen,

00:26:28.210 --> 00:26:31.730
<v Gast 1>dass man das benutzt, um sich so eine Entwicklungsumgebung sowas zu bauen.

00:26:31.810 --> 00:26:34.610
<v Gast 1>Also dass man jetzt sich so eine

00:26:39.650 --> 00:26:44.370
<v Gast 1>reinschreibt, zusammenschreibt, welche Programme man jetzt zum Beispiel für ein bestimmtes Projekt braucht

00:26:44.450 --> 00:26:50.130
<v Gast 1>oder welche Bibliotheken und dann kann man das halt in einem Team benutzen,

00:26:50.210 --> 00:26:55.010
<v Gast 1>also dass man überall die gleiche Entwicklungsumgebung hat und dass es dann halt auch wirklich eins zu eins

00:26:55.010 --> 00:26:55.490
<v Gast 1>dasselbe ist.

00:26:55.570 --> 00:26:56.530
<v Gast 1>Das funktioniert halt zum Beispiel.

00:26:56.770 --> 00:27:02.610
<v Felix>Das ist quasi wie VirtualEnv oder dieses Ruby, wie heißt das RBM.

00:27:05.010 --> 00:27:09.810
<v Felix>Nur halt auf Steroiden, weil das ist nicht nur diese Ruby-Dependencies,

00:27:09.890 --> 00:27:12.770
<v Felix>sondern alle Dependencies, die man dafür braucht.

00:27:13.010 --> 00:27:19.410
<v Felix>Und das so genau dann abzustecken, zu sagen, okay, ich brauche genau diese Versionen für diese Sachen und

00:27:19.410 --> 00:27:25.570
<v Felix>alle, die das dann quasi in diese Umgebung sich reinbewegen, haben dann genau dein Setup auch.

00:27:25.890 --> 00:27:29.330
<v Felix>Das ist schon echt cool, um Leute zu kickstarten.

00:27:29.410 --> 00:27:33.810
<v Felix>Es ist nicht so, okay, jetzt muss ich erstmal irgendwie eine Library installieren und dann muss ich irgendwie

00:27:33.810 --> 00:27:39.330
<v Felix>ein AWM installieren und dann muss ich das und das machen, sondern es ist quasi mit einer Beschreibung

00:27:39.330 --> 00:27:42.850
<v Felix>abgegolten, was zu passieren ist und wie die Entwicklung aussieht.

00:27:43.410 --> 00:27:48.130
<v Gast 1>Also man kann das dann, also zum Beispiel hier dieses Studio-Link, das Paket gibt es jetzt gerade noch nie,

00:27:48.290 --> 00:27:49.970
<v Gast 1>worüber wir gerade die Aufnahme machen.

00:27:50.050 --> 00:27:55.810
<v Gast 1>Das Paket gibt es jetzt noch nie, in Nix-Packages drin, aber MegFoo hat mir halt einen Schnipsel geschickt,

00:27:55.970 --> 00:28:01.490
<v Gast 1>den habe ich dann halt ausgeführt und dadurch habe ich dann halt Studio-Link bei mir auf dem Rechner gehabt.

00:28:01.570 --> 00:28:05.810
<v Gast 1>Und wenn ich das eine Zeit lang nie mehr benutze, weil ich das jetzt nie fest installiert habe,

00:28:05.890 --> 00:28:08.130
<v Gast 1>dann wird das dann auch irgendwann wieder aufgeräumt.

00:28:08.690 --> 00:28:14.050
<v Gast 1>Also man kann sich halt diese Programme, die man sich halt für so eine Projekt installiert,

00:28:14.130 --> 00:28:18.530
<v Gast 1>die werden halt erstmal so, die werden schon so runtergeladen und ausgepackt und so weiter,

00:28:18.610 --> 00:28:23.890
<v Gast 1>aber die werden jetzt nie irgendwo fest registriert, sodass wenn man dann später so einen Offräum-Prozent,

00:28:23.970 --> 00:28:26.770
<v Gast 1>also so eine Garbage-Correction startet, dass sie dann auch wieder wegfallen.

00:28:26.850 --> 00:28:33.570
<v Gast 1>Und dadurch hat man, habe ich, würde ich sagen, hat man so über einen längeren Zeitraum weniger Müll auf

00:28:33.570 --> 00:28:34.850
<v Gast 1>seiner Festplatte.

00:28:35.570 --> 00:28:38.530
<v Gast 1>Man nie für jedes Projekt irgendwie alles immer installiert haben muss,

00:28:38.610 --> 00:28:40.530
<v Gast 1>sondern das auch so ein bisschen on-demand machen kann.

00:28:40.610 --> 00:28:45.010
<v Gast 1>Also man muss dann nie die Updates dafür installieren, wenn man das Projekt gerade gar nicht benutzt.

00:28:45.250 --> 00:28:48.210
<v Felix>Genau, oder die VirtualEnvs aufräumen oder so ein Quatsch halt.

00:28:48.610 --> 00:28:51.650
<v Gast 1>So ein anderes Problem zum Beispiel bei diesem Virtual Env ist, oder bei diesen,

00:28:51.890 --> 00:28:54.690
<v Gast 1>wenn man so irgendwie so zwei Paketmanager hat, also irgendwie diesen,

00:28:54.770 --> 00:29:00.930
<v Gast 1>diesen, man hat jetzt irgendwie Sachen in sein System installiert und dann hat man jetzt ein VirtualEnv und

00:29:01.090 --> 00:29:05.410
<v Gast 1>man installiert zum Beispiel in dieses Virtual Env jetzt irgendeine Programm rein,

00:29:05.490 --> 00:29:07.330
<v Gast 1>was jetzt gegen eine Systemlibrary links.

00:29:07.570 --> 00:29:13.810
<v Gast 1>Zum Beispiel in Python, bei Virtual Env hat man jetzt irgend so eine XML-Geschichte,

00:29:13.970 --> 00:29:16.530
<v Gast 1>die jetzt gegen LibXML zu linkt.

00:29:16.850 --> 00:29:22.770
<v Gast 1>Und jetzt updatet man sein System und es gibt halt eine neue Library-Version und eigentlich müsste man diese

00:29:22.770 --> 00:29:23.970
<v Gast 1>VirtualEnv neu bauen.

00:29:24.050 --> 00:29:26.290
<v Gast 1>Aber die Virtual Env wisst das nicht, dass man das neu bauen muss.

00:29:26.450 --> 00:29:31.890
<v Gast 1>Da gibt es dann halt einen kaputten Link da drin und ja, da muss man das halt wieder komplett neu aussetzen.

00:29:31.970 --> 00:29:38.530
<v Gast 1>Und bei Nix passiert das dann halt automatisch, also dass das quasi neu gebaut wird.

00:29:44.450 --> 00:29:47.330
<v Gast 1>Ja, okay, also jetzt würde ich mal weiter rausgehen.

00:29:47.410 --> 00:29:53.410
<v Gast 1>Also man hat, also erstmal halt dieser Nix-Paket Manager und dann hat

00:29:54.850 --> 00:29:59.650
<v Gast 1>sich dann in der Laufe der Entwicklung kam dann die Linux-Distribution hinzu,

00:29:59.730 --> 00:30:04.370
<v Gast 1>die dann Nix als den Hauptpaket Manager benutzt hat und das ist NixOS.

00:30:04.850 --> 00:30:08.930
<v Gast 1>Also es ist halt eine, ja basiert halt ganz normal auf dem Linux-Kernel und sind halt auch die ganzen

00:30:08.930 --> 00:30:11.250
<v Gast 1>Programme sind halt auch Linux-typisch.

00:30:11.650 --> 00:30:15.010
<v Gast 1>Aber was halt der Unterschied zu normalen Linux-Distributionen ist,

00:30:15.170 --> 00:30:19.810
<v Gast 1>dass diese Konfiguration, mit denen man dieses NixOS konfiguriert,

00:30:19.970 --> 00:30:26.610
<v Gast 1>dass die rein deklarativ und über ein zentrales Konfigurationsformat ist.

00:30:26.690 --> 00:30:31.330
<v Gast 1>Also so wie man seine Pakete baut in dieser Sprache, in diesen Nix-Expressions,

00:30:31.410 --> 00:30:33.490
<v Gast 1>so kann man noch sein System beschreiben.

00:30:33.890 --> 00:30:38.770
<v Gast 1>Das ist dann halt, da gibt man zum Beispiel an, man hat jetzt halt diese Datei,

00:30:38.850 --> 00:30:43.970
<v Gast 1>die heißt ETC-Configuration, XOS Configuration.nix.

00:30:44.370 --> 00:30:49.010
<v Gast 1>Und dort schreibt man dann zum Beispiel rein, ich will jetzt irgendwie folgende Nutzer auf meinem System

00:30:49.010 --> 00:30:49.330
<v Gast 1>haben.

00:30:49.810 --> 00:30:56.530
<v Gast 1>Und ich brauche noch folgenden SSH-Dienst und irgendwie einen Netzwerk-Mount oder habe noch irgendwie

00:30:56.530 --> 00:30:58.850
<v Gast 1>folgende Partitionen, die ich mounten haben will.

00:30:58.930 --> 00:31:01.570
<v Gast 1>Und dann kann man halt alles in diese Datei mal reinschreiben.

00:31:02.370 --> 00:31:03.090
<v Gast 1>Und wenn man dann den.

00:31:03.570 --> 00:31:10.530
<v Ingo>Welche Pakete ich haben will, also ob ich jetzt, was weiß ich, den Apache oder Nginx oder zoome ich mal haben

00:31:10.530 --> 00:31:10.690
<v Ingo>will.

00:31:10.930 --> 00:31:14.210
<v Gast 1>Genau, und auch für den Apachen oder für den Nginx auch noch sagen,

00:31:14.530 --> 00:31:17.970
<v Gast 1>welche Konfiguration, mit welcher Konfiguration das gesteudert werden soll.

00:31:19.090 --> 00:31:21.970
<v Gast 1>Das alles geht halt über diese zentrale Datei.

00:31:22.290 --> 00:31:28.210
<v Gast 1>Und wenn man dann Nix.s-Rebuild Switch ausführt,

00:31:28.290 --> 00:31:34.450
<v Gast 1>den Befehl, dann baut liest liest der

00:31:36.050 --> 00:31:42.530
<v Gast 1>Paketmanager nichts quasi diese Konfigurationsdatei und baut alle Programme und Konfigurationsdateien

00:31:42.530 --> 00:31:43.170
<v Gast 1>daraus.

00:31:43.410 --> 00:31:47.650
<v Gast 1>Also man ist dann bei normalen Paketmanagern hat man halt immer das Problem,

00:31:47.730 --> 00:31:54.530
<v Gast 1>wenn man zum Beispiel ein SSHD installiert,

00:31:54.610 --> 00:31:57.090
<v Gast 1>dass es dann halt eine Konfigurationsdatei nicht für ein SSHD gibt,

00:31:57.170 --> 00:32:01.170
<v Gast 1>sondern wird die halt vom Paketmanager erstmal so dort rein installiert nach ETC.

00:32:01.330 --> 00:32:04.450
<v Gast 1>Und dann, wenn man sich irgendwas anpassen will, dann muss man das halt manuell bearbeiten.

00:32:04.530 --> 00:32:08.530
<v Gast 1>Und wenn es dann halt wieder ein System-Update gibt, dann muss halt der Paketmanager erstmal hingucken und

00:32:08.770 --> 00:32:13.650
<v Gast 1>versuchen jetzt irgendwie die Änderungen vom Nutzer zusammenzuführen mit den eigenen Änderungen.

00:32:13.810 --> 00:32:16.290
<v Gast 1>Und das ist halt alles so ein bisschen suboptimal.

00:32:16.370 --> 00:32:20.290
<v Gast 1>Und bei Nix wird es halt dadurch gelöst, dass man alles über diese

00:32:23.170 --> 00:32:27.650
<v Gast 1>Nix-Sprache da konfiguriert und das wird dann so zusammengeführt mit den Sachen,

00:32:27.890 --> 00:32:30.450
<v Gast 1>die in Nix-Packages definiert sind.

00:32:30.690 --> 00:32:32.530
<v Felix>Genau, und zwar jedes Mal von neuen.

00:32:32.610 --> 00:32:36.690
<v Felix>Also es ist nicht so, man geht von irgendeinem Stand aus und dann macht man irgendwas und dann ist es der neue

00:32:36.690 --> 00:32:40.450
<v Felix>Stand, sondern man baut jedes Mal das komplette System neu.

00:32:40.690 --> 00:32:44.930
<v Felix>Und wenn sich nichts geändert hat oder nur eine Konfigurationsdatei geändert hat,

00:32:45.010 --> 00:32:48.530
<v Felix>dann baut er halt nur diese eine Konfigurationsdatei, die sich geändert hat,

00:32:48.690 --> 00:32:49.250
<v Felix>neu.

00:32:50.050 --> 00:32:56.450
<v Ingo>Genau, jetzt habt ihr auch gerade schon gesagt, Switch, also er baut was neu und geht dann da auch gleich

00:32:56.450 --> 00:32:57.090
<v Ingo>rein.

00:32:57.650 --> 00:33:03.730
<v Ingo>Und wenn ich irgendwas kaputt gemacht habe dabei, komme ich dann da auch wieder zu dem alten Stand zurück,

00:33:03.810 --> 00:33:04.050
<v Ingo>oder?

00:33:04.290 --> 00:33:04.690
<v Ingo>Genau.

00:33:05.010 --> 00:33:11.330
<v Gast 1>Also dann kann man dann minus-Srollback noch als Option angeben und dann würde er halt wieder auf die alte,

00:33:11.410 --> 00:33:13.970
<v Gast 1>also Generation nennt sich das zurückgehen.

00:33:14.210 --> 00:33:18.370
<v Gast 1>Und das ist halt die einzige Möglichkeit, wie man wieder auf eine alte Version zurückspringen kann.

00:33:18.530 --> 00:33:23.570
<v Gast 1>Es wird nämlich auch für jedes Systemupdate, was man installiert, oder jedes Mal,

00:33:23.650 --> 00:33:29.650
<v Gast 1>wenn man halt diese Switch ausführt, wird dann halt ein neuer Bootloader-Eintrag festgelegt.

00:33:30.130 --> 00:33:35.330
<v Gast 1>Und man kann dann halt im Bootloader-Menü auch wieder auf alte Versionen zurückspringen,

00:33:35.490 --> 00:33:41.650
<v Gast 1>wenn jetzt meinetwegen der Kernel durch irgendeinen Grund kaputt gegangen ist oder irgendwas,

00:33:41.810 --> 00:33:43.810
<v Gast 1>also das System nicht mehr bootbar ist.

00:33:45.250 --> 00:33:50.210
<v Gast 1>Sodass dann halt das Einzige, was nie kaputt gehen darf, ist dann halt der Bootloader.

00:33:50.290 --> 00:33:55.010
<v Gast 1>Wenn der kaputt geht, dann muss man den halt manuell fixen, aber ansonsten kann man halt immer wieder zurück.

00:33:55.890 --> 00:33:56.690
<v Gast 1>Genau.

00:33:57.570 --> 00:34:02.210
<v Felix>Aber, ja, genau, also es ist dann auch wirklich so, im Grub, also in deinem Bootloader,

00:34:02.450 --> 00:34:05.490
<v Felix>den du dir ausgewählt hast, weil du hast natürlich mehrere Möglichkeiten wieder,

00:34:05.890 --> 00:34:12.690
<v Felix>hast du dann die Liste von allen von allen noch vorhandenen Generationen und du

00:34:12.690 --> 00:34:13.650
<v Felix>kannst ja eine aussuchen.

00:34:13.730 --> 00:34:18.770
<v Felix>Dann kannst du sagen, okay, ich hätte gerne die, was ich irgendwie vor fünf Monaten mal hochgefahren habe.

00:34:19.010 --> 00:34:23.490
<v Felix>Und dann sucht man die aus und startet es und dann ist es das System genauso wie vor fünf Monaten.

00:34:23.570 --> 00:34:27.250
<v Felix>Abgesehen von den ganzen unreinen Teilen quasi.

00:34:27.330 --> 00:34:30.450
<v Felix>Also alles, was in deinem Home ist, wird natürlich nicht zurückgesetzt.

00:34:30.770 --> 00:34:33.490
<v Felix>Alles, was du irgendwie hingepfuscht hast, wird auch nicht zurückgesetzt,

00:34:33.570 --> 00:34:38.050
<v Felix>aber alles, was durch nichts gebaut wurde, das ist auch dann auch zurückgesetzt.

00:34:39.010 --> 00:34:39.890
<v Unbekannt>Genau, und das ist auch.

00:34:40.290 --> 00:34:40.450
<v Unbekannt>Okay.

00:34:40.690 --> 00:34:42.690
<v Ingo>Und das ist auch ganz normal beschreibbar.

00:34:42.770 --> 00:34:47.730
<v Ingo>Also ich bin dann nicht irgendwie an irgendwas gebunden oder so.

00:34:48.770 --> 00:34:50.930
<v Gast 1>Schreibbar im Sinne von, also.

00:34:51.970 --> 00:34:55.490
<v Ingo>Ja, also ich bin in einem System, mit dem kann ich genauso weiterarbeiten.

00:34:55.650 --> 00:35:00.610
<v Ingo>Es ist jetzt nicht irgendwie ein Snapshot gewesen, der irgendwie dann noch ein Read-only ist oder so,

00:35:00.690 --> 00:35:03.970
<v Ingo>sondern es ist wirklich mein System wie vor fünf Monaten.

00:35:06.130 --> 00:35:10.370
<v Gast 1>Also die alte, also wenn man jetzt mal in diesem Bootloader jetzt eine alte Version auswählt,

00:35:10.450 --> 00:35:13.490
<v Gast 1>dann ist das ja auch nicht so, dass da irgendwie das andere jetzt entfernt wird oder so.

00:35:13.570 --> 00:35:15.170
<v Gast 1>Das bleibt halt genauso bestehen.

00:35:15.330 --> 00:35:18.130
<v Gast 1>Das liegt halt irgendwie da, aber wird halt nie angefasst.

00:35:19.250 --> 00:35:20.050
<v Felix>Genau.

00:35:20.850 --> 00:35:26.290
<v Gast 1>Also man kann dann auch andere Sachen machen, wenn man zum Beispiel das irgendwie ein Update testen will und

00:35:26.290 --> 00:35:30.690
<v Gast 1>jetzt nie irgendwie Dienst kaputt machen will dabei,

00:35:30.770 --> 00:35:35.170
<v Gast 1>kann man sich auch so eine VM bauen mit der aktuellen Systemkonfiguration.

00:35:36.370 --> 00:35:39.890
<v Gast 1>Über NixOS-Rebuild Build-VM.

00:35:40.130 --> 00:35:44.530
<v Gast 1>Und dann kann man, das spuckt dann so ein Pfad aus, den man ausführen kann.

00:35:44.770 --> 00:35:50.130
<v Gast 1>Und das startet dann ein Quemo und da dran ist dann halt die aktuelle Systemkonfiguration.

00:35:50.210 --> 00:35:53.970
<v Gast 1>Und da kann man sich dann halt angucken, ob alle Dienste wieder so starten, wie sie starten sollen.

00:35:54.130 --> 00:35:57.410
<v Gast 1>Sind halt bloß die Daten erstmal nicht da, die man sich selber angelegt hat,

00:35:57.490 --> 00:36:00.130
<v Gast 1>sondern sind halt nur die Programme und die Dienste.

00:36:03.570 --> 00:36:09.810
<v Felix>Oder man hat seine Konfiguration von seinem Laptop und dann hat man aber noch einen zweiten Laptop.

00:36:10.050 --> 00:36:14.850
<v Felix>Und man möchte jetzt den einen und den anderen erstmal ein bisschen so nebenher verwenden,

00:36:15.010 --> 00:36:19.970
<v Felix>dann kann man einfach die Konfiguration, die du auf deinem Laptop so gehegt und gepflegt hast,

00:36:20.050 --> 00:36:24.370
<v Felix>einfach auf den anderen Laptop rauhtun und sagen, bau mir jetzt genau dieses System wieder.

00:36:24.450 --> 00:36:27.970
<v Felix>Und dann hast du danach einen Computer, der genauso ist wie dein aktueller Laptop.

00:36:28.530 --> 00:36:30.050
<v Felix>Und zwei Festplatten immer noch.

00:36:30.370 --> 00:36:34.530
<v Felix>Und das ist schon echt eine coole Sache.

00:36:34.770 --> 00:36:37.730
<v Felix>Zum Beispiel der Editor ist so eingerichtet, wie du es möchtest.

00:36:37.810 --> 00:36:44.370
<v Felix>Du musst nicht erst irgendwo in deinem Zeug rumfuschen oder dein Desktop ist genau so,

00:36:44.450 --> 00:36:46.050
<v Felix>wie du ihn gerne möchtest.

00:36:46.290 --> 00:36:51.410
<v Felix>Und alles, solange es quasi nichts konfiguriert ist, ist alles genau so, wie du das möchtest.

00:36:52.210 --> 00:36:56.450
<v Gast 1>Ja, man kann dann auch, also diese Sprache, mit denen was konfiguriert,

00:36:56.610 --> 00:37:00.930
<v Gast 1>die ist halt so ein bisschen von der Mächtigkeit auf der Höhe von JSON.

00:37:01.090 --> 00:37:03.490
<v Gast 1>Also man hat halt die ganzen Datentypen, die man noch so in JSON hat.

00:37:03.570 --> 00:37:09.330
<v Gast 1>Also es gibt halt Sets, das sind so Key-Value-Datenstrukturen.

00:37:09.650 --> 00:37:13.650
<v Gast 1>Und dann gibt es Listen, das sind Zeichenketten und Zahlen.

00:37:13.890 --> 00:37:18.130
<v Gast 1>Und dazu gibt es halt noch so eine Art Funktion,

00:37:18.770 --> 00:37:21.570
<v Gast 1>um dann gewisse Sachen noch so weg zu abstrahieren.

00:37:21.650 --> 00:37:26.130
<v Gast 1>Und man kann dann halt seine Konfiguration noch halt verschiedene Dateien aufteilen und dass man dann

00:37:26.130 --> 00:37:32.050
<v Gast 1>meinetwegen zum Beispiel einen Teil auf seinem einen Rechner, also auf beiden Rechnern benutzt,

00:37:32.130 --> 00:37:34.850
<v Gast 1>wenn man jetzt irgendwie mehrere Rechner hat und einen anderen Teil,

00:37:34.930 --> 00:37:36.690
<v Gast 1>der ist jetzt bloß speziell für das System.

00:37:36.770 --> 00:37:41.410
<v Gast 1>Also man kann dann halt, es macht halt die Maintenance einfacher.

00:37:41.490 --> 00:37:46.450
<v Gast 1>Also man kriegt halt man kriegt halt so Konfigurationsmanagement für Lau einfach dazu.

00:37:46.530 --> 00:37:52.050
<v Gast 1>Also es ist halt ein wesentlich einfacher Einstieg, als wenn man sich jetzt mit Puppet oder Ansible oder Chef

00:37:52.050 --> 00:37:55.490
<v Gast 1>oder so auseinandersetzen muss, weil da muss man erstmal viel mäßig mehr lernen.

00:37:55.810 --> 00:37:56.130
<v Gast 1>Ja.

00:37:56.850 --> 00:38:02.930
<v Felix>Also so ein typischer Use Case ist halt, ich habe einen Server, also einen Virtual Private Server und ich habe

00:38:02.930 --> 00:38:08.050
<v Felix>meinen Laptop und ich hätte gerne auf beiden Systemen den gleichen Editor und zwar genauso konfiguriert,

00:38:08.130 --> 00:38:08.930
<v Felix>wie ich das möchte.

00:38:09.170 --> 00:38:15.010
<v Felix>Dann kann man quasi dieses eine Snippet nehmen, für den Server und für den Laptop genau gleich importieren und

00:38:15.010 --> 00:38:17.090
<v Felix>man hat beides mal den gleichen.

00:38:17.410 --> 00:38:19.330
<v Felix>Zum Beispiel ein Emacs.

00:38:20.130 --> 00:38:25.890
<v Felix>Oder keine Ahnung, es gibt halt Sachen, die wissen, die sind.

00:38:26.290 --> 00:38:27.330
<v Ingo>Almost got me.

00:38:29.410 --> 00:38:33.090
<v Gast 1>Man kann dann halt sein WIM oder sein Emacs halt auch schon mit den ganzen Plugins installieren.

00:38:33.170 --> 00:38:37.970
<v Gast 1>Also ich weiß zum Beispiel, dass bei Emacs diese ganzen Pakete, die es irgendwie für E-Mails gibt,

00:38:38.130 --> 00:38:42.210
<v Gast 1>die sind halt alle automatisch pakettiert für Nix-Packages.

00:38:42.290 --> 00:38:47.650
<v Gast 1>Also man kann die dann installieren und manche Pakete haben dann auch irgendwelche anderen Abhängigkeiten auf

00:38:47.650 --> 00:38:51.090
<v Gast 1>irgendwelche Systemprogramme und die werden dann halt noch manuell mit eingepflegt.

00:38:51.170 --> 00:38:55.970
<v Gast 1>Und bei BIM gibt es dann halt auch irgendwie Plugins, die man direkt mitgravieren kann.

00:38:56.210 --> 00:39:01.490
<v Felix>Ja, so ein typisches Ding, so C-Tags oder sowas, wo es dann halt trotzdem noch was vom System braucht und das

00:39:01.490 --> 00:39:04.450
<v Felix>wird dann halt einfach mit zusätzlich installiert, ohne Probleme.

00:39:05.570 --> 00:39:10.210
<v Ingo>Okay, und das wäre jetzt alles über eine Konfigurationsdatei zu machen.

00:39:11.810 --> 00:39:17.810
<v Felix>Oder halt eine Konfigurationsdatei, die dann kleinere Konfigurationsdateien anzieht.

00:39:20.210 --> 00:39:23.490
<v Ingo>Und weil du gesagt hast, ich kann das auf dem Server machen, so wie auf meinem Laptop,

00:39:23.650 --> 00:39:29.330
<v Ingo>das muss auch beides mal nicht Nixos sein, sondern ich könnte auch Nix auf einem Debian verwenden.

00:39:30.210 --> 00:39:34.690
<v Gast 1>Also was jetzt NixOS noch zufügt, ist, dass man halt Systemdienste konfigurieren kann.

00:39:35.090 --> 00:39:36.930
<v Gast 1>Das sind sogenannten Module.

00:39:37.890 --> 00:39:44.370
<v Gast 1>Die zum Beispiel, da gibt es ein Modul, um jetzt den SSHD zu konfigurieren oder den Bootloader zu richtig

00:39:44.370 --> 00:39:45.410
<v Gast 1>einzurichten.

00:39:45.730 --> 00:39:47.810
<v Gast 1>Und das gibt es halt nur bei NixOS.

00:39:48.050 --> 00:39:52.290
<v Gast 1>Wenn man jetzt das auf Debian verwenden würde, dann hätte man nur die ganzen Pakete.

00:39:52.450 --> 00:39:57.090
<v Gast 1>Da kann man jetzt sagen, ich will jetzt halt diese Entwicklungsumgebung haben oder mir die Programme da

00:39:57.090 --> 00:39:57.970
<v Gast 1>benutzen.

00:39:58.370 --> 00:39:58.850
<v Gast 1>Genau.

00:39:59.450 --> 00:40:00.410
<v Felix>Oder ein Editor.

00:40:00.490 --> 00:40:05.290
<v Felix>Also, das wäre auch so ein Use Case für, ich habe nicht die Power von nichts, was auf meinem Computer.

00:40:06.650 --> 00:40:12.570
<v Gast 1>Ja, also es gibt zum Beispiel, ich kenne zum Beispiel so, es gibt zum Beispiel so Uni-Umfeld,

00:40:12.730 --> 00:40:17.690
<v Gast 1>so im High-Performance-Computing, hat man, kriegt man dann manchmal so einen Shell-Account vorgesetzt.

00:40:18.170 --> 00:40:21.690
<v Gast 1>Und dann kann man mit dem erstmal nie so viel anfangen, weil man muss halt,

00:40:21.770 --> 00:40:25.210
<v Gast 1>es ist halt angewiesen darauf, dass dann die Software dazu noch da ist.

00:40:25.450 --> 00:40:31.610
<v Gast 1>Und mit Nix hat man auch, hätte man noch die Möglichkeit, dass man sich das selber installieren kann,

00:40:31.770 --> 00:40:34.250
<v Gast 1>nachinstallieren kann, was man dafür braucht jetzt für sich selber,

00:40:34.410 --> 00:40:36.490
<v Gast 1>ohne dass man die anderen jetzt stören würde.

00:40:39.770 --> 00:40:44.010
<v Felix>Genau, das ist schon eine ganz coole Sache.

00:40:44.570 --> 00:40:49.610
<v Gast 1>Und man kann das auch ohne Root installieren, also es gibt da noch so ein paar Tricks,

00:40:49.770 --> 00:40:54.410
<v Gast 1>dass man auf einem Account,

00:40:54.490 --> 00:40:58.410
<v Gast 1>wo man jetzt keine Root-Rechte hat, dass man sich dann trotzdem nichts benutzen kann und dann kann man

00:40:58.410 --> 00:41:02.730
<v Gast 1>eigentlich, hat man irgendwie alle Programme, die man so schon für irgendwas braucht,

00:41:02.970 --> 00:41:04.730
<v Gast 1>wo sich irgendwo Passes einloggt.

00:41:06.330 --> 00:41:06.650
<v Gast 1>Okay.

00:41:07.370 --> 00:41:12.810
<v Ingo>Also jetzt haben wir nix geklärt, wir haben nix Packages geklärt, wir haben nixOS geklärt.

00:41:13.130 --> 00:41:16.570
<v Ingo>Apropos nix, was soll das eigentlich heißen?

00:41:17.530 --> 00:41:18.410
<v Ingo>Was bedeutet das?

00:41:18.650 --> 00:41:19.930
<v Ingo>Bedeutet es einfach nischt?

00:41:20.090 --> 00:41:21.050
<v Ingo>Nix halt.

00:41:22.250 --> 00:41:26.410
<v Felix>Also tatsächlich tatsächlich bedeutet es nichts auf

00:41:28.490 --> 00:41:29.450
<v Felix>Niederländisch.

00:41:29.850 --> 00:41:32.890
<v Felix>Dänisch, Dänisch, ich habe vorhin auf Dänisch.

00:41:33.050 --> 00:41:34.890
<v Gast 1>Ich habe oft den Fehler gemacht, das ist ja Dänisch.

00:41:35.210 --> 00:41:37.530
<v Felix>Oh nein, das kommt natürlich auch nicht.

00:41:38.250 --> 00:41:39.450
<v Ingo>Also es heißt wirklich nischt einfach.

00:41:39.770 --> 00:41:44.810
<v Felix>Genau, und das kommt daher, dass wenn man quasi so eine Expression schreibt,

00:41:44.890 --> 00:41:51.770
<v Felix>also so ein so ein Rezept, dann ist initial erstmal nichts

00:41:51.770 --> 00:41:53.210
<v Felix>vorhanden, womit du arbeiten kannst.

00:41:53.930 --> 00:41:55.210
<v Felix>Du fängst mit nichts an.

00:41:55.370 --> 00:41:58.570
<v Felix>Und das ist quasi da, wo es herkommt.

00:41:59.050 --> 00:42:03.210
<v Ingo>Und dann Okay, das ist, da ist der Name her.

00:42:03.290 --> 00:42:09.130
<v Ingo>Also wir haben Nix, Nix Packages, NixOS und dann habe ich ganz oft noch irgendwas von Hydra gelesen.

00:42:09.370 --> 00:42:10.410
<v Ingo>Hail Hydra.

00:42:10.650 --> 00:42:11.530
<v Felix>Hail Hydra.

00:42:11.770 --> 00:42:12.410
<v Felix>Hydra.

00:42:13.370 --> 00:42:18.490
<v Gast 1>Ja, und zwar, weil man ja nicht alles selber installieren will,

00:42:18.570 --> 00:42:23.850
<v Gast 1>dann braucht man halt ein System, was immer wieder die neueste Software da zusammenbaut.

00:42:24.970 --> 00:42:26.810
<v Felix>Man will nicht selber bauen, darum geht es nicht.

00:42:26.890 --> 00:42:29.610
<v Felix>Also installieren wir man auch alles selber, aber man will nicht alles bauen.

00:42:29.850 --> 00:42:30.490
<v Felix>Genau.

00:42:30.730 --> 00:42:31.050
<v Felix>Okay.

00:42:31.610 --> 00:42:37.690
<v Gast 1>Und ja, die Hydra ist halt ein sogenanntes Continuous Indication System,

00:42:37.770 --> 00:42:40.330
<v Gast 1>also so wie Jenkins oder Bildbot.

00:42:41.610 --> 00:42:48.330
<v Gast 1>Aber dann mit dem Schwerpunkt auf Nix, also dass man dort seine Nix-Expressions mit

00:42:48.330 --> 00:42:52.890
<v Gast 1>reinlegen kann und dass die Hydra dann guckt, was jetzt neu gebaut werden muss und das dann neu baut und dass

00:42:52.890 --> 00:42:54.890
<v Gast 1>dann noch für verschiedene Plattformen macht.

00:42:55.130 --> 00:43:01.370
<v Gast 1>Also dass man dann noch auf Linux 64-Bit oder auf

00:43:01.370 --> 00:43:04.330
<v Gast 1>macOS dann die Pakete gebaut werden.

00:43:05.610 --> 00:43:09.210
<v Ingo>Und das Ding legt die Sachen dann dann in diesen Binary Cache.

00:43:09.530 --> 00:43:10.010
<v Ingo>Genau.

00:43:10.250 --> 00:43:13.530
<v Gast 1>Man kann das auch selber betreiben, also was zum Beispiel Firmen machen,

00:43:13.610 --> 00:43:18.570
<v Gast 1>wenn die sie jetzt zum Beispiel, die haben jetzt irgendwie internen irgendwie besondere Bibliotheken oder so,

00:43:18.650 --> 00:43:22.010
<v Gast 1>die sie jetzt für irgendwas brauchen, dann können sie sich halt selber so ein Ö3 hinstellen,

00:43:22.090 --> 00:43:28.170
<v Gast 1>die baut dann halt, dann kann man sich den Binärcache selber bauen und den einfach mit zu dem offiziellen

00:43:28.170 --> 00:43:31.290
<v Gast 1>Binärcache hinzufügen und dann kann man halt beide nutzen.

00:43:31.370 --> 00:43:35.930
<v Gast 1>Und dann muss dann zum Beispiel bei vielen Projekten hat man irgendwie das Problem,

00:43:36.010 --> 00:43:40.170
<v Gast 1>dass man da, wenn da so viele Sachen angepasst sind, dass man sich da erstmal ein paar Tage,

00:43:40.330 --> 00:43:43.370
<v Gast 1>ein paar Stunden da erstmal hinsetzt und erstmal das Zeug kopieren muss.

00:43:43.450 --> 00:43:48.890
<v Gast 1>Und das kann man dann halt direkt über seinen eigenen privaten Binär Cache sich dann runterladen.

00:43:53.290 --> 00:44:00.250
<v Felix>Und aber also prinzipiell können alle Continuous Integration Systeme oder alle Bildsysteme auch

00:44:00.410 --> 00:44:05.850
<v Felix>Nix bauen und zwar einfach weil, wenn du den Nix,

00:44:06.090 --> 00:44:12.730
<v Felix>äh, das Tool quasi installiert hast, dann kannst du es quasi dazu bringen,

00:44:12.810 --> 00:44:16.010
<v Felix>einfach diese eine Expression zu bauen mit den Quellen.

00:44:16.570 --> 00:44:22.250
<v Felix>Und dann fällt da am Ende dieses eine Tool raus, was du halt bauen möchtest und das kannst du dann auch direkt

00:44:22.250 --> 00:44:22.890
<v Felix>hernehmen.

00:44:23.210 --> 00:44:28.250
<v Felix>Und dadurch, dass alles in diesem speziellen Storepath liegt,

00:44:28.890 --> 00:44:33.370
<v Felix>also schön zentral gemanagt, kann man es dann auch entsprechend wieder ausliefern.

00:44:33.690 --> 00:44:35.130
<v Felix>Relativ leicht eigentlich.

00:44:35.450 --> 00:44:41.610
<v Felix>Das heißt, wenn man nicht die Hydra möchte, kann man auch das nehmen, was man bei sich auf Arbeit gerade hat.

00:44:41.850 --> 00:44:47.690
<v Felix>Und so wird auf einmal Continuous Integration ziemlich cool, weil man quasi auf nix aufbauen kann.

00:44:48.330 --> 00:44:49.530
<v Gast 1>Auf nix aufgebaut.

00:44:51.370 --> 00:44:53.130
<v Ingo>Das klingt schon irgendwie komisch.

00:44:53.370 --> 00:44:53.690
<v Ingo>Okay.

00:44:58.650 --> 00:44:59.050
<v Ingo>Hallo?

00:45:01.690 --> 00:45:03.050
<v Felix>Jetzt ist der Mic weg.

00:45:04.730 --> 00:45:05.050
<v Felix>Okay.

00:45:05.690 --> 00:45:08.810
<v Felix>Ja, ich würde sagen, wir warten auf den Micro.

00:45:10.730 --> 00:45:16.570
<v Felix>Ja, also Wortwitze gibt es natürlich nicht zu wenig.

00:45:16.730 --> 00:45:20.410
<v Felix>Also es ist auch nicht so, dass man nicht alles schon hundertmal gehört hat.

00:45:22.010 --> 00:45:25.930
<v Felix>Das ist dann wirklich so, ja, okay, das krash ich auch.

00:45:26.730 --> 00:45:27.690
<v Felix>Das kauft.

00:45:29.210 --> 00:45:30.810
<v Felix>Ja, aber es ist trotzdem schön.

00:45:30.890 --> 00:45:34.090
<v Felix>Also auch wenn Leute neu dazukommen, freuen die sich.

00:45:34.570 --> 00:45:36.010
<v Felix>Hat jeder was davon?

00:45:37.050 --> 00:45:38.330
<v Ingo>Auf die Wortwitze jetzt meinst du?

00:45:38.650 --> 00:45:39.930
<v Felix>Genau, auf die Wortwitze, die sich auf jeden Fall.

00:45:40.090 --> 00:45:40.410
<v Felix>Hallo?

00:45:40.730 --> 00:45:40.890
<v Felix>Jo?

00:45:41.450 --> 00:45:43.130
<v Gast 1>Ah, ich bin bloß auf den Mute-Button gekommen.

00:45:43.290 --> 00:45:45.770
<v Gast 1>Ich habe hier auf meinem Headset noch einen Mute-Button drauf.

00:45:46.250 --> 00:45:47.050
<v Felix>Ja praktisch.

00:45:47.370 --> 00:45:50.010
<v Gast 1>Ich habe quasi jetzt auch alles mitbekommen, was ihr gesagt habt.

00:45:50.250 --> 00:45:51.210
<v Felix>Ah, das ist schön.

00:45:54.170 --> 00:45:58.490
<v Ingo>Gut, was ich danach interessant fand,

00:45:59.210 --> 00:46:02.650
<v Ingo>ich weiß nicht, ob wir das jetzt schon ganz genau so geklärt haben.

00:46:02.810 --> 00:46:09.610
<v Ingo>Wenn ich jetzt Pakete selber baue, mir so ein kann ich ja ein Rezept oder

00:46:09.610 --> 00:46:13.610
<v Ingo>sowas schon mal ein fertiges nehmen, aber kann das halt anpassen.

00:46:13.930 --> 00:46:20.090
<v Ingo>Was weiß ich, vielleicht brauche ich halt noch Patch XY, damit es bei mir auf meiner

00:46:20.090 --> 00:46:24.330
<v Ingo>Umgebung so läuft, wie ich das halt haben will.

00:46:25.530 --> 00:46:30.890
<v Ingo>Also zum Beispiel hat Felix Mumble,

00:46:31.050 --> 00:46:34.410
<v Ingo>also das, was wir auch immer zur Aufnahme benutzt haben, so gepatcht,

00:46:34.570 --> 00:46:37.770
<v Ingo>dass es halt auf Jack läuft.

00:46:37.930 --> 00:46:42.170
<v Ingo>Und das war dann halt auch ein Patch, den man irgendwie extra nochmal integrieren muss.

00:46:42.410 --> 00:46:45.050
<v Ingo>Und wie funktioniert das?

00:46:45.690 --> 00:46:49.690
<v Gast 1>Also jedes Paket in Nix ist halt eine Funktion.

00:46:50.010 --> 00:46:54.250
<v Gast 1>Deswegen wird Nix so ein funktionaler Paketmanager genannt.

00:46:55.610 --> 00:46:59.690
<v Gast 1>Und als Eingabe in diese Funktion gehen halt die ganzen Abhängigkeiten rein,

00:46:59.770 --> 00:47:03.050
<v Gast 1>die man braucht, um das Paket da zu bauen.

00:47:03.290 --> 00:47:07.610
<v Gast 1>Und als Rückgabelwert bekommt man dann halt so eine Derivation,

00:47:07.770 --> 00:47:12.650
<v Gast 1>also Ableitung und daraus wird dann halt der Store-Path, also das Paket dann gebaut.

00:47:13.290 --> 00:47:19.690
<v Gast 1>Und man kann dann halt auch sagen, übergibt es dann diese Funktion für bestimmte Argumente,

00:47:19.770 --> 00:47:22.890
<v Gast 1>also meinetwegen für eine bestimmte Bibliothek gibt es eine andere Version irgendwie,

00:47:22.970 --> 00:47:24.330
<v Gast 1>zum Beispiel ein Patch rein.

00:47:24.570 --> 00:47:31.370
<v Gast 1>Oder ich kann aber auch sagen, ich überschreibe jetzt in dieser Nix-Expression einzelne

00:47:31.370 --> 00:47:31.930
<v Gast 1>Felder.

00:47:32.010 --> 00:47:34.730
<v Gast 1>Also zum Beispiel gibt es dieses Patches-Feld.

00:47:35.530 --> 00:47:40.250
<v Gast 1>Und wenn ich da jetzt noch ein Patch hinzufüge,

00:47:40.330 --> 00:47:45.690
<v Gast 1>dann in diese Liste, dann wird der, erkennt halt nichts, dass das Paket sich geändert hat.

00:47:45.770 --> 00:47:49.210
<v Gast 1>Also dass es jetzt nie das gleiche ist, was jetzt schon normalerweise installiert ist,

00:47:49.290 --> 00:47:51.050
<v Gast 1>und dann fängt es das an, neu zu bauen.

00:47:51.210 --> 00:47:52.010
<v Gast 1>Beim ersten Mal.

00:47:52.090 --> 00:47:54.890
<v Gast 1>Und wenn es dann schon installiert ist, dann bootzt es sie nochmal neu.

00:47:55.930 --> 00:47:56.330
<v Gast 1>Genau.

00:47:56.570 --> 00:48:03.370
<v Felix>Also hier ist dann wirklich so, das Programm gibt es so nicht direkt aus dem Binary-Cache,

00:48:03.610 --> 00:48:05.210
<v Felix>aber es gibt quasi alle Abhängigkeiten.

00:48:05.290 --> 00:48:09.210
<v Felix>Das heißt, du musst dann wirklich nur am Ende dieses eine Programm bauen mit den ganzen Abhängigkeiten,

00:48:09.290 --> 00:48:10.810
<v Felix>die du eh schon bereit hast.

00:48:11.210 --> 00:48:16.410
<v Felix>Bei dem Mumble war es jetzt tatsächlich so, dass das Paket so gut vorbereitet war,

00:48:16.490 --> 00:48:23.450
<v Felix>dass man nur noch sagen musste, in der Funktion anstatt oder sagt man einfach nur Jack Support

00:48:23.690 --> 00:48:24.090
<v Felix>True.

00:48:24.250 --> 00:48:26.890
<v Felix>Und dann baut er das Paket mit Jack Support.

00:48:27.450 --> 00:48:31.210
<v Felix>Das heißt, ich musste da gar keine Patches einbringen oder so, sondern es war quasi schon richtig gut

00:48:31.210 --> 00:48:33.530
<v Felix>vorbereitet im Nix-Packages drin.

00:48:33.690 --> 00:48:33.930
<v Felix>Genau.

00:48:35.050 --> 00:48:38.170
<v Ingo>Aber ich musste es, ich musste es trotzdem nochmal selber bauen.

00:48:38.250 --> 00:48:41.850
<v Ingo>Also es war jetzt trotzdem nicht schon in der Form im Binary Cache vorhanden.

00:48:42.570 --> 00:48:44.090
<v Felix>Also das war in dem Fall.

00:48:44.330 --> 00:48:47.130
<v Ingo>Also warum liegt das nicht in mehreren Versionen dann da schon rum?

00:48:47.370 --> 00:48:49.210
<v Gast 1>Also das passiert halt manchmal.

00:48:49.690 --> 00:48:54.330
<v Gast 1>Also man kann halt so Flex hinzufügen.

00:48:54.570 --> 00:48:57.210
<v Gast 1>Das gibt es bei Gateway auch, das nennt sich dort UseFlex.

00:48:58.490 --> 00:49:02.490
<v Gast 1>Das Prinzip ist hier so ähnlich, dass man irgendwie sagt, dass jetzt irgendwie der,

00:49:02.570 --> 00:49:08.490
<v Gast 1>der diese Nix-Expression gemacht hat, kann halt noch sagen, ja, manche brauchen halt irgendwie dieses Feature

00:49:08.570 --> 00:49:13.610
<v Gast 1>von dem Paket und baut dann halt dieses Flag ein und dann kann man das halt selber setzen und dann wird das

00:49:13.610 --> 00:49:14.090
<v Gast 1>neu gebaut.

00:49:14.330 --> 00:49:18.730
<v Gast 1>Und was aber auch manchmal passiert, ist, dass einfach Programme in verschiedenen Versionen so vorgebaut

00:49:18.730 --> 00:49:18.970
<v Gast 1>würden.

00:49:19.050 --> 00:49:21.690
<v Gast 1>Also wenn man dann das Flex setzen würde, würde das wieder erkennen,

00:49:21.770 --> 00:49:25.690
<v Gast 1>dass das schon da ist und das machen wir halt bald nie einen mit einen Versionen,

00:49:25.770 --> 00:49:28.890
<v Gast 1>weil das wird halt unendlich, das potenziert sich halt.

00:49:29.210 --> 00:49:29.450
<v Gast 1>Genau.

00:49:29.610 --> 00:49:31.130
<v Felix>Man kann ja immer alles mit einbauen.

00:49:31.210 --> 00:49:35.610
<v Felix>Zum Beispiel, man kann ja verschiedene Libc haben und dann baut man auf einmal alle Pakete mit verschiedenen

00:49:35.610 --> 00:49:38.650
<v Felix>Libcs zusammen und am Ende benötigt es eigentlich niemand.

00:49:38.810 --> 00:49:43.850
<v Felix>Und deswegen ist es quasi so die Möglichkeit, so viel wie möglich aus dem Binary Cache zu laden und das eine

00:49:43.850 --> 00:49:46.970
<v Felix>bisschen, was du halt machen musst, baut dann halt dein Computer zusammen.

00:49:47.210 --> 00:49:51.050
<v Gast 1>Also die letzten paar Prozent, wo man eigentlich normalerweise immer Stunden drauf verwendet,

00:49:51.210 --> 00:49:57.530
<v Gast 1>die dann zu pflegen, die werden dann halt, das macht man halt immer und dann ist das dann,

00:49:57.610 --> 00:50:02.410
<v Gast 1>wenn man kann man sich das irgendwo wegspeichern, die Konfiguration wegsichern und hat das dann halt so,

00:50:02.490 --> 00:50:04.490
<v Gast 1>dieses Setup, was man da haben wollte.

00:50:06.810 --> 00:50:11.130
<v Gast 1>Ja, also in diesen Nix-Packages, das ist auch so eine, da ist auch so ein bisschen Abstraktion drin für

00:50:12.890 --> 00:50:14.730
<v Gast 1>verschiedene Arten von Projekten.

00:50:14.890 --> 00:50:18.730
<v Gast 1>Also zum Beispiel bei Arch ist es ja so, dass wenn man ein PKG-Bild hat,

00:50:18.970 --> 00:50:24.570
<v Gast 1>fängt man mal wieder neu an, für jedes Projekt alles, die ganzen Bildschritte so einzeln in dieses

00:50:24.570 --> 00:50:26.490
<v Gast 1>Shell-Skript da reinzuschreiben.

00:50:26.890 --> 00:50:31.130
<v Gast 1>Und bei Nix gibt es da schon so eine Abstraktion.

00:50:31.210 --> 00:50:33.850
<v Gast 1>Also zum Beispiel, wenn man so ein normales Auto-Tools-Projekt hat,

00:50:33.930 --> 00:50:37.610
<v Gast 1>also was so irgendwie mit Configure Make Make Install installiert wird,

00:50:38.410 --> 00:50:43.370
<v Gast 1>kann man das einfach in die sogenannte SCD-Env,

00:50:43.530 --> 00:50:50.250
<v Gast 1>also Standard-Inv da einzufügen

00:50:50.330 --> 00:50:55.050
<v Gast 1>und der sieht dann halt auch, hier liegt ein Configure-File drin,

00:50:55.290 --> 00:51:01.930
<v Gast 1>füge ich mal das Configure-File aus, danach sage ich Make, danach sage ich Make-Install und dann wird man dann

00:51:01.930 --> 00:51:04.810
<v Gast 1>halt für diese Auto-Tools-Projekte gibt es dann noch so ein paar Umgebungsvariablen,

00:51:04.890 --> 00:51:07.290
<v Gast 1>wo man noch irgendwie angeben kann, wo es das hin installieren soll.

00:51:07.370 --> 00:51:11.690
<v Gast 1>Da gibt es, da generiert es dann halt diesen Store-Path, wo es dann hin installiert wird und dann muss man

00:51:11.690 --> 00:51:12.730
<v Gast 1>eigentlich gar nicht mehr so viel machen.

00:51:12.810 --> 00:51:18.170
<v Gast 1>Da muss man eigentlich nur noch die Abhängigkeiten dieser Make-Derivation-Funktionen da geben.

00:51:18.330 --> 00:51:21.370
<v Gast 1>Da muss man aber gar nicht mehr sagen, das baut das jetzt mal so und so.

00:51:21.530 --> 00:51:24.330
<v Gast 1>Das gleiche gibt es dann halt auch für Python, da gibt es dann halt die Funktionen,

00:51:24.410 --> 00:51:28.010
<v Gast 1>um Python-Pakete zu bauen und die dann auch so ein paar Sachen hat,

00:51:28.090 --> 00:51:29.850
<v Gast 1>die man jetzt für Python braucht.

00:51:30.570 --> 00:51:31.050
<v Gast 1>Genau.

00:51:31.930 --> 00:51:38.810
<v Felix>Das ist aber auch schon ein Stück weit notwendig, weil man halt diese speziellen Pfade in

00:51:38.810 --> 00:51:40.010
<v Felix>vielen Fällen halt setzen muss.

00:51:40.570 --> 00:51:47.130
<v Felix>Man sagt, okay, bau es jetzt nicht in User oder so rein, sondern baue es in den Nixdore, da, da, da.

00:51:47.370 --> 00:51:49.690
<v Felix>Und dann installiert er es halt an die Stelle rein.

00:51:49.770 --> 00:51:51.370
<v Felix>Und deswegen gibt es da viel Abstraktion.

00:51:51.610 --> 00:51:55.770
<v Felix>Und ganz oft ist es wirklich so, also für so Standard-C-Projekte ist es dann wirklich so,

00:51:55.850 --> 00:52:02.090
<v Felix>du sagst nur, okay, das ist meine Quelle und das ist der Name von dem Projekt und go.

00:52:02.250 --> 00:52:06.730
<v Felix>Und dann baut er das Projekt quasi, also das Tool quasi fertig.

00:52:06.890 --> 00:52:13.210
<v Felix>Und das ist schon echt convenient im Gegensatz zu vielen anderen Bildumgebungen,

00:52:13.290 --> 00:52:16.810
<v Felix>also zum Beispiel RPM oder sowas.

00:52:17.690 --> 00:52:24.010
<v Gast 1>Also Nix selber ist halt relativ primitiv eigentlich, weil das generiert nur so sogenannten Bilder,

00:52:24.090 --> 00:52:30.650
<v Gast 1>also das ist meistens ein Shellskript, und führt dieses Shellscript dann in so einer abgeschütteten Umgebung

00:52:30.650 --> 00:52:34.090
<v Gast 1>aus, wo es jetzt bloß seine Abhängigkeiten sieht.

00:52:34.490 --> 00:52:37.290
<v Gast 1>Und also es ist halt sprachenunabhängig damit.

00:52:37.370 --> 00:52:41.770
<v Gast 1>Also das, was man damit macht, ist dann halt, das kommt dann erst Nix-Packages,

00:52:41.850 --> 00:52:44.570
<v Gast 1>wo dann diese Abstraktion davon noch gebaut wird.

00:52:44.970 --> 00:52:47.610
<v Felix>Genau, weil Nix ja am Anfang nichts hat.

00:52:47.850 --> 00:52:49.290
<v Felix>Und so viel ist es halt auch dann.

00:52:50.810 --> 00:52:54.250
<v Gast 1>Ja, also man fängt eigentlich bei Nix, fängt man eigentlich nur mit irgendwie,

00:52:54.410 --> 00:53:00.330
<v Gast 1>ich kann eine URL runterladen oder so an und dann gibt es ja diesen Bootstrapping-Prozess,

00:53:01.210 --> 00:53:02.730
<v Gast 1>wo dann alles gebaut wird.

00:53:04.090 --> 00:53:07.530
<v Ingo>Aber ist es auch so, wenn ich NixOS installiere, ne?

00:53:07.690 --> 00:53:10.330
<v Unbekannt>Also funktioniert auch so.

00:53:12.010 --> 00:53:16.970
<v Ingo>Ich habe erstmal nichts wirklich und fange dann an, daraus mein System zu installieren,

00:53:17.050 --> 00:53:18.890
<v Ingo>indem ich halt diese Config-Datei schreibe.

00:53:19.050 --> 00:53:19.130
<v Ingo>Genau.

00:53:19.450 --> 00:53:21.930
<v Ingo>Und dann sage, jetzt mach mal.

00:53:22.650 --> 00:53:28.490
<v Gast 1>Es gibt schon, wenn man jetzt durch so NixOS installiert, schon so ein Standardprofil,

00:53:28.810 --> 00:53:32.490
<v Gast 1>wo dann so ein paar Sachen schon drin stehen, was jetzt installiert wird.

00:53:32.650 --> 00:53:38.410
<v Gast 1>Also man kann davon auch schon viel wieder ausschalten, aber es wird schon mal ein bisschen was installiert,

00:53:38.490 --> 00:53:45.450
<v Gast 1>also es ist zum Beispiel ein System D ist halt immer dabei und ein DACP

00:53:45.450 --> 00:53:50.250
<v Gast 1>ist halt auch steinmäßig da, das Netzwerk funktioniert und was gibt es noch?

00:53:51.370 --> 00:53:54.890
<v Gast 1>Zeitserver, also es ist halt nie, dass man komplett bei Null anfängt, sondern.

00:53:55.610 --> 00:53:57.690
<v Felix>Also es gibt 10 Defaults in dem Fall schon.

00:53:58.010 --> 00:54:02.010
<v Felix>Man kann aber diese ganzen Defaults auch alle wieder abschalten, wenn man da Bock drauf hat und auf Schmerzen

00:54:02.010 --> 00:54:03.850
<v Felix>steht und das alles selber machen möchte.

00:54:04.570 --> 00:54:07.290
<v Felix>Also Nix Packages bzw.

00:54:07.610 --> 00:54:14.250
<v Felix>Nix selber für Nixos bietet die Möglichkeit, alles weg zu abstrahieren in einem gewissen

00:54:14.650 --> 00:54:17.850
<v Felix>gewissen Weise und halt auch komplett auszutauschen.

00:54:17.930 --> 00:54:22.490
<v Felix>Das heißt, man sagt, okay, ich habe Systemd, aber eigentlich will ich das gar nicht bei mir haben,

00:54:22.570 --> 00:54:28.250
<v Felix>sondern ich will das austauschen gegen Sys4Init mal wieder, weil ich da auf Schmerzen stehe oder so.

00:54:28.410 --> 00:54:31.930
<v Felix>Dann hat man mit Nix die Möglichkeit, das zu tun.

00:54:32.170 --> 00:54:36.410
<v Felix>Die Frage ist, ob das halt sinnvoll ist und ob das nicht mit viel zu viel Schmerzen verbunden ist.

00:54:36.650 --> 00:54:39.850
<v Gast 1>Also gibt es da halt ein anderes Projekt, das ist irgendwie, glaube ich, ein Notto S oder so.

00:54:40.010 --> 00:54:46.330
<v Gast 1>Da hat einfach jemand für so kleine Systeme nochmal ein Sys5-Init gebaut oder ich weiß gar nicht,

00:54:46.490 --> 00:54:48.090
<v Gast 1>was er für ein Init-System benutzt.

00:54:48.570 --> 00:54:49.610
<v Felix>AC Local.

00:54:52.570 --> 00:54:59.050
<v Gast 1>Ja, also wenn man sich das dann irgendwie, wenn man bestimmte Speicheranforderungen hat und da irgendwie noch

00:54:59.050 --> 00:55:04.970
<v Gast 1>drunter gehen muss, da kann man halt sich Nix-Packages wegwerfen und da einfach nochmal selber anfangen,

00:55:05.130 --> 00:55:06.730
<v Gast 1>neue Pakete zu bauen.

00:55:08.410 --> 00:55:09.210
<v Felix>Ja, genau.

00:55:09.290 --> 00:55:11.130
<v Felix>Also die Möglichkeit besteht.

00:55:11.450 --> 00:55:15.370
<v Felix>Es ist halt in Nix-Packages einfach nicht drin, weil es noch niemand gemacht hat.

00:55:16.330 --> 00:55:17.050
<v Felix>Also aktuell.

00:55:17.930 --> 00:55:22.250
<v Gast 1>Also aktuell ist halt diese ganze Modulabstraktion und so weiter, das ist halt alles irgendwie,

00:55:22.330 --> 00:55:26.010
<v Gast 1>es ist irgendwie alles Systemd voraus, dass man diese Dienste da konfiguriert und so weiter.

00:55:26.090 --> 00:55:29.690
<v Gast 1>Also da werden nicht zwei Systeme maintained.

00:55:30.890 --> 00:55:31.610
<v Gast 1>Genau.

00:55:32.410 --> 00:55:37.210
<v Felix>Aber wenn man natürlich die komplette Abstraktion von System D nachbauen würde,

00:55:38.250 --> 00:55:44.490
<v Felix>quasi so die Konfiguration, man sagt, okay, System B kann Services ordnen.

00:55:44.810 --> 00:55:48.490
<v Felix>Und wenn man das dann nachbaut in irgendwas, in Shell-Skripten oder so,

00:55:48.650 --> 00:55:50.250
<v Felix>dann kann man das theoretisch ersetzen.

00:55:50.330 --> 00:55:57.050
<v Felix>Dann sagt man, okay, anstatt System.d halt jetzt mein Init-System.de und dann würde das

00:55:57.050 --> 00:55:58.090
<v Felix>theoretisch möglich sein.

00:55:58.170 --> 00:56:01.450
<v Felix>Aber wie gesagt, theoretisch, praktisch ist es halt einfach ganz schön viel Aufwand.

00:56:02.010 --> 00:56:06.730
<v Gast 1>Es gibt unter Apple mittlerweile, äh für macOS, wo halt auch

00:56:06.730 --> 00:56:11.130
<v Gast 1>nichts-User-System-Dienste konfigurieren wollen, gibt es halt auch schon so ein Projekt,

00:56:11.370 --> 00:56:17.450
<v Gast 1>es ist glaube ich nix-darwell oder so, wo dann auch jemand angefangen hat,

00:56:17.610 --> 00:56:20.890
<v Gast 1>diesen Launch-D-Dienste zu bauen.

00:56:20.970 --> 00:56:27.610
<v Gast 1>Also dass man, wenn man im Enwegen zum Beispiel Webentwickler ist, dass man dann sein PostgreSQL starten kann

00:56:27.610 --> 00:56:30.570
<v Gast 1>oder seinen Web-Server oder was auch immer, wie man da braucht.

00:56:30.890 --> 00:56:37.530
<v Gast 1>Beziehungsweise auch so schon, es gibt schon so Module, dass man irgendwie Systemkonfigurationen darüber

00:56:37.530 --> 00:56:38.650
<v Gast 1>verwalten kann.

00:56:40.410 --> 00:56:44.650
<v Ingo>Ich glaube, irgendwo habe ich auch gesehen, dass irgendjemand das auf Windows 10 auch schon gemacht hat.

00:56:44.890 --> 00:56:45.610
<v Ingo>Because we can.

00:56:46.250 --> 00:56:50.330
<v Gast 1>Vermutlich dieser Subsystem da.

00:56:50.810 --> 00:56:51.050
<v Gast 1>Genau.

00:56:51.210 --> 00:56:55.930
<v Gast 1>Also es gab auch mal, es gibt auch irgendwie Leute, die das unter Syquin benutzt haben.

00:56:56.970 --> 00:57:00.250
<v Gast 1>Natives Windows, habe ich jetzt noch nie so viel gesehen.

00:57:00.650 --> 00:57:02.890
<v Gast 1>Ich glaube, da spaut wahrscheinlich da nicht.

00:57:03.050 --> 00:57:03.770
<v Gast 1>Nee, das braucht man nicht.

00:57:03.930 --> 00:57:10.170
<v Ingo>Nee, nee, aber in dieser Linux-System gar Dingstablo, was sie da halt jetzt gemacht haben.

00:57:10.890 --> 00:57:15.530
<v Felix>Ich glaube, Disneyx hat da was gemacht, aber es ist auch kein primärer Fokus.

00:57:15.610 --> 00:57:19.050
<v Felix>Deswegen wird es auch eher, also muss man ja auch immer schauen.

00:57:19.130 --> 00:57:21.370
<v Felix>Also es läuft wohl unter Sideman sowas.

00:57:21.770 --> 00:57:24.890
<v Gast 1>Ja, ich würde sagen, wenn man Nix wirklich auf Windows benutzen will,

00:57:24.970 --> 00:57:30.010
<v Gast 1>dann ist wahrscheinlich wirklich dieses Linux-Sub-System die Wahl,

00:57:30.170 --> 00:57:32.890
<v Gast 1>weil dafür halt auch die ganzen Pakete da sind.

00:57:33.290 --> 00:57:36.410
<v Gast 1>Es gibt halt auch viele Pakete, die werden wahrscheinlich einfach gar nicht bauen oder die,

00:57:36.570 --> 00:57:40.490
<v Gast 1>das sagt halt nix erstmal, oder diese Nix-Expression, die man da bauen will,

00:57:40.570 --> 00:57:44.650
<v Gast 1>die sagt dann erstmal, ich baue überhaupt nie unter Windows, weil das niemand dort getestet hat.

00:57:45.850 --> 00:57:50.970
<v Gast 1>Aber wenn man jetzt dieses Linux-Sub-System benutzen würde, dann sollte da eigentlich schon so ziemlich alles

00:57:50.970 --> 00:57:56.170
<v Gast 1>gehen, weil das ist ja eigentlich nur das Linux nochmal nach, die Linux-Betriebssystem-API nochmal an Windows

00:57:56.170 --> 00:57:57.050
<v Gast 1>nachgebaut.

00:57:59.530 --> 00:58:00.010
<v Gast 1>Tja.

00:58:01.130 --> 00:58:01.450
<v Gast 1>Okay.

00:58:02.970 --> 00:58:07.530
<v Ingo>Also läuft doch unter Linux, macOS und so ein bisschen Windows.

00:58:07.850 --> 00:58:08.570
<v Ingo>Vielleicht.

00:58:08.890 --> 00:58:10.250
<v Felix>Eindeutiges vielleicht.

00:58:10.890 --> 00:58:12.570
<v Felix>Solange ich es nicht gesehen habe, glaube ich es nicht.

00:58:13.930 --> 00:58:18.330
<v Gast 1>Also ich war überrascht, ich habe das mal ausprobiert hier, dieses Subsystem von Windows.

00:58:18.490 --> 00:58:24.650
<v Gast 1>Ich habe da mal irgendwie, ich habe da nur diesen normalen Ubuntu-System,

00:58:24.730 --> 00:58:26.410
<v Gast 1>was man da bekommt, installiert.

00:58:27.130 --> 00:58:30.970
<v Gast 1>Und man kann da irgendwie auch so einen Terminal-Emulator starten, da braucht man halt noch irgendwie so einen

00:58:30.970 --> 00:58:32.170
<v Gast 1>lokalen X-Server.

00:58:32.330 --> 00:58:34.490
<v Gast 1>Und es funktioniert eigentlich schon ganz gut.

00:58:34.570 --> 00:58:37.290
<v Gast 1>Also es ist ein bisschen langsamer als ein normales System.

00:58:37.610 --> 00:58:39.450
<v Ingo>Aber es ist jetzt super.

00:58:39.770 --> 00:58:43.610
<v Ingo>Statt ein richtiges Linux zu nehmen, nehmen wir jetzt einfach ein Linux, was auf Windows läuft.

00:58:45.210 --> 00:58:47.290
<v Unbekannt>Es gibt halt Leute, die das brauchen oder so.

00:58:48.250 --> 00:58:49.530
<v Gast 1>Es funktioniert erstaunlich gut.

00:58:49.610 --> 00:58:53.130
<v Gast 1>Also es ist schon, ich habe schon ziemlich viel gemacht.

00:58:53.210 --> 00:58:58.650
<v Gast 1>Das Einzige, was irgendwie anbieten, dass man irgendwie so Dienste im Hintergrund starten kann.

00:58:58.730 --> 00:59:04.970
<v Gast 1>Also sobald man diesen Windows-Prompt da wieder schließt, wo man dieses Bash.exe gestartet hat,

00:59:05.210 --> 00:59:08.330
<v Gast 1>dann werden doch alle anderen Dienste einfach abgeschossen.

00:59:08.410 --> 00:59:10.330
<v Gast 1>Also da wird das ganze System runtergefahren.

00:59:10.410 --> 00:59:15.690
<v Gast 1>Also man kann da jetzt keine Surfer beim Windows-Boot mit hochfahren.

00:59:15.930 --> 00:59:18.010
<v Felix>Das heißt, T-Mox geht da auch nicht?

00:59:19.210 --> 00:59:22.650
<v Gast 1>Du musst halt diese Windows-CMD-Exe da noch offen lassen.

00:59:22.730 --> 00:59:24.250
<v Gast 1>Ansonsten geht alles kaputt.

00:59:24.650 --> 00:59:25.610
<v Felix>Das ist ja blöd.

00:59:26.250 --> 00:59:30.090
<v Gast 1>Und das ist, keine Ahnung, haben sie irgendwie so eine komische Begründung dafür angegeben,

00:59:30.170 --> 00:59:32.330
<v Gast 1>aber ich konnte es nicht so richtig nachvollziehen, was das ist.

00:59:32.650 --> 00:59:35.610
<v Felix>Because we hate Linux, but the people want it.

00:59:36.410 --> 00:59:39.530
<v Gast 1>Wenn sie es hasset hätten, dann hätten sie es nie so kurz umgesetzt.

00:59:39.610 --> 00:59:41.610
<v Gast 1>Also die wollten ja schon, dass das Leute benutzen.

00:59:42.570 --> 00:59:45.850
<v Ingo>Naja, die wollen halt die Entwickler einfach bei der Stange halten.

00:59:46.090 --> 00:59:47.450
<v Ingo>Kann ich schon verstehen.

00:59:47.690 --> 00:59:49.690
<v Ingo>Gut, aber kommen wir zurück zu nix.

00:59:50.650 --> 00:59:54.090
<v Ingo>Was gibt es noch Tolles, was wir jetzt bisher vergessen haben?

00:59:55.930 --> 00:59:58.970
<v Ingo>Nix-Packages sind wir so weit durch, oder?

01:00:00.250 --> 01:00:00.890
<v Ingo>Also da.

01:00:01.610 --> 01:00:07.850
<v Gast 1>Gibt es halt einige Pakete unter Linux die Zahl, ob der Kleid.

01:00:08.010 --> 01:00:14.890
<v Gast 1>Na gut, ich habe ja mal aufgeschrieben, 13.000 Pakete für Linux 64-Bit.

01:00:15.850 --> 01:00:17.850
<v Gast 1>Das ist schon eigentlich ganz ordentlich.

01:00:19.210 --> 01:00:22.810
<v Felix>Viel kommt aus diesen automatischen Umsetzungsdingen, oder?

01:00:22.970 --> 01:00:24.730
<v Felix>Also ich weiß nicht, wie viel ist Haskell.

01:00:24.810 --> 01:00:26.890
<v Felix>Haskell sind, glaube ich, 5000 Pakete oder so.

01:00:27.290 --> 01:00:28.250
<v Unbekannt>Das kann sein.

01:00:28.410 --> 01:00:32.970
<v Gast 1>Also es wird halt dieses ganze Haskell-Ökosystem, was es gibt,

01:00:34.010 --> 01:00:40.970
<v Gast 1>dieser Kabal-Package-Manager, der wird dann halt einmal so gepasst und nach Nix-Packages portiert und da

01:00:40.970 --> 01:00:43.370
<v Gast 1>wird halt das komplette Ökosystem danach gebaut.

01:00:43.530 --> 01:00:47.370
<v Gast 1>Also wenn man irgendwie ein Haskell-Paket installieren will, da gibt es das halt mit großer Wahrscheinlichkeit

01:00:47.370 --> 01:00:48.170
<v Gast 1>in Nix-Packages.

01:00:48.330 --> 01:00:51.130
<v Gast 1>Außer es baut jetzt irgendwie nie aus irgendwelchen Gründen.

01:00:52.890 --> 01:00:55.850
<v Felix>Also das ist schon echt krass.

01:00:55.930 --> 01:01:01.530
<v Felix>Also auch die Hask-Entwickler, denke ich, die haben diesen Ansatz,

01:01:01.610 --> 01:01:03.530
<v Felix>quasi diesen funktionalen Ansatz.

01:01:04.090 --> 01:01:06.170
<v Felix>Ich weiß nicht, darüber können wir vielleicht gleich nochmal reden.

01:01:06.490 --> 01:01:09.690
<v Felix>Die haben das quasi, die leben das ja schon davor und dann haben sie gesehen,

01:01:09.850 --> 01:01:14.170
<v Felix>so, oh, es gibt ein Betriebssystem, was einfach genau das macht, was wir programmieren die ganze Zeit.

01:01:14.570 --> 01:01:20.810
<v Felix>Und dann ist quasi der Weg zunächst halt relativ glatt gewesen.

01:01:22.570 --> 01:01:26.730
<v Gast 1>Ja, also man muss jetzt kein funktionaler Programmierer sein, um nix zu benutzen.

01:01:26.810 --> 01:01:32.090
<v Gast 1>Also ich habe halt, ich mache jetzt halt auch, wenn ich benutze keine funktionalen Programmiersprachen

01:01:32.090 --> 01:01:32.890
<v Gast 1>großartig.

01:01:33.130 --> 01:01:38.010
<v Gast 1>Also nix ist im Prinzip die einzige funktionale Programmiersprache, die ich da benutze.

01:01:40.570 --> 01:01:45.450
<v Gast 1>Aber es gibt so ein paar so Begrifflichkeiten,

01:01:45.530 --> 01:01:52.490
<v Gast 1>die so aus dieser funktionalen Programmiersprache, äh, funktionalen Programmiersprachen-Community da so

01:01:52.490 --> 01:01:54.170
<v Gast 1>mit nix drin landet.

01:01:54.250 --> 01:01:57.450
<v Gast 1>Also da muss man dann nachgucken, was das jetzt bedeutet.

01:01:57.610 --> 01:02:00.570
<v Gast 1>Aber es ist jetzt nie so schlimm, also es gibt ja zum Beispiel bei Heske dann irgendwie,

01:02:00.730 --> 01:02:07.290
<v Gast 1>dass man irgendwelche Monoide und diese ganze Kategorietheorie da auspacken muss,

01:02:07.370 --> 01:02:09.610
<v Gast 1>hat das so schlimm ist es halt so solche Sachen bezeichnet.

01:02:11.130 --> 01:02:14.250
<v Ingo>Aber das merkt jetzt ein normaler Anwender, würde das nicht merken.

01:02:15.850 --> 01:02:17.210
<v Felix>Also es kommt drauf an.

01:02:17.770 --> 01:02:21.610
<v Ingo>Oder also ich meine, wo spielt der funktionelle Ansatz dann jetzt eine Rolle?

01:02:21.850 --> 01:02:28.490
<v Felix>Es kommt, es ist dann, sobald du deine eigenen Snippets baust, sobald du deine

01:02:28.490 --> 01:02:33.530
<v Felix>eigenen Pakete quasi einbringen möchtest oder selber verwenden möchtest,

01:02:33.770 --> 01:02:39.450
<v Felix>dann musst du halt auch nichts als Programmiersprache verwenden.

01:02:39.610 --> 01:02:45.130
<v Felix>Und dann kommt es schon relativ schnell zu so einem bisschen so einem Umdenken.

01:02:46.170 --> 01:02:51.450
<v Felix>Es ist halt nicht dieses prozedurale, okay, ich mache das und dann mache ich das und ich mach und dann das,

01:02:51.770 --> 01:02:58.730
<v Felix>sondern man hat quasi eine Funktion, die bekommt irgendwelche Eingabewerte und diese Eingabewerte

01:02:58.970 --> 01:03:03.770
<v Felix>werden dann in bestimmten Teilen von deinem von deinem Snippet verwendet.

01:03:04.090 --> 01:03:08.490
<v Felix>Und am Ende putzt dann ein Paket raus,

01:03:08.570 --> 01:03:12.650
<v Felix>was dein, was quasi dem entsprechen sollte, was du dir wünschst.

01:03:13.850 --> 01:03:17.930
<v Felix>Also es sieht, wie gesagt, es sieht ein bisschen aus wie JSON plus Lambdas.

01:03:18.730 --> 01:03:25.130
<v Felix>Lambdas sind quasi anonyme Funktionen und so kann man sich das auch ein bisschen

01:03:25.130 --> 01:03:26.010
<v Felix>vorstellen.

01:03:26.970 --> 01:03:31.130
<v Gast 1>Also man kann sich halt, wenn man jetzt irgendwas Neues paketieren will,

01:03:31.290 --> 01:03:34.570
<v Gast 1>häufig irgendwie ein anderes Projekt schnappen, was ja zu ähnlich ist,

01:03:34.650 --> 01:03:36.810
<v Gast 1>vielleicht von einem Bildsystem oder so.

01:03:36.970 --> 01:03:41.450
<v Gast 1>Gruppiert sich das einfach und muss dann sich eigentlich über diese Programmiersprache erstmal gar nicht so

01:03:41.450 --> 01:03:47.210
<v Gast 1>viele Gedanken machen, sondern erstmal eher diese

01:03:47.370 --> 01:03:54.330
<v Gast 1>Bildabstraktionen ist ja dann so, dass man da irgendwie so ein Shell-Skript hat und dann irgendwie so Phasen

01:03:54.330 --> 01:03:54.730
<v Gast 1>überschreibt.

01:03:54.810 --> 01:03:58.650
<v Gast 1>Also es gibt zum Beispiel eine Bauphase oder eine Installierenphase und eine Konfigurationsphase.

01:03:58.730 --> 01:04:05.130
<v Gast 1>Und das sind halt immer so kurze Zeichenketten, wo dann so Shell-Befehle drinstehen und da kann man halt

01:04:05.130 --> 01:04:10.650
<v Gast 1>irgendwie seine ganz normalen Shell-Kommandos da reinschreiben und muss sich halt jetzt um die funktionalen

01:04:10.650 --> 01:04:14.810
<v Gast 1>Aspekte gar nicht so Dingen die Gedanken machen.

01:04:15.050 --> 01:04:15.290
<v Gast 1>Ja.

01:04:15.530 --> 01:04:20.090
<v Ingo>Aber okay, also ihr meint, da kommt doch jemand mit klar, der jetzt von funktioneller Programmierung einfach,

01:04:20.170 --> 01:04:20.570
<v Ingo>keine Ahnung.

01:04:20.730 --> 01:04:24.890
<v Felix>Also ich bin damit relativ gut zurückgekommen.

01:04:24.970 --> 01:04:27.130
<v Felix>Also ich komme ja auch aus einer ganz anderen Welt eigentlich.

01:04:27.210 --> 01:04:33.290
<v Felix>Ich komme eigentlich aus der Welt von Python und quasi prozedural verstehe ich,

01:04:33.370 --> 01:04:35.850
<v Felix>ja, so nacheinander Dinge passieren Dinge.

01:04:36.650 --> 01:04:40.490
<v Felix>Aber der Einstieg war halt trotzdem schon ein bisschen holperig.

01:04:40.650 --> 01:04:45.770
<v Felix>Das war halt auch vor zweieinhalb oder drei Jahren oder so, wo ich damit angefangen habe.

01:04:45.930 --> 01:04:51.370
<v Felix>Und wenn man damit mehr Dinge tut, wird alles viel einfacher.

01:04:51.690 --> 01:04:55.370
<v Felix>Man hat dann bestimmte Sachen schon gesehen, man versteht bestimmte Probleme,

01:04:55.530 --> 01:04:59.050
<v Felix>die sich quasi aus dieser Sprache ergeben.

01:04:59.610 --> 01:05:04.010
<v Felix>Man versteht, wie Dinge zusammenhängen und ja,

01:05:04.410 --> 01:05:08.970
<v Felix>es, wie gesagt, auch solange man nichts selber bauen muss, ist auch alles total cool.

01:05:09.690 --> 01:05:15.370
<v Gast 1>Also solange alles funktioniert, aber solange man auch Sachen, also man kann sich halt auch Sachen selber

01:05:15.370 --> 01:05:16.170
<v Gast 1>einfach bauen.

01:05:19.930 --> 01:05:23.370
<v Gast 1>Also wenn man das nie macht, also das ist schon halt so eine Mächtigkeit,

01:05:23.450 --> 01:05:26.570
<v Gast 1>die man da, so eine andere Kontrolle, die man über sein System hat.

01:05:26.650 --> 01:05:31.530
<v Gast 1>Wo normalerweise arbeitet man auch gerne mal gegen die Pakete, die so installiert sind,

01:05:31.690 --> 01:05:33.690
<v Gast 1>dass man irgendwie Sachen anders haben will.

01:05:34.170 --> 01:05:39.450
<v Gast 1>Und dann muss man irgendwie erstmal Aufwand betreiben, das anzupassen.

01:05:39.610 --> 01:05:41.050
<v Gast 1>Es geht halt relativ einfach.

01:05:41.610 --> 01:05:42.330
<v Gast 1>Genau.

01:05:42.570 --> 01:05:49.370
<v Felix>Also wie zum Beispiel den Jack-Support oder ein Real-Time-Kernel,

01:05:49.530 --> 01:05:50.090
<v Felix>sowas.

01:05:50.250 --> 01:05:55.370
<v Felix>Das ist halt quasi, man sagt, ich hätte jetzt als meinen Linux-Kernel hätte ich gern einfach einen

01:05:55.370 --> 01:06:01.610
<v Felix>Real-Time-Kernel und dann baut den Computer halt einfach den Linux-Kernel dafür,

01:06:01.690 --> 01:06:08.570
<v Felix>ohne dass du dich, dass du das viel verstehen musst, was da für bestimmte Flags irgendwo gesetzt werden

01:06:08.570 --> 01:06:12.650
<v Felix>und wo dein deine, keine Ahnung, deine Header sind oder so.

01:06:13.050 --> 01:06:16.970
<v Felix>Sondern es ist halt, auf dieser abstrakten Ebene ist es dann halt auf einmal richtig,

01:06:17.050 --> 01:06:19.370
<v Felix>richtig cool, dein System zu beherrschen.

01:06:19.530 --> 01:06:21.850
<v Felix>Und du wirst nicht mehr von deinem System beherrscht.

01:06:25.130 --> 01:06:30.010
<v Felix>Also es ist halt schon echt eine richtig, richtig coole Sache.

01:06:30.170 --> 01:06:33.130
<v Felix>Richtig viele Möglichkeiten, die sich halt einfach nur daraus ergeben,

01:06:34.730 --> 01:06:37.450
<v Felix>dass du Pakete selber bauen kannst.

01:06:38.330 --> 01:06:40.570
<v Felix>Und dass du Sachen anpassen kannst.

01:06:42.490 --> 01:06:47.610
<v Gast 1>NixOS selber gibt es halt immer, ist halt so kein Rolling-Release-Modell,

01:06:47.690 --> 01:06:50.410
<v Gast 1>sondern es gibt halt so jedes Jahr zwei Releases.

01:06:50.970 --> 01:06:55.210
<v Gast 1>Wir sind aktuell in der Stabilisierungsphase für 17.09.

01:06:55.930 --> 01:07:02.810
<v Gast 1>Also was dann quasi jetzt über den September, es wird halt über einen Monat hin wird der Paketstand

01:07:02.970 --> 01:07:04.250
<v Gast 1>erstmal so eingefroren.

01:07:04.330 --> 01:07:10.650
<v Gast 1>Also das heißt, also keine größeren Sachen, die jetzt irgendwas kaputt machen würden,

01:07:10.730 --> 01:07:15.610
<v Gast 1>werden dann nicht mehr zurückgeführt, sondern wird eigentlich der Fokus darauf gelegt,

01:07:15.690 --> 01:07:18.250
<v Gast 1>dass die Sachen, die da sind, halt alle funktionieren.

01:07:18.970 --> 01:07:24.810
<v Gast 1>Und ja, dann kann man sich dann halt zweimal im Jahr upgraden auf das neue System.

01:07:25.130 --> 01:07:30.170
<v Felix>Genau, aber so Security-Patches gibt es natürlich trotzdem für diese Releases.

01:07:30.250 --> 01:07:35.370
<v Felix>Also es ist nicht so, dass es komplett eingefroren wird, sondern halt nur keine großen Sprünge von Versionen.

01:07:36.490 --> 01:07:41.690
<v Felix>Wenn man so ein bisschen so wie bei Debian auf Schmerzen steht, dann kann man sich auch den Unstabled-Kanal

01:07:41.690 --> 01:07:42.490
<v Felix>reinziehen.

01:07:42.730 --> 01:07:44.730
<v Felix>Ist halt öfter mal was kaputt.

01:07:45.050 --> 01:07:46.730
<v Felix>Aber es ist halt nicht Unstable.

01:07:47.050 --> 01:07:50.010
<v Ingo>Okay, und was beinhaltet dann so eine neue Version?

01:07:50.090 --> 01:07:54.730
<v Ingo>Also ein neuer Firefox, eine neue glib 10, ein neues Gedöns.

01:07:54.970 --> 01:07:55.530
<v Ingo>Ja, genau.

01:07:55.690 --> 01:08:02.170
<v Gast 1>Also es wird wenig gepatcht, also wenn jetzt zum Beispiel irgendwie bestimmte

01:08:02.250 --> 01:08:06.970
<v Gast 1>Software so minor-Releases macht, also wo jetzt jetzt selber irgendwie Bugs gefixt werden,

01:08:07.290 --> 01:08:10.810
<v Gast 1>dann werden halt diese Minor Releases so erst Ganzes zurückgeportiert.

01:08:11.450 --> 01:08:16.730
<v Gast 1>Zum Beispiel bei Nginx gibt es ja verschiedene LTS-Releases und also diese LTLS-Releases werden halt so eins

01:08:16.730 --> 01:08:21.050
<v Gast 1>zu eins übernommen, aber es wird jetzt irgendwie, nee, dieses Default Nginx wird jetzt nie auf ein neues

01:08:21.050 --> 01:08:22.970
<v Gast 1>Major-Release umgebaut.

01:08:23.610 --> 01:08:28.970
<v Gast 1>Beziehungsweise es gibt auch so Sachen in der Konfiguration, also wenn man in diesen Modulen,

01:08:29.050 --> 01:08:33.850
<v Gast 1>da kann man ja auch verschiedene Optionen setzen und innerhalb eines Releases lässt man eigentlich diese

01:08:33.930 --> 01:08:39.530
<v Gast 1>Module ganz, also da werden keine Breaking Chains mit drin verarbeitet.

01:08:39.690 --> 01:08:44.730
<v Felix>Ja, so ein typisches Modul, was womit, was halt so ein toller Case ist einfach,

01:08:44.810 --> 01:08:47.530
<v Felix>ist das für dich das Nginx-Modul.

01:08:47.690 --> 01:08:54.570
<v Felix>Das Nginx-Modul beschreibt, wie die Konfiguration von deinem Nginx, von deinem Web-Server aussehen soll.

01:08:54.810 --> 01:09:01.770
<v Felix>Und der hat, ähm der Nginx hat ja quasi eine eigene Konfiguration und die beschreibt,

01:09:01.930 --> 01:09:06.570
<v Felix>wo soll, welche Ports sollen aufgemacht werden und wie werden irgendwie die,

01:09:07.050 --> 01:09:09.450
<v Felix>wie werden irgendwelche Requests geroutet.

01:09:09.690 --> 01:09:16.650
<v Felix>Und die komplette Konfiguration ist in Nix-Packages als Modul

01:09:16.650 --> 01:09:17.130
<v Felix>verfügbar.

01:09:17.210 --> 01:09:20.410
<v Felix>Das heißt, man kann quasi alle Aspekte von dieser Konfiguration ändern.

01:09:20.650 --> 01:09:26.730
<v Felix>Und man kann, wie wir schon vorher gesagt haben, man kann die Konfiguration splitten.

01:09:26.810 --> 01:09:32.490
<v Felix>Das heißt, man sagt, okay, ich habe hier meinen eigenen Blog, der läuft auf dem einen Server und ich habe

01:09:32.490 --> 01:09:36.810
<v Felix>mein, keine Ahnung was, für einen Kumpel habe ich was,

01:09:37.050 --> 01:09:38.330
<v Felix>einen anderen Webserver.

01:09:38.730 --> 01:09:42.890
<v Felix>Und die sind erstmal beide auf zwei verschiedenen Computern, aber es ist quasi trivial,

01:09:43.050 --> 01:09:45.930
<v Felix>diese beiden Konfigurationen zusammenzuführen.

01:09:47.210 --> 01:09:52.410
<v Felix>Und das bietet halt nur Nix-Packages bzw.

01:09:52.730 --> 01:09:57.530
<v Felix>Nix aus, dass man Konfigurationen zusammenführen kann, ohne dass sie brechen.

01:09:59.130 --> 01:10:05.770
<v Felix>Beim Nginx ist es auch noch so, es gibt ja dieses, oh, ich will gerne SSL haben, so wie alle Leute.

01:10:06.170 --> 01:10:12.170
<v Felix>Und für Nix-Packages gibt es eine Option, die heißt Enable ACME.

01:10:12.330 --> 01:10:17.370
<v Felix>Und dann sagt man, Enable ACME ist gleich true und dann wird für diesen einen Host,

01:10:17.450 --> 01:10:19.930
<v Felix>den du konfiguriert hast, halt SSL enabled.

01:10:21.130 --> 01:10:28.010
<v Felix>Und Nixos sorgt dafür, dass der Timer für diesen ACME-Client

01:10:28.250 --> 01:10:34.490
<v Felix>gesetzt wird in System.de, dann sorgt er dafür, dass die Pfade alle angepasst werden in deinem

01:10:34.490 --> 01:10:39.850
<v Felix>Nginx und dann wird das quasi alles zusammengebracht.

01:10:40.170 --> 01:10:45.530
<v Felix>Der Pfad zu dem Zertifikat wird gesetzt, richtig, und dann hat man auf einmal SSL

01:10:47.050 --> 01:10:51.610
<v Felix>für deinen Server aktiviert, ohne irgendwas krass denken zu müssen.

01:10:52.970 --> 01:10:54.330
<v Ingo>Ach, Let's Encrypt Zertifikat.

01:10:54.570 --> 01:10:56.010
<v Felix>Genau, Let's Encrypt in dem Fall, ja genau.

01:10:56.090 --> 01:11:00.250
<v Felix>Es wird einfach Let's Encrypt aktiviert, weil es so einfach, ja.

01:11:00.330 --> 01:11:02.330
<v Felix>Und nicht so, soll ich das jetzt wirklich machen?

01:11:02.490 --> 01:11:04.730
<v Felix>Müsste ich mir jetzt irgendwie anschauen, wie das genau funktioniert?

01:11:04.810 --> 01:11:07.130
<v Felix>Und habe ich so einen komischen Demon, der irgendwas macht.

01:11:07.290 --> 01:11:12.250
<v Felix>Braucht man nicht mehr drüber nachzudenken, sondern man sagt einfach nur, ich will es enabled haben.

01:11:12.410 --> 01:11:17.690
<v Felix>Und wenn der, wenn die URL passt, wo der Server aus erreichbar ist, dann funktioniert es einfach.

01:11:17.930 --> 01:11:19.370
<v Felix>Und ich meine, wie geil ist das denn?

01:11:19.530 --> 01:11:24.890
<v Gast 1>Also was ist mir am Anfang so, dass ich dann gesagt habe, wow, hier, hier will ich bleiben.

01:11:24.970 --> 01:11:30.170
<v Gast 1>Also ich hatte standardmäßig war irgendwie in einem alten Release NTPD,

01:11:30.250 --> 01:11:33.530
<v Gast 1>der Standarddienst, für Zeitsynchronisation.

01:11:33.690 --> 01:11:38.730
<v Gast 1>Und ich wollte auf die TimeSync D wechseln, da habe ich dann halt gesagt,

01:11:39.130 --> 01:11:44.330
<v Gast 1>services.enable slash true.

01:11:44.650 --> 01:11:48.890
<v Gast 1>Und was dann passiert ist, dass der irgendwie den NTPD gestoppt hat,

01:11:50.090 --> 01:11:56.490
<v Gast 1>den TimeSync-D gestartet hat und im Prinzip auch das Paket quasi entfernt hat,

01:11:56.570 --> 01:12:01.050
<v Gast 1>also so dass das Set nicht mehr aktualisiert wird und dann irgendwann rausfliegt.

01:12:02.250 --> 01:12:06.490
<v Gast 1>So auch diese, dass das dann auch aufeinander aufbaut, dass man dann irgendwie,

01:12:07.610 --> 01:12:12.090
<v Gast 1>es gibt dann noch so verschiedene Checks für die ganzen Optionen, also welche Werte zum Beispiel verwendet

01:12:12.090 --> 01:12:16.890
<v Gast 1>werden können und es gibt dann, wenn man das Update einspielt,

01:12:17.370 --> 01:12:23.690
<v Gast 1>wird das dann auch überprüft, dass man jetzt keine Konfigurationsfehler macht.

01:12:24.330 --> 01:12:29.290
<v Gast 1>Zum Beispiel hatte ich mal was, genau, ich habe mal ein Firewall-Modul geschrieben.

01:12:29.450 --> 01:12:34.490
<v Gast 1>Das hat dann im Prinzip die Konfiguration beim Bauen gecheckt, ob die Syntax richtig ist.

01:12:34.570 --> 01:12:38.490
<v Gast 1>Und wenn das nie gebaut hat, dann wird das halt auch Goni erst versucht einzuspielen.

01:12:39.290 --> 01:12:40.570
<v Gast 1>Und ja, sowas.

01:12:40.650 --> 01:12:44.250
<v Gast 1>Also man kann halt schon so Fehler vermeiden, bevor man irgendwie irgendwelche Dienste anfängt,

01:12:44.330 --> 01:12:45.450
<v Gast 1>neu zu starten.

01:12:45.770 --> 01:12:46.250
<v Gast 1>Genau.

01:12:46.410 --> 01:12:49.530
<v Felix>Also mit diesen Optionen hat man dann halt auch die Möglichkeit zu sagen,

01:12:49.610 --> 01:12:56.250
<v Felix>okay, das ist eine, ich hätte gerne als Option eine Liste von Zeilen zum Beispiel,

01:12:56.330 --> 01:12:58.330
<v Felix>wenn man irgendwie eine Konfiguration bearbeiten will.

01:12:58.490 --> 01:13:02.570
<v Felix>Oder ich hätte gern eine Option, dass es nur eine Zahl, zum Beispiel wenn es ein Port ist,

01:13:02.810 --> 01:13:05.210
<v Felix>dann kann man das dort an der Stelle quasi festlegen.

01:13:05.290 --> 01:13:09.210
<v Felix>Und wenn das nicht übereinstimmt mit dem, was vom Benutzer quasi konfiguriert wird,

01:13:09.370 --> 01:13:10.570
<v Felix>dann baut es halt auch nicht.

01:13:10.810 --> 01:13:12.810
<v Felix>Dann wird das System nicht umkonfiguriert.

01:13:13.210 --> 01:13:19.450
<v Felix>Und ich denke, also einige hatten das schon, dass sie an irgendeiner Konfigurationsdatei rumgefuscht haben und

01:13:19.450 --> 01:13:20.970
<v Felix>dann bäm, SSH geht nicht mehr.

01:13:21.610 --> 01:13:24.970
<v Felix>Oh oh, das war jetzt nicht so eine gute Sache.

01:13:25.610 --> 01:13:31.770
<v Felix>Und sowas kann halt durch diese Options, dieses Modulsystem viel,

01:13:31.850 --> 01:13:32.970
<v Felix>viel schwieriger passieren.

01:13:33.050 --> 01:13:36.730
<v Felix>Natürlich kann es immer noch sein, wenn es, man kann immer noch alles hinfuschen,

01:13:36.890 --> 01:13:39.770
<v Felix>aber man hat hier wenigstens die Möglichkeit, es richtig zu machen.

01:13:40.410 --> 01:13:43.050
<v Ingo>Und das System würde dich dann einfach warnen, hier irgendwas stimmt nicht.

01:13:43.370 --> 01:13:45.690
<v Felix>Es würde dich nicht warnen, es würde sagen einfach, mach's.

01:13:45.930 --> 01:13:46.650
<v Felix>Nee, geht nicht.

01:13:46.810 --> 01:13:47.370
<v Felix>Funktioniert nicht.

01:13:47.610 --> 01:13:48.090
<v Felix>Geh einfach weg.

01:13:48.250 --> 01:13:48.810
<v Felix>Das geht nicht.

01:13:49.610 --> 01:13:50.090
<v Felix>Geh weg.

01:13:50.570 --> 01:13:52.730
<v Felix>Mach's richtig und dann können wir nochmal gucken.

01:13:55.290 --> 01:13:59.690
<v Ingo>Jetzt hattet ihr kurz gesagt, Nixos kommt,

01:14:00.250 --> 01:14:04.730
<v Ingo>wird zweimal im Jahr released, kommt also demnächst in der Version 17.09 raus.

01:14:05.530 --> 01:14:08.490
<v Ingo>Aber Nixos ist ja jetzt nicht nix.

01:14:09.850 --> 01:14:14.090
<v Ingo>Das heißt, und wir hatten ja das Beispiel mit Ngin X,

01:14:14.330 --> 01:14:19.850
<v Ingo>also es gibt halt eine feste Version Nginx in der 17.09 dann.

01:14:20.090 --> 01:14:26.890
<v Ingo>Wenn ich jetzt aber eine neues, neuere Nginx-Version haben will, kann ich mir die trotzdem dazu bauen

01:14:26.890 --> 01:14:28.170
<v Ingo>und installieren, oder?

01:14:29.210 --> 01:14:30.170
<v Ingo>Aber da bin ich nicht fest.

01:14:30.490 --> 01:14:35.130
<v Gast 1>Man kann auch sagen, man kann sich diesen Paketstand, also dieses Nix-Packages,

01:14:35.290 --> 01:14:38.650
<v Gast 1>zum Beispiel von 17.09, wieder importieren einfach.

01:14:40.730 --> 01:14:46.810
<v Gast 1>Und sagen, jetzt will ich aus dem Modul das NX-Paket haben und das jetzt benutzen,

01:14:47.130 --> 01:14:50.010
<v Gast 1>um mein NX-Modul damit zu konfigurieren.

01:14:50.090 --> 01:14:53.930
<v Gast 1>Und dann würde der das dann halt aus einem anderen Release mit rausziehen.

01:14:54.970 --> 01:14:55.530
<v Gast 1>Genau.

01:14:55.770 --> 01:15:01.130
<v Felix>Und dieses Modulsystem bietet quasi oft die Möglichkeit zu sagen,

01:15:01.210 --> 01:15:05.530
<v Felix>okay, welches Tool, welches Paket will ich denn wirklich verwenden?

01:15:05.610 --> 01:15:08.090
<v Felix>Was soll denn diese Funktionalität bereitstellen?

01:15:08.330 --> 01:15:11.130
<v Felix>Und das kann man dann halt in dem Fall einfach austauschen.

01:15:11.930 --> 01:15:15.770
<v Ingo>Das könnte dann irgendeine Version sein, also Nginx-Version 12, 13.

01:15:16.170 --> 01:15:22.730
<v Felix>Genau, und wenn du ein ganz bestimmte Version hast, kannst du das auch so weit anpassen,

01:15:22.810 --> 01:15:29.530
<v Felix>dass du sagst, okay, ich baue auf dem Snippet für Nginx auf, aber ich überschreibe die Quelle von Nginx,

01:15:29.770 --> 01:15:33.770
<v Felix>also was als Source-Code hergenommen werden soll.

01:15:34.170 --> 01:15:37.290
<v Felix>Ich überschreibe nur diesen Teil, alles andere soll beim gleichen bleiben,

01:15:37.370 --> 01:15:39.610
<v Felix>also diese ganzen, wie es genau gebaut wird.

01:15:40.010 --> 01:15:44.890
<v Felix>Nur, dass eine Quelle eine andere ist und dieses Paket, was dort dann rauskommt,

01:15:45.050 --> 01:15:47.450
<v Felix>das möchte ich verwenden für meinen Service.

01:15:47.850 --> 01:15:49.850
<v Felix>Und das ist halt sehr, sehr einfach.

01:15:50.010 --> 01:15:54.090
<v Felix>Es ist nicht so, okay, ich muss jetzt irgendwie einen Opt installieren und dann muss die ganzen Pfade anpassen

01:15:54.090 --> 01:15:57.770
<v Felix>und irgendwie einen System-D-Service anpassen und keine Ahnung, was war für Sachen noch.

01:15:58.090 --> 01:16:01.850
<v Felix>Sondern es ist alles in einer Konfiguration quasi.

01:16:02.570 --> 01:16:04.250
<v Gast 1>Das geht halt doch häufig nie.

01:16:04.330 --> 01:16:11.050
<v Gast 1>Also wenn man jetzt, also ich kenne zum Beispiel jemanden, oder wenn man mitwickelt mit dem

01:16:11.050 --> 01:16:17.850
<v Gast 1>Klang C Compiler, C Compiler da, dann hat man irgendwie bei DPN zum Beispiel Klang

01:16:18.330 --> 01:16:24.330
<v Gast 1>ein Paket für Klang 3.4 und ein Paket für Klang 3.6 und dann installiert man halt beide.

01:16:24.730 --> 01:16:29.050
<v Gast 1>Die Pakete bei Debian sind dann irgendwie dazu ausgelegt, dass es dann in verschiedenen Verzeichnissen landet.

01:16:29.130 --> 01:16:31.850
<v Gast 1>Und dann hat man aber irgendwie das Problem, dass man irgendwie andere Tools hat,

01:16:31.930 --> 01:16:33.450
<v Gast 1>die dann wieder darauf zugreifen.

01:16:33.530 --> 01:16:36.170
<v Gast 1>Und denen muss man dann immer erstmal irgendwie versuchen beizubringen,

01:16:36.250 --> 01:16:37.930
<v Gast 1>dass jetzt die richtige Version nehmen.

01:16:38.410 --> 01:16:43.450
<v Gast 1>Das Problem ist ja dann auch, wenn man irgendwie alle Hyperies und User Lib hat,

01:16:43.530 --> 01:16:47.930
<v Gast 1>dass man dann irgendwie ja den Programm beibringen muss, dass die dann die richtige Version sich da

01:16:47.930 --> 01:16:48.730
<v Gast 1>rausziehen.

01:16:49.050 --> 01:16:51.850
<v Felix>Genau, dass sie die irgendwie aus Opt hernehmen oder so.

01:16:52.010 --> 01:16:52.730
<v Felix>Wo auch immer.

01:16:53.530 --> 01:16:54.890
<v Felix>Es dann liegt, ja.

01:16:57.130 --> 01:17:03.930
<v Felix>Was ich gerade noch als Use Case habe, weil es noch nicht so richtig noch

01:17:04.090 --> 01:17:08.730
<v Felix>in Nix-Packages in Unstable ist gerade das Paket WV-Dial kaputt.

01:17:10.170 --> 01:17:13.370
<v Felix>Ich benutze gerade Unstable, weil ich auf Schmerzen stehe.

01:17:14.730 --> 01:17:19.610
<v Felix>Das Problem ist quasi, ich brauche WV-Deile, weil ansonsten habe ich kein UMTS und UMTS ist für mich sehr

01:17:19.610 --> 01:17:24.730
<v Felix>wichtig, weil ich habe einen Laptop und ich fahre mit der Bahn und ich muss es benutzen.

01:17:24.890 --> 01:17:31.610
<v Felix>Und was ich jetzt gemacht habe, ist, ich habe für dieses eine einzelne Paket die eine

01:17:31.610 --> 01:17:34.010
<v Felix>ältere Version von Nix Packages genommen.

01:17:34.090 --> 01:17:40.410
<v Felix>Ich ziehe das in meine Konfiguration rein, ich sage, benutze für dieses Paket aus Nix Packages alt

01:17:42.090 --> 01:17:47.210
<v Felix>und kann das dann quasi in der restlichen Konfiguration hernehmen.

01:17:47.290 --> 01:17:49.530
<v Felix>Und das sind irgendwie sind es?

01:17:50.090 --> 01:17:56.010
<v Felix>Sechs Zeilen, um die alte Nix Packages Revision zu verwenden und

01:17:56.330 --> 01:17:58.890
<v Felix>WV-Deal davon zu nehmen.

01:17:59.370 --> 01:18:03.130
<v Felix>Und so habe ich einen VV-Deal aus einer älteren Version, aber alles andere,

01:18:03.210 --> 01:18:07.530
<v Felix>mein komplettes restliches System, ist quasi die Anzeige.

01:18:08.970 --> 01:18:09.930
<v Ingo>Scott sei Dank unstable.

01:18:10.090 --> 01:18:12.010
<v Felix>Es Gott sei Dank unstable, genau.

01:18:13.450 --> 01:18:17.930
<v Felix>Also diese Freiheiten bekommt man dann halt auf einmal, weil es so einfach ist, das zu machen.

01:18:19.290 --> 01:18:24.730
<v Gast 1>Ja, man kann dann halt auch gucken, wenn man zum Beispiel sein System upgraden will,

01:18:24.890 --> 01:18:27.290
<v Gast 1>kann man ja dann auch zwischen den Releases wieder hin und her springen,

01:18:27.450 --> 01:18:28.490
<v Gast 1>wie man lustig ist.

01:18:28.730 --> 01:18:32.410
<v Gast 1>Also man kann ja einfach mal probieren, ob das Upgraden funktioniert und wenn das irgendwie,

01:18:32.570 --> 01:18:37.450
<v Gast 1>meinetwegen irgendein Dienst funktioniert, nicht so richtig und meinetwegen hat jemand einen Fehler eingebaut

01:18:37.450 --> 01:18:38.090
<v Gast 1>oder so.

01:18:38.810 --> 01:18:45.610
<v Gast 1>Naja, dann kann man sich das dann halt wieder auf den alten Paketsstandort zurückspringen und dann nächstes

01:18:45.610 --> 01:18:47.210
<v Gast 1>Wochenende weitermachen oder sowas.

01:18:47.450 --> 01:18:47.770
<v Gast 1>Genau.

01:18:48.010 --> 01:18:52.330
<v Felix>Wenn man sagt, okay, ich brauche jetzt unbedingt Studio Link, ja, und das ist mal,

01:18:52.570 --> 01:18:54.730
<v Felix>das ist kaputt gegangen, weil ich irgendwas gemacht habe in meinem System,

01:18:54.810 --> 01:18:58.890
<v Felix>weil es halt irgendwas anderes, dann sagt man, okay, kein Problem, ich nehme einfach das von der alten

01:18:58.890 --> 01:18:59.530
<v Felix>Version.

01:19:00.170 --> 01:19:06.090
<v Felix>Und bei vielen Programmen ist es tatsächlich so, dass du das dann direkt aus dem Nix Store starten kannst.

01:19:06.170 --> 01:19:09.130
<v Felix>Also das ist ja, es liegen ja alle Sachen immer in Nix Door.

01:19:09.610 --> 01:19:12.890
<v Felix>Und da liegen dann halt auch entsprechend die ganzen Executables und da liegen dann halt,

01:19:12.970 --> 01:19:17.050
<v Felix>keine Ahnung, drei verschiedene Studio-Link und die kannst du dann einfach,

01:19:17.370 --> 01:19:21.850
<v Felix>kannst du halt dieses anderes verwenden, ohne dass dir das Schmerzen macht quasi.

01:19:21.930 --> 01:19:24.570
<v Felix>Ist natürlich wieder super hingecheatet, aber es wird funktionieren.

01:19:24.890 --> 01:19:29.690
<v Ingo>Und wie wähle ich jetzt aus, welches Studio-Link ich dann zum Beispiel verwenden will?

01:19:31.210 --> 01:19:38.170
<v Gast 1>Also man hat da als Nutzer und auch Systemwert gibt es halt die sogenannten Profile und man installiert

01:19:38.170 --> 01:19:40.730
<v Gast 1>sich halt Sachen in sein Profil rein.

01:19:41.770 --> 01:19:48.250
<v Gast 1>Und dann wird das in den bestimmten Pfad rein, wenn die ganzen Sachen so reingesimmeling.

01:19:48.410 --> 01:19:53.210
<v Gast 1>Also es gibt dann halt auf Systemebene gibt es in Run.

01:19:56.810 --> 01:19:57.210
<v Gast 1>Ups.

01:20:01.450 --> 01:20:03.610
<v Felix>Ich glaube, es ist sogar für den Root-User auch.

01:20:05.070 --> 01:20:09.070
<v Felix>Ich glaube, das ist sogar auch für den Root-User der Ziel-Stat-Stat-Stand.

01:20:09.150 --> 01:20:13.710
<v Gast 1>Ja, genau, es gibt dann halt ein Pfad, wo alle Programme,

01:20:14.430 --> 01:20:20.030
<v Gast 1>es wird so ein globales Binnen zusammengebaut, wo dann alles reingestämt wird.

01:20:20.910 --> 01:20:24.190
<v Gast 1>Und das gleiche gibt es dann halt auch nochmal für Nutzer und dann hat dann halt,

01:20:24.670 --> 01:20:29.390
<v Gast 1>wenn man als Nutzerprogramm installiert, hat das eine Priorität, weil das im Pfad weiter vorne steht,

01:20:29.470 --> 01:20:31.150
<v Gast 1>also in der Paffvariable.

01:20:31.550 --> 01:20:36.030
<v Gast 1>Und damit kann man dann halt Systemprogramme installieren,

01:20:36.110 --> 01:20:41.070
<v Gast 1>die alle Nutzer sehen und in sein eigenes Nix-Profil Dinge reininstallieren,

01:20:41.150 --> 01:20:47.790
<v Gast 1>die dann nur in PubNix slash Profile slash Bin oder so

01:20:47.790 --> 01:20:48.350
<v Gast 1>Dingen.

01:20:48.750 --> 01:20:49.070
<v Gast 1>Genau.

01:20:50.110 --> 01:20:55.310
<v Felix>Der Pfad ist RunCurrentSystem SW, also Software.

01:20:55.790 --> 01:21:00.670
<v Felix>Und dort ist dann ein Bin-Folder, ein ETC-Folder, ein Info, ein Lip-Folder quasi.

01:21:01.070 --> 01:21:06.750
<v Felix>Und diese ganzen Dateien, die da drin sind, sind keine, sind nicht die echten Executables,

01:21:06.830 --> 01:21:10.110
<v Felix>sondern sind nur die SIM-Links auf den Nixtor.

01:21:10.990 --> 01:21:14.510
<v Felix>Und so klebt man sich quasi sein Profil zusammen.

01:21:14.670 --> 01:21:19.790
<v Felix>Das heißt, man kann das auch relativ leicht wegwerfen und neu machen, weil halt alles nur SIM-Links sind.

01:21:19.870 --> 01:21:26.830
<v Felix>Und man hat quasi ein riesiges gesimlinktes Current System und man kann dieses einfach auswechseln,

01:21:26.910 --> 01:21:29.310
<v Felix>indem man diese SIM-Links halt ändert.

01:21:30.030 --> 01:21:32.830
<v Felix>Oder den SIM-Link darunter und dann das Profil ändert.

01:21:33.790 --> 01:21:34.110
<v Felix>Genau.

01:21:34.190 --> 01:21:38.750
<v Felix>Und so bekommt man quasi alles in seinen Pfad hinein.

01:21:39.310 --> 01:21:39.870
<v Felix>Genau.

01:21:40.030 --> 01:21:42.350
<v Gast 1>Es gibt es dann halt auch für verschiedene andere Sachen.

01:21:42.430 --> 01:21:45.870
<v Gast 1>Es gibt nur so verschiedenste Variablen, die man setzen kann.

01:21:46.110 --> 01:21:50.830
<v Gast 1>Zum Beispiel bei Python-Bibliotheken gibt es halt den Python-Path, um die Module festzulegen.

01:21:50.990 --> 01:21:54.270
<v Gast 1>Und das kann man auf verschiedenen Ebenen setzen.

01:21:54.510 --> 01:22:01.390
<v Gast 1>Also wenn man diese Nix-Shell benutzt, was so eine Art temporäres Profil ist,

01:22:02.270 --> 01:22:06.670
<v Gast 1>dann wird halt innerhalb dieser Shell-Sitzungen werden halt die Umgebungsvariablen gesetzt,

01:22:06.830 --> 01:22:10.990
<v Gast 1>wo dann noch zusätzliche Programme hinzugefügt werden zu den global installierten Programmen.

01:22:11.070 --> 01:22:14.270
<v Gast 1>Und die sind dann aber nur in dieser Shell-Session sichtbar.

01:22:14.350 --> 01:22:18.830
<v Gast 1>Also sobald man die Shell wieder zumacht, sind die Programme dann, die sind zwar auch da,

01:22:18.990 --> 01:22:21.310
<v Gast 1>aber die kann man dann halt nicht mehr direkt aufrufen.

01:22:23.070 --> 01:22:28.750
<v Ingo>Genau, also es ist was, um temporär Programme auszuprobieren, was damit zu machen und dann hinterher wieder zu

01:22:28.750 --> 01:22:29.070
<v Ingo>vergessen.

01:22:29.310 --> 01:22:29.470
<v Ingo>Genau.

01:22:29.630 --> 01:22:33.790
<v Gast 1>Also wenn ich zum Beispiel Pull Requests merche, also wenn jemand irgendwie ein neues Paket hinzubaut,

01:22:33.950 --> 01:22:40.110
<v Gast 1>dann tue ich die in der Regel in so einer Nix-Shell starten und kann dann halt gucken,

01:22:40.350 --> 01:22:45.950
<v Gast 1>ob jetzt die ganzen Dateien da vernünftig aussehen und ob die Programme starten und so weiter.

01:22:47.790 --> 01:22:50.030
<v Ingo>Und wie funktioniert denn dieser Clean-Up?

01:22:50.110 --> 01:22:52.590
<v Ingo>Also wer räumt da wann, wie dann auf?

01:22:53.150 --> 01:22:58.030
<v Gast 1>Also wenn man jetzt unter NixOS ist, da gibt es so einen Timer, das ist ein Deep-Timer,

01:22:58.590 --> 01:23:00.110
<v Gast 1>den man da ein konfigurieren kann.

01:23:00.350 --> 01:23:03.790
<v Gast 1>Das heißt dann, es gibt dann so einen Befehl dafür, den kann man auch manuell starten.

01:23:04.350 --> 01:23:10.430
<v Gast 1>Und da wird dann halt das alles aufgeräumt, was neben mir irgendwo als installiert markiert ist.

01:23:10.510 --> 01:23:15.470
<v Gast 1>Also wenn man das in sein Profil da rein installiert hat, oder beziehungsweise es gibt noch so einen alten

01:23:15.470 --> 01:23:19.150
<v Gast 1>Bootloader-Eintrag, der jetzt auf dem Paket referenziert, dann bleibt der bestehen,

01:23:19.230 --> 01:23:26.030
<v Gast 1>aber sobald man diesen Bootloader-Eintrag da löscht, kriegt das halt dieser Aufräumprozess mit

01:23:26.030 --> 01:23:29.390
<v Gast 1>und räumt diesen Nix-Store-Pfad, der da nirgendwo mehr benutzt wird,

01:23:29.550 --> 01:23:32.350
<v Gast 1>auf halt, ja genau.

01:23:32.430 --> 01:23:37.230
<v Felix>Also in dem Fall, genau, es liegt halt alles an diesen SIM-Links.

01:23:37.310 --> 01:23:43.150
<v Felix>Wenn die SIM-Links auf nichts mehr referenzieren, dann sind quasi die Pakete darunter dangling.

01:23:43.710 --> 01:23:45.470
<v Felix>Und dann können die aufgeräumt werden.

01:23:47.310 --> 01:23:53.950
<v Ingo>Jetzt habt ihr gesagt, Nix liegt bald in der Version 17.09

01:23:54.270 --> 01:23:58.750
<v Ingo>vor, aber Nix hat sicher auch eine Versionsnummer.

01:23:59.550 --> 01:24:01.550
<v Ingo>Wie ist da der aktuelle Stand?

01:24:02.030 --> 01:24:04.430
<v Gast 1>Gerade haben wir die 1.11.

01:24:04.750 --> 01:24:05.870
<v Felix>Ich glaube 1.11, ja.

01:24:06.670 --> 01:24:09.470
<v Gast 1>Die 1.12 ist jetzt schon eine ganze Weile in Entwicklung.

01:24:09.550 --> 01:24:12.590
<v Gast 1>Ich weiß gar nicht, seit zwei Jahren oder so, anderthalb Jahren.

01:24:12.910 --> 01:24:14.110
<v Felix>Dafür wird alles besser.

01:24:16.670 --> 01:24:23.390
<v Gast 1>Ich kenne irgendwie gerade nicht so nicht richtig Roadmap, aber was das auf jeden Fall passieren soll,

01:24:23.470 --> 01:24:28.270
<v Gast 1>ist, dass aktuell sind so viele so viele Befehle irgendwie, nix-env,

01:24:28.430 --> 01:24:29.470
<v Gast 1>nix-shell und so weiter.

01:24:29.550 --> 01:24:32.830
<v Gast 1>Das soll alles in eben Befehl zusammengeführt werden, der da nichts heißt.

01:24:32.910 --> 01:24:37.950
<v Gast 1>Also die alten Sachen bleiben halt größtenteils stehen, aber es gibt halt nochmal so einen Befehl,

01:24:38.030 --> 01:24:41.230
<v Gast 1>der das zusammenfasst und die so eine einheitliche Kommandozeilensyntax hat,

01:24:41.310 --> 01:24:42.830
<v Gast 1>so wie bei Git.

01:24:50.190 --> 01:24:55.230
<v Gast 1>Vielleicht kommt das, ich würde das vorgestellt auf der Nix-Con, die im Oktober ist.

01:24:56.190 --> 01:24:58.990
<v Gast 1>Und zwar gibt es halt eine Konferenz in München.

01:24:59.150 --> 01:25:03.550
<v Gast 1>Ich glaube, die Anmeldung ist schon durch, die müsste schon, wahrscheinlich schon die ganzen Tickets weg.

01:25:04.270 --> 01:25:09.470
<v Gast 1>Und es treffen sich halt die ganzen Nix-Entwickler und auch irgendwie Leute, die halt Nix benutzen.

01:25:09.550 --> 01:25:14.270
<v Gast 1>Und es gibt halt Vorträge und ja, wie gesagt, die Konferenz so ist.

01:25:15.550 --> 01:25:17.230
<v Gast 1>Ich werde dann auch dort sein.

01:25:19.790 --> 01:25:22.430
<v Felix>Also es war auch tatsächlich eher eine Entwicklerkonferenz.

01:25:22.510 --> 01:25:27.790
<v Felix>Also es geht viel darum, quasi, wie geht es weiter, was ist der aktuelle Stand,

01:25:28.350 --> 01:25:30.350
<v Felix>was läuft gut, was kann man besser machen.

01:25:31.550 --> 01:25:36.430
<v Felix>Deswegen war es auch so, dass die ersten Tickets an die meisten,

01:25:36.510 --> 01:25:41.870
<v Felix>also die Leute, die am meisten contributed haben, quasi erstmal rausgegangen sind.

01:25:42.110 --> 01:25:45.070
<v Felix>Ich glaube, du warst da in Top 10 oder was, relativ weit oben.

01:25:45.870 --> 01:25:48.110
<v Gast 1>Top 17, Platz 17 oder so.

01:25:48.350 --> 01:25:49.310
<v Felix>Oh, 17, okay.

01:25:49.870 --> 01:25:54.990
<v Felix>Also ging quasi erstmal an die Top-Contributor raus und dann wurde es quasi immer weiter,

01:25:56.190 --> 01:26:03.150
<v Felix>je mehr Contributions du gemacht hast, desto eher konntest du dann auch auf die konntest du dann halt auch

01:26:03.150 --> 01:26:03.950
<v Felix>ein Ticket bekommen.

01:26:04.030 --> 01:26:06.990
<v Felix>Aber ich glaube, am Ende waren trotzdem noch Tickets übrig.

01:26:07.150 --> 01:26:11.470
<v Gast 1>Ja, ich glaube, also es gibt halt noch so einen zweitäglichen,

01:26:12.430 --> 01:26:19.230
<v Gast 1>also die Vorträge konnte man, glaube ich, noch rein, aber dann gab es noch irgendwie so zwei Tage an

01:26:19.230 --> 01:26:20.430
<v Gast 1>nix Projekten hacken.

01:26:20.590 --> 01:26:24.270
<v Gast 1>Ich glaube, da waren bloß ein paar Plätze, das war dann irgendwie voll.

01:26:24.590 --> 01:26:25.150
<v Gast 1>Naja.

01:26:27.070 --> 01:26:30.110
<v Ingo>Ja, im Kaffeenetzwerk, da war ich auch schon mal.

01:26:31.070 --> 01:26:32.270
<v Ingo>Die Netzmünchen.

01:26:33.550 --> 01:26:36.830
<v Gast 1>Also da treffen sich dann auch irgendwie Firmen, die das dann irgendwie einsetzen.

01:26:36.910 --> 01:26:41.950
<v Gast 1>Also es ist halt bei Firmen auch recht beliebt, wenn man irgendwie seine Infrastruktur damit besser in den

01:26:41.950 --> 01:26:43.230
<v Gast 1>Griff bekommt.

01:26:43.790 --> 01:26:48.030
<v Gast 1>Und die sagen dann dann, gibt es halt Vorträge, wo sie dann über ihre Erfahrungen reden,

01:26:48.190 --> 01:26:51.630
<v Gast 1>wie die das dann im Betrieb eingesetzt haben.

01:26:52.190 --> 01:26:58.110
<v Felix>Was sind so große Firmen, die NixPackage oder Nix was

01:26:58.430 --> 01:26:59.310
<v Felix>verwenden?

01:26:59.950 --> 01:27:06.830
<v Gast 1>Also ich weiß, bei Tumpler gab es auf der

01:27:06.830 --> 01:27:10.590
<v Gast 1>Konferenz, es gibt einen Vortrag, der das bei Tumblr benutzt.

01:27:13.790 --> 01:27:15.390
<v Felix>Dann natürlich Mozilla.

01:27:16.030 --> 01:27:21.790
<v Gast 1>Ja, stimmt, es gibt so einen Mozilla-Entwickler, ich glaube Rust, ey, wird Firefox damit gebaut.

01:27:22.830 --> 01:27:27.070
<v Felix>Also die machen ganz, ganz viel im Bereich Continuous Integration, aber es kann schon sein,

01:27:27.150 --> 01:27:28.670
<v Felix>dass sie davon auf wirklich gebaut wird.

01:27:28.990 --> 01:27:33.710
<v Felix>Und da ist auch, wo nix immer als erstes mit eingesetzt würde, weil meistens ist es nicht so,

01:27:33.790 --> 01:27:36.510
<v Felix>dass man das komplette Betriebssystem wechseln kann.

01:27:37.230 --> 01:27:41.870
<v Felix>Aber so in eine Continuous Integration Pipeline so mit reinschmuggeln, das funktioniert.

01:27:42.590 --> 01:27:49.550
<v Gast 1>Naja, da gibt es, glaube ich, auch einen Vortrag drüber, wie man nix auf Arbeit irgendwie teimlich blitzen

01:27:49.630 --> 01:27:51.310
<v Gast 1>kann, dass es jemand mitkriegt.

01:27:51.630 --> 01:27:53.950
<v Felix>Und wenn sie es dann mitbekommen, dann ist es zu spät.

01:27:55.390 --> 01:27:56.830
<v Felix>Und dann geht es nicht mehr raus.

01:27:56.910 --> 01:27:59.710
<v Felix>Weil dann kann man die Continuous Integration Pipeline nicht mehr anfassen.

01:28:01.230 --> 01:28:02.190
<v Gast 1>Was tut er noch?

01:28:02.350 --> 01:28:03.390
<v Gast 1>Also das muss man dann sagen.

01:28:03.470 --> 01:28:06.030
<v Felix>Ja, nee, das ist ja auch geil, also da kann man ja nichts an.

01:28:10.270 --> 01:28:14.350
<v Gast 1>Ja, also es stimmt von den Firmen, es gab mal so eine Liste auf Reddits,

01:28:14.590 --> 01:28:17.230
<v Gast 1>aber viele von den Firmen sind jetzt nicht so bekannt.

01:28:17.310 --> 01:28:23.630
<v Gast 1>Das ist ja nicht so, dass irgendwie Microsoft oder Amazon oder so nichts im großen Stil verwenden würde.

01:28:25.310 --> 01:28:27.870
<v Felix>Mayflower ist, glaube ich, da, wo der Elco ist, oder?

01:28:29.790 --> 01:28:31.630
<v Gast 1>Sitzen die in München oder wo sind die eigentlich?

01:28:31.870 --> 01:28:35.710
<v Felix>Ja, auf jeden Fall hört sich Englisch an, aber es ist deutsch.

01:28:36.750 --> 01:28:38.270
<v Felix>Deutscher Bereich jedenfalls.

01:28:38.590 --> 01:28:44.110
<v Ingo>Gut, aber trotzdem ist die Community in den letzten Jahren gewachsen und es kommen auch immer mehr Firmen

01:28:44.110 --> 01:28:44.590
<v Ingo>hinzu.

01:28:45.870 --> 01:28:47.790
<v Felix>Ah, nee, Logic Blocks ist ja der Echo.

01:28:48.830 --> 01:28:50.590
<v Felix>Mayflower ist hier in Deutschland.

01:28:51.390 --> 01:28:54.110
<v Gast 1>Das war OF Platz oder so mit drei.

01:28:56.990 --> 01:29:01.710
<v Felix>Und natürlich Nixcloud von dem Yoshi.

01:29:05.470 --> 01:29:10.670
<v Gast 1>Also Zahlen habe ich irgendwie nicht so viele, wie viele Leute ich so insgesamt nichts benutzen.

01:29:14.030 --> 01:29:17.550
<v Felix>Aber Contributor ist ja schon eine gute Zahl, kann man ja sagen.

01:29:19.950 --> 01:29:25.790
<v Gast 1>Wenn man normalerweise in irgendwelchen Projekten, wenn man guckt, wie viele Leute tragen wieder was zurück,

01:29:25.870 --> 01:29:27.710
<v Gast 1>dann ist das ja immer bloß ein kleiner Bruchteil.

01:29:27.790 --> 01:29:31.710
<v Gast 1>Also man kann das ja dann irgendwie mindestens mal 10 nehmen oder so.

01:29:32.430 --> 01:29:35.070
<v Gast 1>Um dann die endgültige Zahl zu haben.

01:29:35.470 --> 01:29:38.270
<v Felix>Ja, also ich verlinke das hier einfach mal mit.

01:29:38.590 --> 01:29:42.030
<v Felix>Die Contributor-Statistics, die sieht man auf einem relativ schicken Graphen,

01:29:42.350 --> 01:29:46.030
<v Felix>wie viel quasi contributet wird.

01:29:46.830 --> 01:29:48.350
<v Felix>Sieht auf jeden Fall ganz nice aus.

01:29:48.670 --> 01:29:52.430
<v Felix>Da sieht man auch, wo die Leute wann was gemacht haben, wann sie dazugekommen sind.

01:29:53.550 --> 01:29:54.030
<v Felix>Sehr schön.

01:29:55.070 --> 01:29:55.710
<v Felix>Schöne Grafiken.

01:29:55.950 --> 01:29:57.070
<v Felix>Grafiken sind immer super.

01:30:01.710 --> 01:30:02.350
<v Felix>Perfekt.

01:30:03.230 --> 01:30:09.230
<v Felix>Was jetzt auch neu zu NixPackages dazugekommen ist, ist die Unterstützung für

01:30:09.230 --> 01:30:10.750
<v Felix>ARM64.

01:30:12.190 --> 01:30:13.550
<v Felix>Da ist relativ viel passiert.

01:30:13.630 --> 01:30:16.750
<v Felix>Ich weiß aber nicht, was der aktuelle Stand ist, ob man es schon wirklich annehmen kann.

01:30:17.470 --> 01:30:22.270
<v Gast 1>Also es gibt ja, es gab irgendwie in der Miki-Artikel mal was dazu geschrieben.

01:30:22.590 --> 01:30:26.990
<v Gast 1>Es gibt irgendwie läuft irgendwie auf Raspberry Pi 3 und es gibt ja halt insgesamt noch nicht so viele,

01:30:27.070 --> 01:30:28.110
<v Gast 1>so ARM64-Bot.

01:30:28.270 --> 01:30:29.870
<v Gast 1>Die meisten sind halt noch irgendwie ARM7.

01:30:31.230 --> 01:30:36.750
<v Gast 1>Deswegen, also ich sehe jetzt auch noch nie so viele Sachen, die jetzt speziell gepatcht werden,

01:30:36.910 --> 01:30:39.630
<v Gast 1>dass das jetzt für ARM64 besser funktioniert oder so.

01:30:39.790 --> 01:30:43.230
<v Gast 1>Also ich habe selber auch noch keine Hardware dafür, also ich könnte das auch gar nicht so richtig testen.

01:30:43.550 --> 01:30:49.150
<v Felix>Aber das Coole ist halt, wenn man dann auf dem Stable Channel ist, dann wird das aktuell von der Hydra gebaut,

01:30:49.310 --> 01:30:51.070
<v Felix>jedenfalls quasi die Core-Pakete.

01:30:52.190 --> 01:30:52.910
<v Felix>Alles wird gebaut.

01:30:53.550 --> 01:30:54.190
<v Felix>Alles wird gebaut, ne?

01:30:54.270 --> 01:30:55.790
<v Gast 1>Also alles, was baut, das baut.

01:30:56.190 --> 01:30:58.270
<v Felix>Alles, was baut, das wird gebaut, genau.

01:30:59.710 --> 01:31:01.710
<v Felix>Ja, let's klar.

01:31:02.430 --> 01:31:08.030
<v Gast 1>Ja, also hoffe ich auch mal, dass da vielleicht dieses Jahr nochmal bis zum Ende des Jahres,

01:31:08.110 --> 01:31:12.830
<v Gast 1>dass es da vielleicht nochmal auch irgendwie offizielle Images gibt für Raspberry Pi oder so.

01:31:12.910 --> 01:31:15.630
<v Gast 1>Ansonsten muss ich da nochmal nachgucken, ob ich da mal irgendwo ein.

01:31:16.350 --> 01:31:18.590
<v Gast 1>Ich glaube, das Image wird ja wahrscheinlich bestimmt schon irgendwo gebaut,

01:31:18.750 --> 01:31:20.510
<v Gast 1>das wird halt nur nicht so richtig verlinkt.

01:31:20.670 --> 01:31:25.550
<v Felix>Ja, also es gibt auf jeden Fall den Snippet, aber man kann es halt nur bauen auf ARM64.

01:31:25.710 --> 01:31:27.630
<v Gast 1>Ja, das ist das Problem.

01:31:29.230 --> 01:31:30.430
<v Felix>Genau, das ist das Problem.

01:31:31.630 --> 01:31:35.870
<v Felix>Und auf dem Raspberry Pi bauen ist halt auch so eine Sache, so kannst du schon machen,

01:31:35.950 --> 01:31:38.350
<v Felix>aber du kannst ja auch halt eine Woche freinehmen und das machen.

01:31:38.830 --> 01:31:42.110
<v Gast 1>Man muss es halt nicht komplett bauen, es ist halt nicht nur das Image bauen.

01:31:42.590 --> 01:31:46.670
<v Gast 1>Aber gut, die I.O.-Performance von so einem Raspberry Pi ist jetzt auch nicht so praktisch.

01:31:47.630 --> 01:31:52.990
<v Gast 1>Aber das dauert dann halt, es gehen Stunden, es sind dann halt schon ein paar Minuten mehr wahrscheinlich.

01:31:57.550 --> 01:31:59.790
<v Felix>Also es geht auf jeden Fall in alle Richtungen weiter.

01:32:01.390 --> 01:32:02.910
<v Gast 1>Also wenn man mit Nix anfangen.

01:32:04.350 --> 01:32:10.110
<v Gast 1>Wenn man so mit nix anfangen will, das kann man sich, kann man sich halt auch ganz normal installieren.

01:32:10.270 --> 01:32:14.670
<v Gast 1>Und in einem AWR im Arch gibt es, glaube ich, ein Paket für nix.

01:32:15.550 --> 01:32:22.430
<v Gast 1>Und es gibt auch so einen Einzeiler, wo man das von Curl in seine Shelle reinpipt.

01:32:23.070 --> 01:32:24.750
<v Felix>Oh ja, so wie sich das anhört.

01:32:24.910 --> 01:32:30.510
<v Felix>Du kannst auch erst in eine Datei reingucken, dann verify und dann wieder Shad265-Summe oder so.

01:32:30.750 --> 01:32:33.870
<v Ingo>Einfach direkt aus dem Internet rein.

01:32:35.150 --> 01:32:40.190
<v Gast 1>Und es macht halt nicht so viel, also es ist halt relativ isoliert vom restlichen System.

01:32:40.270 --> 01:32:47.070
<v Gast 1>Also es lebt im Prinzip in slash Nix in einem System und wenn man irgendwie keine

01:32:47.150 --> 01:32:50.830
<v Gast 1>Lust mehr auf nix hat, dann löscht man das Verzeichnis und ist dann wieder alles los.

01:32:52.030 --> 01:32:57.550
<v Ingo>Okay, ich muss dann halt nur meinen Path jeweils anpassen, dass er die Sachen nimmt oder macht er das

01:32:57.550 --> 01:32:57.870
<v Ingo>automatisch.

01:32:58.110 --> 01:33:01.950
<v Gast 1>In der Regel, also wenn man es unter nicht NixOS-System installiert,

01:33:02.110 --> 01:33:08.030
<v Gast 1>dann fügt man noch in der Zeile Shell-Konfigurationen hinzu, die dann so ein Profil source,

01:33:08.430 --> 01:33:10.910
<v Gast 1>wo dann die ganzen Fahrtverbind gesetzt werden.

01:33:10.990 --> 01:33:14.190
<v Gast 1>Und ja, das muss man halt noch mit rausnehmen und dann ist das auch gut.

01:33:14.590 --> 01:33:15.150
<v Gast 1>Ja, genau.

01:33:15.310 --> 01:33:17.470
<v Felix>Also es ist relativ verhalten.

01:33:17.630 --> 01:33:24.110
<v Felix>Also es ist nicht so wie andere Konfigurationssysteme oder andere Paketmanager,

01:33:24.190 --> 01:33:25.870
<v Felix>die sich da dann irgendwo reinkrebeln.

01:33:26.190 --> 01:33:30.270
<v Gast 1>Und es ist halt auch so, wenn man zum Beispiel Programme hat, die jetzt andere Programme brauchen,

01:33:30.510 --> 01:33:35.150
<v Gast 1>dann ist das meistens so, dass die Programme einen eigenen Parfum haben.

01:33:35.310 --> 01:33:38.110
<v Gast 1>Also da gibt es so einen Frepper, so einen Shelf-Frepper drum rum.

01:33:38.350 --> 01:33:40.750
<v Gast 1>Und dann wird das auch wirklich wieder aus Nix benutzt.

01:33:40.830 --> 01:33:45.390
<v Gast 1>Also nee, dass man dann irgendwie, zum Beispiel, man hat irgendwie Git und dann gibt es ja diese ganzen

01:33:45.390 --> 01:33:49.230
<v Gast 1>Git-Unterbefehle, das sind ja alles einzelne Shell-Skripte, dass das irgendwie durcheinander käme,

01:33:49.310 --> 01:33:50.910
<v Gast 1>dass man da irgendwie was vermischt.

01:33:51.070 --> 01:33:52.430
<v Gast 1>Also das passiert dann halt nie.

01:33:53.230 --> 01:33:59.390
<v Gast 1>Weil das, wenn man das aus dem Nix-Store, aus dem Nix-Profil daraus startet,

01:33:59.470 --> 01:34:04.910
<v Gast 1>dann sind die ganzen Programme eigentlich mal so angepasst, dass die dann noch die ganzen Abhängigkeiten

01:34:05.550 --> 01:34:07.710
<v Gast 1>wirklich wieder aus Nix rausziehen.

01:34:08.910 --> 01:34:12.750
<v Felix>Genau, also es ist schon cool isoliert eigentlich.

01:34:15.070 --> 01:34:19.950
<v Ingo>Gut, ich sehe schon, ihr seid auf jeden Fall auf der guten Seite der Macht und wollt,

01:34:20.030 --> 01:34:22.830
<v Ingo>dass jetzt alle Nix zumindest sich mal anschauen.

01:34:24.190 --> 01:34:30.590
<v Ingo>Wie gesagt, es klingt auf jeden Fall interessant, insbesondere wenn man dann halt diese Rollback-Funktionen

01:34:30.590 --> 01:34:33.950
<v Ingo>und sowas benutzen kann und da jederzeit mal reinspringen kann.

01:34:35.230 --> 01:34:39.790
<v Ingo>Und mit Nixos gibt es ja auch ein vollwertiges Linux quasi,

01:34:39.870 --> 01:34:42.830
<v Ingo>was Nix als Paketmanager benutzt.

01:34:43.150 --> 01:34:49.710
<v Ingo>Von dem kann man es entweder erstmal so ausprobieren oder dann halt dementsprechend gleich in die

01:34:49.710 --> 01:34:55.790
<v Ingo>vollen gehen und sich eine Linux-Distribution holen, die halt darauf oder dringsherum aufgebaut ist um Nix.

01:34:56.030 --> 01:35:01.550
<v Gast 1>Also wenn man das volle Nix-Erlebenis haben will, da sollte man dann schon irgendwann mal die NixOS zu NixOS

01:35:01.550 --> 01:35:01.950
<v Gast 1>greifen.

01:35:02.590 --> 01:35:05.310
<v Gast 1>Da hat man wirklich alles pur.

01:35:07.390 --> 01:35:11.230
<v Ingo>Da ist auch egal, ob ich das jetzt auf dem Server, auf dem Laptop überall benutze.

01:35:11.470 --> 01:35:12.990
<v Felix>In der virtuellen Maschine.

01:35:13.390 --> 01:35:14.670
<v Gast 1>In dem Container.

01:35:16.510 --> 01:35:22.910
<v Gast 1>Ja, also ich würde sagen, so eine NixOS-Installation, so vom Komplexitätslevel.

01:35:23.470 --> 01:35:27.150
<v Gast 1>Es ist jetzt nicht so wie bei Ubuntu, dass man irgendwie alles doppelklicken kann,

01:35:27.230 --> 01:35:30.670
<v Gast 1>sondern man muss da schon mal irgendwie in eine Shell gehen, weil es fängt halt damit an,

01:35:30.750 --> 01:35:35.870
<v Gast 1>es gibt halt in dem Handbuch so beschrieben, dass man halt am Anfang erstmal so ein paar Partitionen anlegt

01:35:36.110 --> 01:35:42.990
<v Gast 1>und die nach slash mm Mount mountet und dann dort den Installationsbefehl

01:35:42.990 --> 01:35:43.790
<v Gast 1>startet und ja.

01:35:43.950 --> 01:35:47.310
<v Gast 1>Also es würde sagen, so vielleicht auf der Höhe wie Arch Linux oder so.

01:35:47.950 --> 01:35:50.830
<v Felix>Also ich würde sagen, ja, es ist noch sogar ein Stück weiter drunter,

01:35:50.910 --> 01:35:53.550
<v Felix>weil man nicht so viele Sachen anfassen muss.

01:35:53.710 --> 01:36:00.590
<v Felix>Ja, man muss halt quasi das zum Beispiel bei Arc Linux musst du am Ende immer den fucking Bootloader

01:36:00.590 --> 01:36:01.150
<v Felix>nachinstallieren.

01:36:01.390 --> 01:36:03.230
<v Felix>Und wenn du es nicht gemacht hast, dann bootet dein Scheißsystem.

01:36:03.310 --> 01:36:05.470
<v Felix>Ich weiß nicht, ob es immer noch so ist, aber es war vor zwei Jahren so,

01:36:05.790 --> 01:36:07.870
<v Felix>oder vor drei Jahren, wo ich es letztes Mal gemacht habe.

01:36:08.110 --> 01:36:10.590
<v Felix>Jedenfalls ist es so, oh shit, schon wieder ein Bootloader vergessen.

01:36:10.670 --> 01:36:12.750
<v Felix>Na gut, dann halt nochmal in die Live-CD booten.

01:36:13.230 --> 01:36:18.830
<v Felix>Und das ist halt quasi, dadurch, dass alles in dieser einen Konfiguration drin ist,

01:36:19.470 --> 01:36:25.550
<v Felix>ist es dann auch klar, dass es gemacht werden muss und quasi hilft dir dieser eine

01:36:25.790 --> 01:36:28.030
<v Felix>Config-File bedeutend.

01:36:28.270 --> 01:36:31.790
<v Felix>Also nicht irgendwie fünf oder sechs Files anfassen, sondern eine einzige.

01:36:32.110 --> 01:36:36.030
<v Gast 1>Und es ist halt noch so, dass man, wenn man vergisst, den Bootloader zu konfigurieren,

01:36:36.110 --> 01:36:38.670
<v Gast 1>dass es dann einfach, dass sie installiert, dass er einfach sagt, hier,

01:36:38.750 --> 01:36:39.950
<v Gast 1>du musst dir noch was angeben.

01:36:40.190 --> 01:36:43.310
<v Gast 1>Ich will hier entweder Gruppe oder System D-Boot haben oder so weiter.

01:36:43.470 --> 01:36:45.790
<v Felix>Oder du sagst, dass du wirklich nicht willst, weil du weißt, was du tust.

01:36:46.750 --> 01:36:47.710
<v Felix>Das gibt es ja auch noch.

01:36:49.150 --> 01:36:49.950
<v Ingo>Do SSA.

01:36:50.430 --> 01:36:56.510
<v Ingo>Okay, das ist diese Configuration.nix, die ich dann halt anlegen muss und wo ich alle meine Einstellungen drin

01:36:56.510 --> 01:36:56.750
<v Ingo>mache.

01:36:58.190 --> 01:36:58.430
<v Ingo>Ja.

01:36:58.750 --> 01:37:02.190
<v Felix>Also was mir ja Nix bzw.

01:37:02.510 --> 01:37:08.670
<v Felix>Nix aus verkauft hat, war der Punkt, ich hab

01:37:10.030 --> 01:37:14.910
<v Felix>zwei Leute, mit denen ich quasi Sachen früher zusammen gemacht habe und die haben ihm gesagt,

01:37:14.990 --> 01:37:17.230
<v Felix>okay, benutze Nix aus und das ist super geil.

01:37:17.310 --> 01:37:21.470
<v Felix>Und ich habe dann gesagt, okay, was will ich denn, ja?

01:37:21.710 --> 01:37:26.830
<v Felix>Ich will irgendwie, dass mein System funktioniert und dann, okay, wie mache ich denn das, ja?

01:37:27.230 --> 01:37:31.790
<v Felix>Und die Antwort war, ah, ich nehme einfach das,

01:37:31.950 --> 01:37:35.470
<v Felix>was einer von den beiden schon mal gemacht hat, ja, und ich copy-paste das einfach in mein,

01:37:35.550 --> 01:37:38.670
<v Felix>in meine Konfiguration rein und dann macht das genau das Gleiche.

01:37:38.830 --> 01:37:44.350
<v Felix>Und dann macht es genau das gleiche wie bei denen und alles andere passe ich dann halt so weit an,

01:37:45.230 --> 01:37:47.710
<v Felix>dass es halt läuft, ja.

01:37:48.030 --> 01:37:52.990
<v Felix>Und dieses prozedurale, erstmal Copy-Pasten von irgendjemandem,

01:37:53.070 --> 01:37:57.550
<v Felix>der schon mal fast das Richtige gemacht hat und dann es anpassen, ist halt schon echt ein cooler Ansatz.

01:37:57.630 --> 01:38:03.390
<v Felix>Und es ist nicht so, okay, jetzt musst du 20 Files anfassen in verschiedenen Dingern und alle,

01:38:03.630 --> 01:38:08.030
<v Felix>die schon mal zum Beispiel die PAM-Files angefasst haben, ja,

01:38:08.510 --> 01:38:10.670
<v Felix>die wissen, da muss man Angst haben, ja.

01:38:10.830 --> 01:38:15.230
<v Felix>Weil wenn du das verkackst, ja, dann kannst deinen Computer nicht mehr einloggen, ja.

01:38:15.470 --> 01:38:20.670
<v Felix>Und mit Nixos war das dann halt so weit abstrahiert, dass man sagen konnte,

01:38:20.990 --> 01:38:26.830
<v Felix>ich würde gerne als Authentication-Schritt für SSH

01:38:29.870 --> 01:38:31.310
<v Felix>einen dritten Faktor einstellen.

01:38:31.550 --> 01:38:36.750
<v Felix>Und dann sagt man einfach, quasi dritte Faktor, benutze TOTP,

01:38:36.830 --> 01:38:40.510
<v Felix>also Time-Based One-Time-Passwords, und dann hat das funktioniert.

01:38:40.670 --> 01:38:43.870
<v Felix>Und das ist halt schon echt super nice, ja.

01:38:44.430 --> 01:38:51.070
<v Gast 1>Es gibt dann zum Beispiel auch ein GitHub-Repo, wo jetzt für verschiedene Hardware,

01:38:51.230 --> 01:38:57.470
<v Gast 1>also Plattformen und Laptops und so weiter, für verschiedene Modelle schon so ein Verzeichnis existiert mit

01:38:57.470 --> 01:39:00.830
<v Gast 1>Konfigurationen, die man braucht für diese Hardware, damit die funktioniert.

01:39:00.910 --> 01:39:07.790
<v Gast 1>Also es ist ja nicht immer alles im Gegenskernel drin, weil man meinetwegen irgendeinen komischen Treiber für

01:39:07.790 --> 01:39:09.950
<v Gast 1>seinen WLAN-Chip braucht und so weiter.

01:39:10.030 --> 01:39:15.150
<v Gast 1>Dann kann man sich das dort rauskopieren und hat Sport sich dann halt eine Menge Zeit,

01:39:15.230 --> 01:39:17.390
<v Gast 1>das alles selber sich so zusammenzusuchen.

01:39:17.710 --> 01:39:20.670
<v Felix>Oder halt Körner-Module kompilieren, ja.

01:39:20.910 --> 01:39:26.190
<v Felix>Das, was unter Arc-Linux dieses, keine Ahnung, wie heißt dieses, dieses Paket.

01:39:26.750 --> 01:39:27.470
<v Felix>DKMS.

01:39:27.710 --> 01:39:28.750
<v Felix>DKMS, ja.

01:39:28.990 --> 01:39:31.870
<v Felix>Der größte Cancer, den es überhaupt gibt, ja.

01:39:32.030 --> 01:39:34.590
<v Felix>Weil es, ich, manchmal baut es halt nicht, ja.

01:39:34.670 --> 01:39:36.670
<v Felix>Und man weiß nicht genau wieso und es ist halt kaputt.

01:39:36.910 --> 01:39:41.230
<v Felix>Unter Nixos ist es klar, warum es nicht funktioniert, wenn es mal nicht funktioniert.

01:39:41.310 --> 01:39:45.230
<v Felix>Aber prinzipiell ist es so, es hat einmal funktioniert, das heißt, es wird für immer funktionieren.

01:39:45.310 --> 01:39:47.230
<v Felix>Spätestens wenigstens auf dem Level.

01:39:47.390 --> 01:39:53.310
<v Felix>Und wenn du quasi, wenn halt irgendwas ganz schlimm kaputt geht, macht man halt ein Rollback und wartet,

01:39:53.390 --> 01:39:57.230
<v Felix>entweder dass einer fixt, fixt es selber, oder man nimmt halt für immer die alte Version.

01:39:58.290 --> 01:40:03.250
<v Gast 1>Es war aber bei Archinux so, dass dieses DKMS, dass man das irgendwie so manuell machen musste,

01:40:03.490 --> 01:40:06.130
<v Gast 1>weil dieser Pac-Man halt keine Hooks beherrscht hat.

01:40:06.210 --> 01:40:08.770
<v Gast 1>Das ist halt mittlerweile gefixt, aber das war halt mal so.

01:40:09.010 --> 01:40:13.410
<v Gast 1>Und ich habe halt schon immer irgendwie ZFS als meine Root-Position.

01:40:13.570 --> 01:40:18.370
<v Gast 1>Und dann stand ich dann halt so da mit meinem Archinux-System, hab den Konnel aktualisiert.

01:40:19.410 --> 01:40:20.610
<v Felix>Äh, it's gone.

01:40:21.970 --> 01:40:25.170
<v Gast 1>Irgendwie neu gebootet und auf immer kein ZFS mehr.

01:40:25.330 --> 01:40:28.130
<v Gast 1>Da kann ich keinen Rout-Dateisystem nicht mehr bauen.

01:40:28.210 --> 01:40:32.610
<v Gast 1>Deswegen hatte ich immer dann noch so einen USB-Stick mit einem Arch-Inox mit den ZFS-Treibern drin,

01:40:32.770 --> 01:40:33.650
<v Gast 1>damit es da wieder geht.

01:40:33.810 --> 01:40:40.130
<v Gast 1>Und bei NixOS sage ich halt einfach, ich gebe halt einfach an, dass ich jetzt einen Dateisystem-Mount

01:40:40.690 --> 01:40:46.610
<v Gast 1>habe, der als Typ, als Dateisystem ZFS hat und dann weiß halt NixOS,

01:40:46.690 --> 01:40:49.410
<v Gast 1>dass jetzt muss ich halt in den Könnel, den ich jetzt zum Booten benutze,

01:40:49.490 --> 01:40:51.010
<v Gast 1>auch ein ZFS mit reinbauen.

01:40:51.410 --> 01:40:52.770
<v Gast 1>Es bootet das Ganze ja nie.

01:40:53.410 --> 01:40:54.050
<v Gast 1>Genau, genau.

01:40:54.210 --> 01:40:58.370
<v Ingo>Oder einfach ButterFS nehmen und kein ZFS und keinen DKMS nehmen, dann geht es auch.

01:40:58.530 --> 01:41:01.490
<v Gast 1>Also man braucht dann, es ist dann auch kein DKMS, es ist halt ein richtiges Könnel-Modul,

01:41:01.570 --> 01:41:06.610
<v Gast 1>es ist schon vorgebaut von auf der Hydra und es hat dann halt was noch runtergeladen.

01:41:07.730 --> 01:41:09.730
<v Ingo>Das ist doch bestimmt halb illegal.

01:41:10.530 --> 01:41:11.170
<v Ingo>Pisst.

01:41:14.450 --> 01:41:16.370
<v Felix>Also auf jeden Fall illegal.

01:41:16.530 --> 01:41:17.650
<v Gast 1>Ja, auf jeden Fall illegal.

01:41:17.730 --> 01:41:23.970
<v Gast 1>Also das Ding ist halt, wenn man jetzt irgendwie, wenn es jetzt zu dem Punkt kommen sollte,

01:41:24.050 --> 01:41:27.970
<v Gast 1>wo man das nicht mehr auf dem Server auf Hytrap bauen darf und verteilen darf,

01:41:28.050 --> 01:41:30.850
<v Gast 1>dann sagt man dann halt einfach, nimmt man dann einfach das Fleck raus,

01:41:30.930 --> 01:41:37.490
<v Gast 1>dass es auf Hydrop gebaut wird und dann GitHub halt nichts kaputt, weil einfach jeder sich dann das selber

01:41:37.490 --> 01:41:40.690
<v Gast 1>anfängt zu bauen, also weil Nix dann einfach selber anfängt, das zu bauen.

01:41:40.930 --> 01:41:41.570
<v Gast 1>Ja, genau.

01:41:43.490 --> 01:41:50.450
<v Gast 1>Das ist dann halt auch für proprietäre Programme so, die darf man dann halt oft als Betreiber nie

01:41:50.450 --> 01:41:51.170
<v Gast 1>weitervertreiben.

01:41:51.250 --> 01:41:56.690
<v Gast 1>Also wenn man das Programm dann nie besitzt, zum Beispiel bei irgendwelchen Treibern oder irgendwelcher

01:41:56.850 --> 01:42:01.570
<v Gast 1>proprietärer Software, kann man dann halt in Nix nur die, gibt man halt nur die Bauernleitung rein und dann

01:42:01.570 --> 01:42:05.010
<v Gast 1>sagt man meinetwegen, entweder das lädt es halt, man darf das auch mit angeben,

01:42:05.090 --> 01:42:09.810
<v Gast 1>dass es runtergeladen wird oder es darf nie runtergeladen, es kann nie runtergeladen werden,

01:42:09.970 --> 01:42:13.490
<v Gast 1>weil es irgendwie hinterm irgendeinem Login versteckt ist, dann muss man sich irgendwie erst einloggen,

01:42:13.570 --> 01:42:18.130
<v Gast 1>dann lädt man halt dieses Archiv runter, wo das Programm dran ist,

01:42:18.290 --> 01:42:23.170
<v Gast 1>fügt es sein Nix-Store hinzu und dann kann man danach das Programm über Nix wieder installieren.

01:42:23.490 --> 01:42:23.730
<v Gast 1>Genau.

01:42:23.810 --> 01:42:29.490
<v Felix>Also so ein typischer Fall ist da VirtualBox mit den Oracle Super-Add-ons.

01:42:29.970 --> 01:42:36.210
<v Felix>Was ich bei mir gerade habe, damit USB 3 funktioniert, ist es so, man muss quasi erst diese Super Extensions

01:42:36.370 --> 01:42:37.250
<v Felix>runterladen.

01:42:37.570 --> 01:42:43.970
<v Felix>Das kann man quasi mit Nix machen, sagt man Nix Prefetch und dann die File halt und

01:42:44.530 --> 01:42:49.570
<v Felix>dann den Bild wieder anstarten und dann baut es halt, baut ein System halt VirtualBox zusammen.

01:42:50.050 --> 01:42:55.010
<v Felix>Dadurch, dass mein Laptop halt nicht der super die Pornöseste Maschine ist,

01:42:55.330 --> 01:42:59.010
<v Felix>wird es bei mir auch auf dem Computer quasi vom Kumpel gebaut.

01:42:59.570 --> 01:43:03.410
<v Felix>Und der bietet es dann wieder entsprechend als Binary Cache an.

01:43:03.570 --> 01:43:09.650
<v Felix>Also als quasi als Binärdatei und dann kann mein Laptop es nur noch runterladen und hat nicht irgendwie zwei

01:43:09.650 --> 01:43:11.730
<v Felix>Stunden lang VirtualBox gebaut.

01:43:12.370 --> 01:43:15.330
<v Felix>Und das ist halt schon echt eine coole Sache.

01:43:15.570 --> 01:43:18.850
<v Felix>Genau dieser Zwischenschritt einfach selber bauen, dann geht's halt.

01:43:19.330 --> 01:43:21.650
<v Gast 1>NixOps könnten wir eigentlich nochmal erwähnen an der Stelle.

01:43:21.810 --> 01:43:23.090
<v Felix>Ah ja, das kann man machen.

01:43:23.890 --> 01:43:30.130
<v Gast 1>Also NixOps ist dann was, was dieses Infrastruktur als Code

01:43:30.370 --> 01:43:31.090
<v Gast 1>verwirklicht.

01:43:31.250 --> 01:43:36.050
<v Gast 1>Also dass man so die ganzen verschiedenen Providern,

01:43:36.130 --> 01:43:40.930
<v Gast 1>also Hetzner oder Amazon oder DigitalOcean oder und so weiter,

01:43:41.170 --> 01:43:44.530
<v Gast 1>die haben ja halt alle irgendwie eine Schnittstelle, um zu konfigurieren,

01:43:44.690 --> 01:43:47.890
<v Gast 1>dass man jetzt irgendwie einen Server sich mietet oder hochfahren kann,

01:43:48.050 --> 01:43:50.770
<v Gast 1>erstellen kann mit ein Netzwerk dazu konfiguriert.

01:43:50.930 --> 01:43:52.530
<v Gast 1>Das macht dann halt NixOps.

01:43:52.770 --> 01:43:56.530
<v Gast 1>Und was man dann halt, dann gibt es halt diese Schnittstelle, dass man noch sagen kann,

01:43:56.610 --> 01:44:00.450
<v Gast 1>ich will jetzt auf diese Hardware, die ich jetzt parametrisiert habe,

01:44:00.690 --> 01:44:05.810
<v Gast 1>will ich jetzt die folgende Software installieren und dann gibt man halt seine Nix-Konfiguration an für jede

01:44:05.810 --> 01:44:09.970
<v Gast 1>Maschine und kann dann halt auch Konfigurationen zwischen verschiedenen Maschinen teilen.

01:44:10.050 --> 01:44:13.570
<v Gast 1>Also das kann ja dann meinetwegen auch identisch sein, weil es einfach ein Dienst ist,

01:44:13.650 --> 01:44:15.890
<v Gast 1>der mehrmals repliziert werden muss.

01:44:16.130 --> 01:44:20.530
<v Gast 1>Und dann wird das halt gebaut und über diese Schnittstellen,

01:44:20.610 --> 01:44:27.570
<v Gast 1>über SSH oder was auch immer man da hat, wenn es meinetwegen ein VirtualBox vor

01:44:27.570 --> 01:44:34.530
<v Gast 1>allem ist, die man jetzt mit Software bespielen will, kann man das dann über NixOps drauf deployen.

01:44:35.490 --> 01:44:39.010
<v Ingo>Ist das ein eigenes Kommando oder wie kann ich mir das vorstellen?

01:44:39.170 --> 01:44:40.290
<v Gast 1>Ist so ein eigenes Projekt.

01:44:40.610 --> 01:44:44.450
<v Gast 1>Es ist auch ein Garnin, hat eigentlich mit dem Nix-Paketmanager erstmal nie so viel zu tun,

01:44:44.530 --> 01:44:51.090
<v Gast 1>ist halt in Python geschrieben und das nimmt halt auch so eine nix

01:44:51.170 --> 01:44:57.970
<v Gast 1>geschriebene Konfiguration, wo dann drin beschrieben wird, ich will jetzt zum Beispiel einen Server mit zwei

01:44:57.970 --> 01:45:03.730
<v Gast 1>Gigabyte und der IP-Adresse oder so oder holt ihr eine IP-Adresse bei dem Provider und dann sagt man dann

01:45:04.050 --> 01:45:08.930
<v Gast 1>NixOrbs deploy und man gibt dann halt auch diese Konfiguration damit an,

01:45:09.170 --> 01:45:13.330
<v Gast 1>wo dann ja die NixOSS-Konfiguration dann mit hochgeladen wird.

01:45:13.570 --> 01:45:17.490
<v Felix>Genau, das ist so ein bisschen so wie dieses AWS, also dieses AWS-Tool,

01:45:17.890 --> 01:45:20.690
<v Felix>nur für ganz, ganz viele Provider.

01:45:20.850 --> 01:45:25.650
<v Felix>Und ich meine, das ist schon echt, also das ist auch eine der coolen Sachen.

01:45:25.730 --> 01:45:30.450
<v Felix>Ich habe es tatsächlich noch nicht getestet, außer halt lokal nur quasi einmal für VirtualBox mal was

01:45:30.450 --> 01:45:31.250
<v Felix>gestartet.

01:45:31.490 --> 01:45:36.450
<v Felix>Aber ich kann mir vorstellen, dass man dort dann so komplett, so eine komplette Infrastruktur viel,

01:45:36.530 --> 01:45:42.130
<v Felix>viel einfacher hochziehen kann, quasi, auch migrieren kann von einem Provider zum anderen.

01:45:42.930 --> 01:45:46.290
<v Felix>Einfach nur, weil alles quasi in der gleichen Sparstunde bereit liegt und das Einzige,

01:45:46.370 --> 01:45:48.210
<v Felix>was man wechseln muss, ist quasi der Provider.

01:45:48.690 --> 01:45:52.930
<v Gast 1>Also das ist im Prinzip, was es hinzufügt zu nix, ist das,

01:45:53.010 --> 01:45:58.930
<v Gast 1>was zum Beispiel ein Terraform anbietet, also es ist so eine andere Software von HashiCorp,

01:45:59.170 --> 01:46:05.330
<v Gast 1>die dann halt so die ganzen Provider-Schnittstellen implementiert und eine Art

01:46:05.650 --> 01:46:07.410
<v Gast 1>Konfiguration zusammenfasst.

01:46:07.810 --> 01:46:13.890
<v Gast 1>Also ich habe es mal benutzt für Google Cloud, weil man dort irgendwie kostenlos sich vor Apps erstellen kann

01:46:13.890 --> 01:46:15.490
<v Gast 1>oder so, eine vor allem erstellen kann.

01:46:16.210 --> 01:46:21.570
<v Gast 1>Ich habe da auch mal was per SSH, habe ich auch eine Maschine, wo ich dann Konfigurationen noch rüberlade.

01:46:21.650 --> 01:46:24.210
<v Gast 1>Also ich werde es wahrscheinlich noch ein bisschen ausbauen in Zukunft.

01:46:28.690 --> 01:46:29.010
<v Gast 1>Okay.

01:46:30.610 --> 01:46:33.250
<v Ingo>Ja, habt ihr noch was zu erzählen?

01:46:33.330 --> 01:46:33.970
<v Ingo>Ansonsten.

01:46:34.450 --> 01:46:36.610
<v Felix>Wir haben so viele Sachen noch zu erzählen, aber wie.

01:46:38.690 --> 01:46:40.930
<v Ingo>Ich meine jetzt so nix, nicht so zu deinem Leben.

01:46:41.650 --> 01:46:42.050
<v Ingo>Ups.

01:46:42.290 --> 01:46:44.050
<v Felix>Okay, dann machen wir das später.

01:46:45.570 --> 01:46:47.970
<v Gast 1>Ich bin auch so ein bisschen erkältet eigentlich.

01:46:48.290 --> 01:46:50.130
<v Felix>Aber dafür hörst du dich sehr gut an.

01:46:53.010 --> 01:46:57.890
<v Felix>Ja, also was es noch gibt als coole Projekte, da können wir ganz kurz drüber gehen.

01:46:58.050 --> 01:47:04.450
<v Felix>Es gibt einen Home Manager, weil wir haben ja über Nix ausgeredet, was quasi dein Operating System verwaltet,

01:47:04.530 --> 01:47:09.650
<v Felix>aber dein Home ist ja immer noch klattert und voll mit irgendwelchen ekelhaften State und Konfigurationsfiles

01:47:09.810 --> 01:47:11.330
<v Felix>und Dot-Files und so.

01:47:11.570 --> 01:47:17.810
<v Felix>Und dort gibt es ein Projekt, das nennt sich der Home Manager und der managt halt deine Home-Dot-Files.

01:47:18.370 --> 01:47:23.730
<v Gast 1>Ja, also dass man jetzt, das gibt ja dann verschiedene Sachen, die man seinem Home kooperieren kann.

01:47:24.290 --> 01:47:29.890
<v Gast 1>Zum Beispiel, dass man sich irgendwie Schriftarten dazu installiert oder es gibt ja auch die Möglichkeit,

01:47:30.690 --> 01:47:33.730
<v Gast 1>als Nutzer D-Services zu starten.

01:47:33.810 --> 01:47:40.690
<v Gast 1>Also zum Beispiel, wenn man sich einloggt, dass dann so ein zum Beispiel

01:47:40.690 --> 01:47:46.530
<v Gast 1>ein VC-Server für den eigenen Nutzer gestartet wird oder was gab es auch das?

01:47:47.010 --> 01:47:48.210
<v Unbekannt>Dieses Synaptic.

01:47:49.250 --> 01:47:49.570
<v Unbekannt>Genau.

01:47:49.810 --> 01:47:52.930
<v Felix>Also dieses Multi-Maus- und Tastaturverwenden.

01:47:53.090 --> 01:47:54.050
<v Gast 1>Ja, genau, das ist sowas.

01:47:54.690 --> 01:47:58.530
<v Gast 1>Also es gibt da so verschiedene Dienste, die man auf nur für Nutzerebene machen kann.

01:47:58.610 --> 01:48:01.970
<v Gast 1>Und das kann man dann auch unter nicht NixOS-Systemen benutzen.

01:48:02.850 --> 01:48:07.250
<v Gast 1>Das ist noch ein relativ neues Projekt, das ist jetzt nicht direkt mit in dieser ganzen NixOS-Community drin,

01:48:07.330 --> 01:48:13.570
<v Gast 1>sondern das ist halt so, das macht halt so einen Maintainer und der akzeptiert halt in seinem eigenen Gipf

01:48:13.730 --> 01:48:14.930
<v Gast 1>oder die Pull-Requests.

01:48:15.170 --> 01:48:17.570
<v Gast 1>Aber vielleicht wird das irgendwann nochmal irgendwie zusammengefasst,

01:48:17.650 --> 01:48:23.730
<v Gast 1>dass das dann mit unter der NixOS dem NixOS-Schirm damit zusammenpasst,

01:48:24.130 --> 01:48:25.090
<v Gast 1>gefügt wird.

01:48:26.050 --> 01:48:26.610
<v Gast 1>Genau.

01:48:29.570 --> 01:48:30.610
<v Felix>Was haben wir denn noch?

01:48:31.250 --> 01:48:37.010
<v Felix>Genau, ich habe ja gesagt, es gibt den Binary Cache,

01:48:37.330 --> 01:48:41.010
<v Felix>von dem man sich quasi zentral seine Pakete laden kann.

01:48:41.250 --> 01:48:47.090
<v Felix>Aber man kann auch Sachen machen wie, ich habe auf meinem Laptop ein bestimmtes Tool gebaut,

01:48:47.650 --> 01:48:53.970
<v Felix>quasi fertig kompliert, und ich brauche das jetzt auf meinem Server quasi einfach nur dieses Stück.

01:48:54.130 --> 01:49:00.690
<v Felix>Dann gibt es die Möglichkeit, dieses eine Programm inklusive all der

01:49:00.690 --> 01:49:05.010
<v Felix>Abhängigkeiten über SSH zu kopieren.

01:49:05.250 --> 01:49:07.570
<v Felix>Und zwar nur die Teile, die halt auch wirklich gebraucht werden.

01:49:07.650 --> 01:49:13.010
<v Felix>Das heißt nicht das komplette System, auch nicht nur es wird quasi nichts suppliziert,

01:49:13.090 --> 01:49:16.770
<v Felix>sondern nur die Sachen, die auf dem anderen System wählen, werden dann rüber kopiert.

01:49:16.850 --> 01:49:19.570
<v Felix>Und dann hat man dort auf einmal das Tool zur Verfügung.

01:49:19.810 --> 01:49:25.970
<v Felix>Und es ist schon ziemlich nice, wenn man, besonders wenn man einen Linux-Körner gebaut hat oder so,

01:49:26.130 --> 01:49:27.730
<v Felix>und man will denen nicht nochmal bauen.

01:49:27.890 --> 01:49:30.130
<v Felix>Aber man wird trotzdem alles drüben haben.

01:49:30.210 --> 01:49:34.690
<v Felix>Und man will alles, was man dafür gebraucht hat, auch quasi auf dem anderen System haben.

01:49:34.930 --> 01:49:38.050
<v Gast 1>Ja, im Prinzip, nach dem gleichen Prinzip funktioniert auch dieses Nix-Ops,

01:49:38.210 --> 01:49:41.330
<v Gast 1>da wird dann quasi lokal das System so zusammengebaut.

01:49:41.490 --> 01:49:45.890
<v Gast 1>Und die Sachen, die halt lokal gebaut wurden, also wenn man jetzt irgendwie Konfigurationsdateien erstellt hat

01:49:45.890 --> 01:49:49.170
<v Gast 1>oder so, die werden dann halt hochgeladen und die ganze anderen Sachen,

01:49:49.250 --> 01:49:54.930
<v Gast 1>die es jetzt Systempakete sind, die werden halt halt aus dem Binary Cache runtergeladen.

01:49:55.010 --> 01:49:57.650
<v Felix>Ja, genau, dein Laptop baut quasi deinen Server.

01:49:59.250 --> 01:49:59.970
<v Felix>Schon nice.

01:50:00.530 --> 01:50:03.410
<v Felix>Oder halt ein Server, ein anderer Server baut den Server.

01:50:03.570 --> 01:50:04.130
<v Felix>Fertig.

01:50:11.010 --> 01:50:12.450
<v Felix>Nix IPFS.

01:50:13.250 --> 01:50:17.170
<v Gast 1>Ja, das ist aktuell eher mehr AirSync SIPFS.

01:50:17.730 --> 01:50:24.690
<v Gast 1>Aktuell ist halt der Binair Cache wird auf Amazon Storage auf S3 gespeichert

01:50:24.850 --> 01:50:27.330
<v Gast 1>und S3 hat manchmal S3-Probleme.

01:50:31.010 --> 01:50:35.490
<v Gast 1>Also wenn man jetzt nie die höchste Verfügbarkeit oder so immer auswählt,

01:50:35.570 --> 01:50:38.050
<v Gast 1>dann kann halt auch mal sein, dass das irgendwie mal kaputt geht.

01:50:38.370 --> 01:50:39.810
<v Gast 1>Aus irgendwelchen Gründen.

01:50:39.970 --> 01:50:44.290
<v Gast 1>Und da gab es jetzt nochmal die Idee, dass man das irgendwie mal dezentralisieren sollte,

01:50:44.370 --> 01:50:49.330
<v Gast 1>beziehungsweise dass man Amazon nicht so viel Geld zustecken muss,

01:50:49.650 --> 01:50:52.610
<v Gast 1>wenn man das irgendwie anders geregelt bekommt.

01:50:52.930 --> 01:50:57.250
<v Felix>Es gibt halt viele Leute, die Computer haben in solchen Communities.

01:50:57.730 --> 01:51:03.090
<v Gast 1>Es gibt halt auch viele Unis, die genügend Bandbreite haben und auch Serverschränke,

01:51:03.250 --> 01:51:05.410
<v Gast 1>wo man dann irgendwas spiegeln könnte.

01:51:05.570 --> 01:51:10.130
<v Gast 1>Und da gibt es jetzt halt so ein Projekt, diesen B-Bang-Cache da zu verteilen.

01:51:10.290 --> 01:51:13.970
<v Gast 1>Und das wird jetzt gerade so aufgezwungen, so ähnlich wie bei Arch Linux,

01:51:14.130 --> 01:51:17.410
<v Gast 1>wo man immer diese verschiedenen Murros hat, die man sich eintragen kann.

01:51:17.650 --> 01:51:22.610
<v Gast 1>Beziehungsweise dort ist es eher wie bei Debian, wo man so einen zentralen Redirektor hat,

01:51:22.770 --> 01:51:28.930
<v Gast 1>den man einträgt und der zeigt dem dann immer den Server, der gerade nah an ihm dran ist und

01:51:29.890 --> 01:51:30.850
<v Gast 1>funktioniert.

01:51:31.570 --> 01:51:34.530
<v Gast 1>Dass man automatisch so Failover hat und sowas.

01:51:37.570 --> 01:51:44.530
<v Felix>Und mit IPFS war quasi die Idee, ich weiß nicht, ob das immer noch super stark verfolgt wird,

01:51:44.850 --> 01:51:47.170
<v Felix>war quasi die Idee, alles in IPFS reinzutun.

01:51:47.250 --> 01:51:53.250
<v Felix>IPFS ist quasi dieses verteilte neue Internet, wo man Dateien

01:51:53.890 --> 01:51:55.810
<v Felix>veränderungsfrei ablegen kann.

01:51:55.890 --> 01:51:58.450
<v Felix>Also dass sie sich nicht mehr ändern können auf dem Weg.

01:51:59.890 --> 01:52:04.370
<v Felix>Und dann quasi alle den Binary Cache, aber auch quasi die Quellen,

01:52:04.530 --> 01:52:08.370
<v Felix>die für Dateien verwendet werden, um die zu bauen, dort reinzulegen.

01:52:08.770 --> 01:52:14.210
<v Gast 1>Ja, also es ist ja so ein IP-FS, es ist ja so ein Content-adressierter Netzwerkspeicher.

01:52:14.290 --> 01:52:19.250
<v Gast 1>Also man fragt das Netzwerk, bekomme ich die Datei?

01:52:19.330 --> 01:52:23.730
<v Gast 1>Und dann gibt es dann halt jemanden, der eben die Datei ausliefern kann und man kann dann halt dadurch,

01:52:23.810 --> 01:52:30.450
<v Gast 1>dass man nach dem Hash gefragt hat, kann man dann halt auch hinterher wieder die

01:52:30.850 --> 01:52:33.490
<v Gast 1>Hash-Summe berechnen und gucken, bis man wirklich die Datei bekommen hat,

01:52:33.650 --> 01:52:34.610
<v Gast 1>die man noch angefragt hat.

01:52:34.690 --> 01:52:40.130
<v Gast 1>Und das verteilt sich dann auch übers Internet mit der DHD,

01:52:40.210 --> 01:52:41.730
<v Gast 1>also mit der Distributed Hash Tables.

01:52:41.890 --> 01:52:47.570
<v Gast 1>Das ist so ein bisschen wie bei Torrent, wie da die Zentralität hergestellt wird.

01:52:47.730 --> 01:52:50.450
<v Felix>Genau, das sind die Leute, die die 500 Millionen angesagt haben.

01:52:51.890 --> 01:52:54.850
<v Felix>Wir haben darüber geredet von davor.

01:52:55.250 --> 01:52:57.250
<v Gast 1>Askaliert halt alles irgendwie nicht so richtig.

01:52:58.770 --> 01:53:00.290
<v Felix>Das ist eigentlich das allerbeste, ja.

01:53:00.370 --> 01:53:04.450
<v Felix>Die haben gesagt, ja, wir sind das neue Internet, ja, und alles kann dann in dieses IP-Fest rein und dann,

01:53:04.530 --> 01:53:07.490
<v Felix>wenn du da mal ein paar Millionen Files ablegen willst, bam, we crashed.

01:53:08.450 --> 01:53:10.850
<v Gast 1>Wir haben da irgendwie, also wir haben irgendwie, ich glaube, der Möro,

01:53:11.010 --> 01:53:15.730
<v Gast 1>der mit verschiedenen Releases, da sind wir irgendwie auf 300 noch etwas Gigabyte gekommen.

01:53:15.970 --> 01:53:18.450
<v Gast 1>Und irgendwie gab es da schon Skalierungsprobleme.

01:53:18.770 --> 01:53:22.050
<v Felix>Und das ist halt schon echt schwach für 300 Gigabyte, ich meine, was ist das denn?

01:53:22.450 --> 01:53:27.090
<v Gast 1>Also, wenn es auch irgendwie noch ein paar Petabyte und man sagt, jetzt komme ich mit meinen Metadaten nicht

01:53:27.090 --> 01:53:28.930
<v Gast 1>mehr klar, aber auf der Ebene.

01:53:31.090 --> 01:53:32.210
<v Felix>Es ist noch nicht fertig, ja.

01:53:32.290 --> 01:53:33.330
<v Felix>Aber jetzt haben sie ja Geld.

01:53:36.690 --> 01:53:37.490
<v Felix>Genau.

01:53:39.570 --> 01:53:41.170
<v Felix>Das bringt die Zukunft.

01:53:42.050 --> 01:53:43.330
<v Gast 1>Was bringt die Zukunft?

01:53:44.050 --> 01:53:46.290
<v Felix>Die Nixcon bringt die Zukunft.

01:53:51.330 --> 01:53:54.770
<v Gast 1>Es gibt doch gerade so Bestrebungen, dass man mal Cross-Kompilierung besser macht.

01:53:55.730 --> 01:53:58.930
<v Gast 1>Das war schon mal irgendwie drin, aber es hat halt niemand so richtig gepflegt.

01:53:59.090 --> 01:54:04.210
<v Gast 1>Und jetzt hat sich jemand da mal irgendwie jetzt schon eine ganze Weile damit auseinandergesetzt und hat jetzt

01:54:04.210 --> 01:54:08.530
<v Gast 1>schon so einen riesen Pull-Request mit tausend Dateien, die er da angefasst hat.

01:54:09.090 --> 01:54:15.410
<v Gast 1>Und wenn der ja durch ist, dann kann man dann hoffentlich mal so von jedem System andere

01:54:15.570 --> 01:54:16.770
<v Gast 1>Architekturen bauen.

01:54:17.330 --> 01:54:23.090
<v Felix>War das nicht der, wo quasi ein Q-Emu gestartet wird mit dieser Architektur?

01:54:23.890 --> 01:54:25.170
<v Gast 1>Das ist richtig cross-kompilieren.

01:54:25.250 --> 01:54:25.490
<v Gast 1>Achso, das ist nicht so.

01:54:26.690 --> 01:54:27.410
<v Gast 1>Okay, alles klar.

01:54:27.490 --> 01:54:28.530
<v Felix>Weil das habe ich auch gesehen.

01:54:29.090 --> 01:54:34.130
<v Felix>Das Coole ist ja, dass sobald man das einmal zentralisiert hat, funktioniert das für alle Sachen auf einmal.

01:54:34.210 --> 01:54:36.850
<v Felix>Es ist nicht so, okay, man muss sich jedes Mal wieder damit auseinandersetzen,

01:54:36.930 --> 01:54:43.650
<v Felix>sondern es hat quasi auf einmal Nix-Package, das hat auf einmal das Feature cross-kompilieren.

01:54:43.810 --> 01:54:48.050
<v Felix>Das ist dann quasi ein Flag, wo man sagt, okay, ich möchte jetzt gerne cross-compilen.

01:54:48.130 --> 01:54:50.130
<v Felix>Und dann, bam, macht es das einfach.

01:54:51.730 --> 01:54:54.850
<v Gast 1>Und ja, also darauf hoffe ich eigentlich nochmal, weil das ist eigentlich schon cool,

01:54:54.930 --> 01:54:59.650
<v Gast 1>wenn man irgendwie so sein Raspberry Pi-Image dann einfach auf seinem Laptop zusammenbaut,

01:54:59.730 --> 01:55:06.290
<v Gast 1>wo dann nie komplette Software schon drin ist, die man haben will, und dann kopiert man sich das bloß noch auf

01:55:06.290 --> 01:55:11.250
<v Gast 1>seiner SD-Karte und muss sich dann nicht mehr damit auseinandersetzen,

01:55:11.330 --> 01:55:14.530
<v Gast 1>dass das dann auch noch in ein paar Jahren funktioniert.

01:55:14.610 --> 01:55:19.730
<v Gast 1>Also es gehen ja auch mal gerne bei solchen Klingen, Armboards die SD-Karten kaputt.

01:55:20.770 --> 01:55:27.090
<v Gast 1>Wenn man dann irgendwie so einen Hackerspace hat, wo dann irgendwie alles automatisiert ist und dann überall

01:55:27.090 --> 01:55:32.530
<v Gast 1>irgendwelche Raspberry Piles rumbringen und die dann alle Slapper manuell zu warten,

01:55:32.930 --> 01:55:34.770
<v Gast 1>da will man eigentlich irgendwas Besseres haben.

01:55:35.170 --> 01:55:35.810
<v Gast 1>Genau.

01:55:36.050 --> 01:55:43.010
<v Felix>Also speziell die Config-Files, ja, dass man die einmal zentral auf einem Gerät hat und dann

01:55:43.010 --> 01:55:44.690
<v Felix>eigentlich nur noch die Images bereitstellt.

01:55:44.770 --> 01:55:47.650
<v Felix>Und wenn dann der Raspberry Pi mal wieder verreckt, scheißegal, ja.

01:55:48.210 --> 01:55:51.490
<v Felix>Oder wenn man sagt, okay, wir haben ein viel cooleres Board jetzt, dass man dann sagt,

01:55:51.570 --> 01:55:55.090
<v Felix>okay, ich habe meine Konfigurationsfile und ich baue es einfach für dieses neue Board genau das gleiche,

01:55:55.170 --> 01:55:56.450
<v Felix>die gleichen Features.

01:55:57.570 --> 01:56:01.650
<v Gast 1>Also ich habe zum Beispiel auch meine ganze Konfiguration, habe ich halt neben Gitrepo,

01:56:01.810 --> 01:56:07.410
<v Gast 1>das liegt auf GitHub, das sind halt meine Dot-Files, da ist jetzt dazu geguckt,

01:56:07.730 --> 01:56:13.090
<v Gast 1>jetzt hast du Dot-Files und habe jetzt einfach noch NixOS-Ordner hinzugefügt und jetzt habe ich halt

01:56:14.610 --> 01:56:19.570
<v Gast 1>ein Git-Repo, wo ich meinen ganzen Laptop und meine ganze Infrastruktur drin habe.

01:56:20.770 --> 01:56:27.250
<v Ingo>Okay, und dann hast du nimmst da einfach diese Configuration Nix und der baut

01:56:28.210 --> 01:56:34.690
<v Ingo>damit ein System und zieht sich dann dabei aus dem Repo deine

01:56:34.690 --> 01:56:37.570
<v Ingo>Dot-Files dann noch runter oder machst du das dann manuell?

01:56:37.890 --> 01:56:42.610
<v Gast 1>Ich hab's jetzt gerade so gelöst, dass ich jetzt meine Dot-Files erst runterlade und dann daraus dann das

01:56:43.250 --> 01:56:44.130
<v Gast 1>System baue.

01:56:45.170 --> 01:56:50.610
<v Gast 1>Beziehungsweise habe ich auch eine Beschreibungsdatei, mit der man in ISO bauen kann.

01:56:50.690 --> 01:56:54.290
<v Gast 1>Also man kann dadurch relativ einfach sagen, ich baue jetzt mir ein,

01:56:54.450 --> 01:57:00.370
<v Gast 1>nehme jetzt halt dieses Stück NixOS-Konfiguration, was hat es irgendwie und benutze jetzt als

01:57:00.370 --> 01:57:01.170
<v Gast 1>Installations-Image.

01:57:01.250 --> 01:57:07.090
<v Gast 1>Also ich baue jetzt einfach ein ISO oder ein VM-Image,

01:57:07.250 --> 01:57:10.450
<v Gast 1>was ich jetzt irgendwo auf OpenStack oder so hochlade.

01:57:10.850 --> 01:57:15.890
<v Gast 1>Und dann hat man halt schon so ein fertig konfiguriertes System und kann das dann halt auch ganz normal

01:57:15.890 --> 01:57:16.610
<v Gast 1>updaten.

01:57:16.850 --> 01:57:23.810
<v Gast 1>Und ja, das habe ich dann halt auch mit meinen Dot-Files rum drin liegen und ich kann dann halt

01:57:23.810 --> 01:57:26.370
<v Gast 1>von meinem alten System dann mein neues System bauen.

01:57:26.610 --> 01:57:26.850
<v Gast 1>Genau.

01:57:26.930 --> 01:57:28.930
<v Felix>Also bei mir sieht es gerade so aus.

01:57:29.090 --> 01:57:33.330
<v Felix>Mein Laptop hat die Konfiguration hat auch die Konfiguration von all meinen Servern,

01:57:33.570 --> 01:57:38.930
<v Felix>die ich halt so rumstehen habe oder mein Computer zu Hause oder dem anderen Laptop,

01:57:39.010 --> 01:57:42.770
<v Felix>den ich noch bei mir im Schrank habe, es liegt alles auf einem auf meinem Laptop gerade.

01:57:44.690 --> 01:57:50.530
<v Felix>Jeder Server, jedes Gerät hat halt bestimmte Konfigurationen, haben so ein bisschen geteilte Konfiguration und

01:57:51.330 --> 01:57:58.210
<v Felix>wenn ich es quasi, wenn ich ein System updaten will, dann mache ich quasi einen Airsyn-Kan und

01:57:58.210 --> 01:58:03.490
<v Felix>mache dann so einen Rebirth-Switch mit der neuen Konfiguration, die ich davor rüberkopiert habe.

01:58:03.810 --> 01:58:06.050
<v Felix>Und es funktioniert eigentlich echt gut.

01:58:07.410 --> 01:58:12.450
<v Felix>Das Praktische dabei ist es halt, wenn man nicht Auto-Updates haben möchte,

01:58:13.810 --> 01:58:18.930
<v Felix>dann ist es trotzdem so, wenn man so einen zentralen Stand von seinen Quellen hat,

01:58:19.250 --> 01:58:23.410
<v Felix>die dann immer rüberkopiert und dann den Switch macht, dann ist es auch bei einer Konfiguration so,

01:58:23.490 --> 01:58:29.890
<v Felix>dass dann die Pakete geupdatet werden, auch genau, dann ist es so ein quasi

01:58:29.890 --> 01:58:32.850
<v Felix>automatische Updates bei jedem um Konfigurieren.

01:58:33.810 --> 01:58:37.090
<v Gast 1>Das ist halt doch so, das ist so ein Ding, was normale Paketmanager gar nicht machen.

01:58:37.250 --> 01:58:42.450
<v Gast 1>Oder was halt schwierig ist, wenn man irgendwie seine eigene Konfiguration mit hinzufügt,

01:58:43.170 --> 01:58:47.410
<v Gast 1>dann hat man ja immer das Problem, man hat irgendwie ein Programm und das Programm wird jetzt abgedatet.

01:58:47.490 --> 01:58:53.490
<v Gast 1>Es hat jetzt eine neue Konfigurationseinstellung oder alte sind weggefallen.

01:58:53.570 --> 01:58:57.650
<v Gast 1>Und jetzt muss man das irgendwie schaffen, dass man das gleichzeitig hinkriegt.

01:58:57.810 --> 01:58:59.890
<v Gast 1>Also es ist dieses atomare Updaten.

01:59:00.050 --> 01:59:02.930
<v Gast 1>Und dort ist also bei Nix ist es halt so dadurch, dass Konfigurationen und,

01:59:03.090 --> 01:59:07.410
<v Gast 1>oder bei NixOS ist es so, dass Konfigurationen und Programmversionen,

01:59:07.570 --> 01:59:11.810
<v Gast 1>das ist halt alles, liegt halt alles, wird halt alles vom Paketmanager verwaltet und deswegen wird das so

01:59:11.890 --> 01:59:13.730
<v Gast 1>alles zusammen abgedradet und downgegradet.

01:59:13.810 --> 01:59:14.850
<v Gast 1>Das ist halt auch so, ja.

01:59:15.010 --> 01:59:20.610
<v Gast 1>Es ist halt dann die SSH-Konfiguration ist halt dann synchron mit dem Paket, was man dazu installiert.

01:59:22.770 --> 01:59:28.610
<v Ingo>Und diese geteilten Versionen oder geteilten Informationen,

01:59:28.770 --> 01:59:30.770
<v Ingo>die kann man dann über Includes lösen, oder?

01:59:30.930 --> 01:59:36.450
<v Felix>Also wenn du, Felix, du hast gerade gesagt, ähm, du importierst die dann, genau.

01:59:36.530 --> 01:59:42.290
<v Felix>Es sind dann so Imports und da sagst du dann, okay, das System besteht aus folgender Konfiguration,

01:59:43.330 --> 01:59:47.410
<v Felix>aus diesen ganzen Imports und aus ein bisschen Spezialkonfigurationen,

01:59:47.490 --> 01:59:48.450
<v Felix>die halt der Computer braucht.

01:59:49.790 --> 01:59:54.030
<v Felix>Und speziell jetzt zum Beispiel bei VPS, also bei Virtual Private Servern,

01:59:54.270 --> 01:59:59.230
<v Felix>die haben halt immer eine ganz spezielle IP-Adresse und die steht dann halt entsprechend dort da drin.

01:59:59.310 --> 02:00:02.350
<v Felix>Oder wenn das mit Nix auf dem Master-Zeit verwaltet, genau.

02:00:02.750 --> 02:00:06.190
<v Gast 1>Es gibt dann auch so Profile, zum Beispiel wenn man eine VM hat, gibt es halt ein,

02:00:06.510 --> 02:00:11.630
<v Gast 1>in Nix-Packages gibt es halt ein Profil für Coemo oder Maschinen,

02:00:11.710 --> 02:00:13.550
<v Gast 1>die in einer virtualisierten Umgebung laufen.

02:00:13.630 --> 02:00:18.750
<v Gast 1>Dann werden dann halt schon direkt die ganzen virtualisierten, also die ganzen Treiber,

02:00:18.830 --> 02:00:22.350
<v Gast 1>die man für Virtualisierung braucht, Menschen mit installiert und geladen,

02:00:22.430 --> 02:00:24.590
<v Gast 1>dass das dann damit funktioniert.

02:00:24.750 --> 02:00:29.550
<v Gast 1>Also wenn man einen NixOS-Install ausführt, zum Beispiel, also dieses Installationsroutine,

02:00:29.950 --> 02:00:33.470
<v Gast 1>ah nee, Quatsch, NixOS Generate-Config oder so.

02:00:35.310 --> 02:00:39.470
<v Gast 1>Erkennt der, erkennt dieses Skript dann halt auch so schon bestimmte Hardware,

02:00:39.550 --> 02:00:45.230
<v Gast 1>die man benutzt und bestimmte Kernel-Module und schreibt dann so eine Konfiguration,

02:00:45.470 --> 02:00:49.470
<v Gast 1>wo man dann schon die ganzen, also die wichtigen Treiber, die man jetzt zum Booten braucht,

02:00:49.630 --> 02:00:50.590
<v Gast 1>schon mit drin stehen.

02:00:51.310 --> 02:00:56.190
<v Felix>Es wäre halt blöd, wenn dein Raid nicht hochkommt, weil du über den Treiber vergessen hast und das würde da

02:00:56.190 --> 02:00:58.110
<v Felix>halt erkannt werden.

02:01:03.550 --> 02:01:04.750
<v Felix>Ja, gut.

02:01:06.910 --> 02:01:07.230
<v Felix>Ja.

02:01:08.510 --> 02:01:10.350
<v Ingo>Haben wir es soweit?

02:01:12.110 --> 02:01:12.750
<v Ingo>Ich denke schon.

02:01:13.230 --> 02:01:13.550
<v Ingo>Oder?

02:01:13.790 --> 02:01:14.270
<v Ingo>Ich denke.

02:01:15.550 --> 02:01:15.870
<v Ingo>Ja.

02:01:17.230 --> 02:01:21.150
<v Ingo>Also probiert es einfach mal aus, wenn euch das jetzt interessiert hat.

02:01:21.390 --> 02:01:25.870
<v Ingo>Wenn ihr denkt, okay, klingt ganz sinnvoll, dieses Nix und dieses Nix-S.

02:01:26.350 --> 02:01:29.710
<v Ingo>Dann natürlich einfach mal runterladen, ein bisschen mal rumspielen.

02:01:31.310 --> 02:01:36.750
<v Felix>Im IRC-Channel kann man relativ gut auch Anfängerhilfe finden,

02:01:36.910 --> 02:01:39.710
<v Felix>muss man halt drauf warten, dass jemand antwortet.

02:01:41.310 --> 02:01:42.670
<v Felix>Es ist halt ein asynchrones Medium.

02:01:43.310 --> 02:01:46.270
<v Felix>Es ist kein Live-Chat mit einer Salesperson.

02:01:46.990 --> 02:01:48.030
<v Felix>Das darf man nicht vergessen.

02:01:49.710 --> 02:01:52.510
<v Gast 1>Oder man macht ein Issue auf oder so, wenn man einen Fehler gefunden hat.

02:01:54.270 --> 02:01:57.790
<v Gast 1>Wenn man irgendein Programm fehlt, kann man einfach einen Pull-Request aufmachen.

02:01:58.350 --> 02:02:02.190
<v Gast 1>Das ist eigentlich auch sowas, also man muss nie erst irgendwie einen Maintainer-Status aufsteigen,

02:02:02.270 --> 02:02:08.030
<v Gast 1>sondern man kann einfach Pakete submitten und dann kümmert sich da niemand drum.

02:02:09.230 --> 02:02:09.550
<v Gast 1>Okay.

02:02:10.270 --> 02:02:14.510
<v Ingo>Man sollst natürlich erstmal die README lesen und die Sachen erstmal machen und wahrscheinlich gibt es auch

02:02:14.590 --> 02:02:19.550
<v Ingo>zigtausend verschiedene Blog-Einträge, die einem beschreiben, wie man das Zeug alles aufsetzt und benutzt.

02:02:20.110 --> 02:02:24.030
<v Ingo>Ansonsten sich die Konfiguration irgendwo zusammenklauen, habe ich jetzt gelernt.

02:02:24.590 --> 02:02:26.510
<v Felix>Das ist super, eins der besten Sachen.

02:02:26.750 --> 02:02:30.270
<v Felix>Nehmt einfach eine Konfiguration, die funktioniert und dann baut ihr darauf an.

02:02:30.590 --> 02:02:34.750
<v Gast 1>Ich habe zum Beispiel von Felix in die Konfiguration mir gemobst,

02:02:37.950 --> 02:02:41.870
<v Gast 1>wenn der Computer hochfährt und es gibt Netzwerk, dann fängt die an,

02:02:42.030 --> 02:02:48.430
<v Gast 1>sich einen Tolkien-Service aufzusetzen und in ein EAC reinzuschreiben,

02:02:48.830 --> 02:02:52.670
<v Gast 1>also den Hostnamen, der sich ja dann über dieses Anien-Netzwerk da ergibt,

02:02:52.750 --> 02:02:54.670
<v Gast 1>also diese Punkt-Anien-Adressen.

02:02:54.910 --> 02:03:01.310
<v Gast 1>Die sind ja dann, die werden ja abgeleitet vom Key, der für das Talk-Netzwerk generiert wird.

02:03:01.390 --> 02:03:04.270
<v Gast 1>Und ja, das wird dann halt im EAC announced und damit kann man halt irgendwie,

02:03:04.430 --> 02:03:08.270
<v Gast 1>man hat irgendwie ein komisches Netzwerk, will dann irgendwie einen Rechner einrichten,

02:03:08.350 --> 02:03:12.430
<v Gast 1>zum Beispiel auf den Kongress kommt das gerne mal vor, dass man irgendwie so einen Server da hinstellt und

02:03:12.430 --> 02:03:17.630
<v Gast 1>dann ist man aber nie so richtig, welche IP-Adresse das Teil jetzt bekommen hat.

02:03:18.750 --> 02:03:24.190
<v Gast 1>Und ja, dann announce ich das in den Channel rein und kann man dann per SSH sich drauf einloggen.

02:03:24.430 --> 02:03:24.750
<v Gast 1>Genau.

02:03:25.390 --> 02:03:27.790
<v Gast 1>Das Modul, das habe ich einfach kopiert und ja.

02:03:28.110 --> 02:03:28.590
<v Gast 1>Ja, genau.

02:03:28.670 --> 02:03:32.910
<v Felix>Also ich habe das bei mir für ISOs, also wenn ich so eine Live-ISO habe,

02:03:33.070 --> 02:03:37.790
<v Felix>möchte ich quasi nur davon booten und es soll ein SSH hochkommen mit Tor,

02:03:38.430 --> 02:03:43.550
<v Felix>sich announcen und dann kann ich mich mit meinem SSH Public, ähm, Private Key halt quasi auf dem System

02:03:43.790 --> 02:03:44.510
<v Felix>einloggen.

02:03:44.750 --> 02:03:49.710
<v Felix>Und das ist schon echt super convenient, weil du brauchst nicht mehr diesen ganzen Quatsch mit irgendwie,

02:03:49.790 --> 02:03:50.430
<v Felix>ja, jetzt musst du.

02:03:50.830 --> 02:03:54.590
<v Gast 1>Noch mein mein Handy oder so, wo ich jetzt noch die Seite vom ArchWiki auf habe.

02:03:56.430 --> 02:03:57.310
<v Felix>Genau, sowas, ja.

02:03:58.030 --> 02:04:01.550
<v Gast 1>Oder TTY dann das Manuel das Wiki lesen oder sowas.

02:04:01.950 --> 02:04:04.750
<v Felix>Genau, also es ist schon echt super, super convenient.

02:04:04.910 --> 02:04:09.310
<v Felix>Und das ist halt einfach so, ja, Copy-Paste von coolen Leuten und bam, habt ihr coole Sachen.

02:04:09.630 --> 02:04:15.710
<v Gast 1>Es gibt jetzt ein Wiki, es gibt ein Wiki, es gibt ein Handbuch, also nixos.wiki und ja,

02:04:15.870 --> 02:04:18.110
<v Gast 1>das Handbuch gibt es auf nixos.org.

02:04:18.350 --> 02:04:20.670
<v Felix>Genau, die drei Handbücher, genau.

02:04:22.830 --> 02:04:24.830
<v Ingo>Noch so irgendeinen Blog oder so, was man empfehlen kann.

02:04:26.590 --> 02:04:32.350
<v Felix>Es gibt einen relativ coolen Blog, beziehungsweise es ist eine Serie von Blogposts,

02:04:32.670 --> 02:04:33.870
<v Felix>die Nix Pilzt.

02:04:34.190 --> 02:04:40.990
<v Felix>Und das ist, wenn man quasi Nix, die Programmiersprache mal anfangen will quasi

02:04:41.230 --> 02:04:41.870
<v Felix>durchzumachen.

02:04:41.950 --> 02:04:44.110
<v Felix>Und das ist der Tutorial-Style.

02:04:44.270 --> 02:04:50.430
<v Felix>Das heißt, am Ende hat man einen relativ coolen Überblick, was Nix macht und wie es

02:04:50.990 --> 02:04:55.550
<v Felix>quasi funktioniert und wie Dinge zusammenpassen.

02:04:56.750 --> 02:05:01.870
<v Gast 1>Genau, diese Nix-Pills, die wurden auch mittlerweile auf nixos.org nochmal neu integriert,

02:05:01.950 --> 02:05:03.070
<v Gast 1>weil das ist ja auch.

02:05:03.310 --> 02:05:04.030
<v Gast 1>War zu cool.

02:05:04.990 --> 02:05:07.630
<v Gast 1>Damit es auch mal aktualisiert wird, also dass das nicht bloß ein Blogartikel ist,

02:05:07.710 --> 02:05:10.350
<v Gast 1>der da so im Raum steht, weil dass das auch angepasst wird.

02:05:12.270 --> 02:05:13.630
<v Felix>Sehr, sehr cool.

02:05:14.270 --> 02:05:19.790
<v Ingo>Gut, dann habt ihr jetzt Anlaufstellen und wenn nicht, könnt ihr natürlich auch hier in die Kommentare

02:05:19.790 --> 02:05:25.310
<v Ingo>reinschreiben, wenn euch dann noch, wenn da Fragen unbeantwortet sind,

02:05:25.390 --> 02:05:30.270
<v Ingo>sozusagen, sowohl hier für die Sendung als auch wenn ihr wahrscheinlich Probleme noch habt bei Nix,

02:05:30.430 --> 02:05:34.750
<v Ingo>dann Jörg und Felix werden da vielleicht ab und zu nochmal reingucken.

02:05:35.390 --> 02:05:42.190
<v Ingo>Dann bedanke ich mich bei Jörg, bei dir, dass du uns Rede und Antwort hier gestanden

02:05:42.190 --> 02:05:47.710
<v Ingo>hast zum Thema Nix, Nixos und wie das alles so zusammenhängt.

02:05:48.110 --> 02:05:50.510
<v Ingo>War, glaube ich, ganz interessant, das mal zu sehen.

02:05:50.830 --> 02:05:54.110
<v Ingo>Wie gesagt, ich habe gelernt, Konfiguration zusammenklauen ist ganz gut.

02:05:54.350 --> 02:05:54.750
<v Ingo>Es funktioniert.

02:05:55.950 --> 02:06:00.030
<v Ingo>Nachdem ich bei der ersten Installation von Nixos schon eine Weile gebraucht habe,

02:06:00.110 --> 02:06:02.350
<v Ingo>bis das so nach und nach zusammen ist.

02:06:02.430 --> 02:06:03.950
<v Ingo>Das ist, glaube ich, ein guter Tipp.

02:06:04.510 --> 02:06:06.590
<v Ingo>Das nächstes Mal steige ich dann gleich so ein.

02:06:06.910 --> 02:06:09.790
<v Felix>Im Wiki gibt es eine Liste von coolen Konfigurationen.

02:06:09.870 --> 02:06:13.150
<v Felix>Also da gibt es quasi verschiedene Leute, die haben verschiedene Use Cases natürlich.

02:06:13.470 --> 02:06:18.670
<v Felix>Manche haben, manche konfigurieren ihre Server, manche ihre Laptops und manche halt verschiedene Sachen.

02:06:19.710 --> 02:06:26.670
<v Felix>Und da gibt es quasi eine Collection von Leuten, die sowas halt in

02:06:26.670 --> 02:06:29.390
<v Felix>GitHub oder bei sich selber zu liegen haben.

02:06:29.710 --> 02:06:32.910
<v Gast 1>Es gibt jetzt auch schon so einen Trend, das jetzt irgendwie, wie bei,

02:06:32.990 --> 02:06:37.470
<v Gast 1>wie man das von Konfigurationsmanagementsystemen kennt, wie bei Ansible oder so,

02:06:37.550 --> 02:06:42.110
<v Gast 1>wo es dann die Playbooks gibt, dass dann jetzt Leute anfangen, sich zum Beispiel auf einen Dienst zu

02:06:42.110 --> 02:06:46.350
<v Gast 1>fokussieren, zum Beispiel jetzt einen Mail-Server konfigurieren, dann bauen die halt,

02:06:46.590 --> 02:06:50.110
<v Gast 1>machen die halt nicht plus, das ist jetzt so, dass man jetzt ein Plus ein Modul hat,

02:06:50.190 --> 02:06:52.670
<v Gast 1>mit dem man jetzt einzelnen Post-Twix konfiguriert, dann hat man ein anderes Modul,

02:06:52.750 --> 02:06:56.910
<v Gast 1>was jetzt ein DAF-Code konfiguriert, sondern was dann schon so eine Kombination von den Geallen macht und

02:06:56.910 --> 02:07:01.950
<v Gast 1>schon so eine sinnvolle Zusammenstellung zusammenbaut und dass man dann halt noch die Module,

02:07:02.110 --> 02:07:06.030
<v Gast 1>äh, die Optionen, die man jetzt anpassen muss, meinetwegen den Postnamen oder so,

02:07:06.270 --> 02:07:10.590
<v Gast 1>dass man das noch selber setzen muss, dann, wenn man das importiertes Modul.

02:07:10.910 --> 02:07:16.110
<v Gast 1>Und ansonsten ist das dann halt schon noch fertiger, also war dann halt schon ein bisschen

02:07:17.710 --> 02:07:20.110
<v Gast 1>fortgeschritten, was es dann einrichtet.

02:07:20.670 --> 02:07:20.990
<v Gast 1>Okay.

02:07:21.790 --> 02:07:22.110
<v Gast 1>Genau.

02:07:22.350 --> 02:07:24.990
<v Ingo>Ja, das ist vielleicht auch eine nette Richtung.

02:07:25.070 --> 02:07:25.550
<v Ingo>Ja, zum Beispiel.

02:07:25.710 --> 02:07:32.190
<v Felix>Oder, oder halt auch sowas wie, ich hätte gern ein Real-Time-Audio-Linux quasi

02:07:32.190 --> 02:07:32.990
<v Felix>eingerichtet.

02:07:33.070 --> 02:07:35.550
<v Felix>Und dafür gibt es dann auch Moose Nix zum Beispiel.

02:07:37.070 --> 02:07:41.870
<v Felix>Genau, das importiert man dann und dann kann man sagen, enable Moose Nix.

02:07:42.030 --> 02:07:45.950
<v Felix>Und dann macht er all diese komischen Real-Time-Kernel-Sachen, wo man sich erst irgendwie,

02:07:46.030 --> 02:07:48.910
<v Felix>keine Ahnung, wie viele Wochen reinlesen müsste, bis man das alles verstanden hat.

02:07:49.470 --> 02:07:51.070
<v Felix>Und das ist halt schon echt super nice.

02:07:51.150 --> 02:07:55.390
<v Felix>Oder es gibt einen Mail-Server als Modul,

02:07:55.550 --> 02:08:00.430
<v Felix>der das komplett, den Mail-Server komplett fertig konfiguriert mit

02:08:01.950 --> 02:08:07.310
<v Felix>Dovecode, mit diesen ganzen Zertifikaten, mit Clam AV, mit OpenDCAM.

02:08:07.870 --> 02:08:10.190
<v Felix>Und das quasi alles für dich.

02:08:10.510 --> 02:08:13.790
<v Felix>Indem du sagst, Enable Server für diese Datomain.

02:08:17.950 --> 02:08:18.670
<v Felix>Interessant.

02:08:19.310 --> 02:08:24.430
<v Ingo>Gut, dann würde ich jetzt hier trotzdem mal einen Schleife drum machen und sagen,

02:08:24.670 --> 02:08:28.670
<v Ingo>wie gesagt, guckt euch nichts Neues an, wenn es euch interessiert.

02:08:30.110 --> 02:08:32.510
<v Ingo>Vielen Dank, Jörg.

02:08:32.670 --> 02:08:34.190
<v Ingo>Vielen Dank, Felix.

02:08:34.590 --> 02:08:37.230
<v Ingo>Und ich wünsche euch wie immer eine frohe Zeit.

02:08:37.310 --> 02:08:39.470
<v Ingo>Passt auf euch auf, habt Spaß.

02:08:40.110 --> 02:08:40.750
<v Ingo>Angerät.

02:08:41.150 --> 02:08:41.950
<v Felix>Ich mach das gut.

02:08:42.590 --> 02:08:43.390
<v Ingo>Wunderbar.

02:08:43.870 --> 02:08:48.270
<v Ingo>Das war die Spezialausgabe Nummer 7 zum Thema Nixos.

02:08:48.510 --> 02:08:48.910
<v Ingo>Vielen Dank.

02:08:48.990 --> 02:08:49.470
<v Ingo>Ciao, ciao.
