So, herzlich willkommen. Sebastian hier und ich sitze zusammen mit Jörg gerade in einem Zelt auf dem Chaos Communication Camp und wir wollten heute mal das Thema Nix, NixOS und einiges außenrum machen. Jörg, dann stell du dich erstmal vor.
Hallo, ich bin der Jörg. Ich bin ja schon eine ganze Weile im Nixos-Umfeld unterwegs.
Ich habe erst so eine akademische Laufbahn gemacht, wo ich mich viel mit Betriebssystemen auseinandergesetzt habe.
Und dort haben wir halt auch viele Server und so weiter gehabt.
Und weil ich mich auch viel mit Virtualisierung auseinandergesetzt habe,
habe ich dann das so als das Betriebssystem meiner Wahl installiert.
Und während ich an meinem Doktor gearbeitet habe, auch dann viel an dieser Community gearbeitet, an Paketreviews und so weiter.
Und mittlerweile verdiene ich halt auch mein Geld damit.
Damit. Ich helfe quasi Firmen, wenn sie Nixels installieren wollen oder gewisse Dinge in dem Ökosystem.
Wie bin ich dazu gekommen? Ich wollte halt immer irgendwas ...
Ich hatte halt am Anfang viel mit Containern gearbeitet und hatte da so eine Archilox-Laufbahn
und hatte dann noch Container damit erstellt.
Es war immer voll der Krampf, diese Container aufzusetzen und in Synchronisation zu halten.
Man installierte auch immer alles doppelt. Dann hab ich so nichts als die Möglichkeit gesehen,
dass ich zwischen den Containern so Pakete teilen kann auf eine einfache Art und Weise.
Und dann hab ich dann ja das angefangen damit zu prototypen und dann habe ich gesehen,
eigentlich brauche ich diese Container gar nicht, weil nix an sich schon das System so schön voneinander isoliert,
dass ich es einfach gar nicht mehr brauche und ja.
Da gehen wir schon ziemlich tief in das Thema ein. Auf jeden Fall, das heißt so deine Laufbahn mit mit Linux, du hast vorneweg,
du hast gerade erwähnt, du hast mit Arch schon mal gearbeitet davor.
Wann bist du oder wie bist du denn überhaupt zu Linux an sich gekommen Oder ist das auch erst beim Studium passiert?
Das war schon während der Schulzeit tatsächlich.
Ich glaube, ich habe, das ist tatsächlich so, bei der Chaos Computer Club Schiene, da hatte ich so.
In dem Bereich gab es so viele Podcasts und die haben dann halt so diese Dinge erzählt und dann wurden auch verschiedene Softwareprojekte vorgestellt.
Und ja, ich habe dann mit Programmieren angefangen und ich glaube,
dass ich hatte dann so ein C++ Programmiervideo und das, die haben das dann dann gezeigt.
Okay, so installiert man das unter Windows, was ich damals benutzt habe und jetzt so installiert man das unter Ubuntu und dann habe ich geguckt, okay, was ist dieses Ubuntu überhaupt?
Und ja, so bin ich halt dann irgendwie über verschiedene Linux-Distributionen gesprungen, was man so als Jugendlicher macht, wenn man viel Zeit hat. Und ja.
Alles mal ausprobiert und dann irgendwann bei Arch Linux gehangen.
Ja, so sieben Jahre lang und ja.
Dann hast du, dann hast du NixOS für dich entdeckt und bis jetzt, hängst jetzt da rum.
Ja, ja, das ist auf jeden Fall ein Vollzeitprojekt, sowohl mein Hobby als auch...
Gut, wir fangen vielleicht mal von ganz vorne an. NixOS baut ja auf dem Nix Package Manager auf.
Vielleicht fangen wir erst mal an, was ist Nix eigentlich oder was ist diese Idee dahinter?
Also was macht das so besonders?
Ja, also viele Paketmanager, die haben halt... Ja, man installiert irgendwie einen Paketnamen oder was weiß ich, zum Beispiel das Ping-Utils oder so,
da hat man den Ping-Command und da gibt's halt einen Pfad im Dateisystem, wo dieses Ping installiert wird.
Zum Beispiel user.bin.ping, also das ist eine Dateifad. Ist jetzt blöd, wenn man jetzt ein anderes Ping zum Beispiel hätte.
Also, kann man das quasi nicht installieren, weil das steht halt alles im Konflikt miteinander.
Wie nix das löst ist quasi, dass jedes Programm, was man installiert, einen eigenen Pfad bekommt.
Selbst wenn man das gleiche Programm in verschiedenen Versionen hat, ist es immer ein Pfad.
Wie funktioniert das?
Nix hat quasi eine Bauanleitung, die sieht, wo es für das Paket zuständig ist,
und über diese Bauanleitung, inklusive aller Bibliotheken, kann es ein Hash berechnen, das ist quasi ein kurzer,
hexadezimaler String, also ein String mit hexadezimalen Zeichen,
Und dieser Hash ist dann quasi so lang genug, damit es zufällig, also dass es keine Kollision
zwischen verschiedenen Paketen gibt.
Und dieser Hash wird quasi Teil des Dateifades. Und darüber kann man halt sorgen,
dass wenn man zum Beispiel Pakete hat und die leicht anpasst und nochmal neu baut und installiert,
bekommen die immer einen anderen Fad.
Also das heißt, ich kann dann, bestes Beispiel ist ja an der Stelle wahrscheinlich Python,
wo man mehrere Versionen vorhalten möchte oder muss teilweise auch,
weil man irgendwelche Tools nutzt, die eben noch auf Python 2.6 aufsetzen,
oder dann halt eine bestimmte Python-Version eben voraussetzen oder auch bei Libraries oder so was.
Das heißt, die liegen dann einfach alle unter jeweils einem eigenen Pfad.
Wie wissen denn die Programme, dass sie denn diesen Pfad aufrufen?
Weil normalerweise ist das ja im Code dann irgendwie abgelegt,
dass sie eben unter Userbin nachschauen oder so. Genau.
Genau, also jedes Programm wird halt, wie gesagt, in diesen Pfad installiert,
den slash nix, slash store, und den Hash und den Paketnamen,
das ist halt für Menschen dann gut, also zum Beispiel irgendein ganz komplizierter langer Hash,
und dann Python Punkt 3.6 oder so, und da drinnen würde dann zum Beispiel in bin Python das Programm für Python liegen.
Das ist jetzt natürlich an sich ein bisschen unpraktisch, weil man müsste ja dann quasi immer diesen ganzen langen Pfad mit sich ziehen.
Und was dann Nix macht, ist, dass es quasi ein Profil baut. Und dieses Profil kann man dann in verschiedene Pakete inkludieren.
Und da kann man zum Beispiel sagen, ich brauche jetzt hier einen Python und jetzt mein Coriolis, wo mein Copy, mein Rm-Befehl drin liegt.
Und die werden dann quasi die ganzen Bins von den Paketen, die man da in dieses Profil reinlegt, die werden dann in dieses Profil gesimlinkt.
Hat man dort dann quasi ein BIN-Verzeichnis, was dann die ganzen Pakete enthält.
Und dieses BIN-Verzeichnis, das kann man sich dann in die Umgebungsvariable packen.
Es gibt unter Linux diese Path-Variable. Und wenn man einen Befehl zum Beispiel startet,
dann guckt das, die Shell zum Beispiel, mit der man Programme startet,
guckt dann in diesem Path nach.
Also nichts, wird viel über diese Umgebungsvariable gemacht,
gemacht, um quasi damit diese Programme, die irgendwie erstmal an sehr zufälligen
Verzeichnis legen, dass die dann gefunden werden können.
Sehr schön, also letzten Endes hat nix damit so ein bisschen die Abhängigkeitsproblematik gelöst.
Ja, gerade wenn es darum geht irgendwelche Tools zu installieren, die eben mit anderen Tools dann in Konflikt geraten, weil sie eine neue Library brauchen oder vielleicht auch eine ältere.
Genau, weil jedes Programm, wenn es gebaut wird, hat dann quasi nur die, sieht nur seine Dependencies beim Bauen.
Das hat halt viele Vorteile. Erstens, man vergisst in seiner Bauanleitung nicht irgendwie Libraries mit einzubauen,
weil man kann hier irgendwie bei ExitDent quasi eine Library mit inkludieren, die man nicht angegeben hat beim Bauen.
Also das heißt, man hat dann sogar so ein kleines Sandboxing außenrum noch.
Genau. Also wenn man was baut, wird tatsächlich wirklich so eine Sandbox gebaut, wo dieses Programm oder diese Bauanleitung nur Zugriff auf das hat, was man in der Bauanleitung angegeben hat.
Und trotzdem habe ich dann aber am Ende, wenn ich Python 3.6 brauche und das haben mehrere Tools, habe ich einmal Python 3.6 installiert auf dem System und nicht dann für jedes Tool einzeln.
Also das ist eine Sendbox, die aber trotzdem Shared Libraries verwendet an der Stelle.
Und der andere Vorteil, der sich ergibt dadurch, dass Dinge nicht in Konflikt stehen, ist, wenn man sein System updatet, muss man nicht erst sein altes System löschen.
Das ist mir auch bei Arch Linux tatsächlich ein paar mal passiert.
Man sagt so pacman, was der Paketmanager da ist, minus s und y und u, ich glaube, ist schon eine Weile her.
Dann upgradet man das System und dann crasht das Pac-Man irgendwie beim Updaten der G-Lip-C.
Was irgendwie die wichtigste Library für ein ganzes System ist.
Was dann dazu sorgt, dass das ganze System...
Also man kann dann keine Programme mehr starten, weil die wollen halt alle die Lip-C.
Ist dann ein bisschen dumm.
Also ich gestehe ja, ich bin auch so ein Arch-Linux-User. User und was eher mal passiert oder mir sehr oft passiert ist gerade auf dem Laptop.
Ach komm wir machen gerade noch ein Update aber man hat das Stromkabel drin vergessen und das ist halt wenn man dann so ein paar,
Programme die man dann auch noch auf dem PC direkt baut dabei hat die da geupdatet werden dann ist das nicht so sinnvoll den Akku zu verwenden.
Und das macht man ein paar mal.
Dann weiß man irgendwann wie man es fixen kann, weil man lernt nicht draus, wenn man es einmal gemacht hat, zumindestens ich nicht, also das heißt da passiert dir letzten Endes nix, wenn du ein Update machst und es passiert irgendwas zwischendrin, dann ist dieses Update einfach nicht fertig durchgelaufen und ich kann es nochmal von vorne starten.
Ja genau, weil die alten Sachen, die alten Programme, die können erstmal so weit drauf bleiben und es werden nur neue Sachen hinzugefügt.
Das heißt, man kann auch, selbst wenn man das komplett installiert und auf diese neue Version gewechselt ist,
kann man dann mit einem anderen Befehl wieder auf die Version davor zurückrollen.
Was auch ganz praktisch ist, wenn man zum Beispiel sein System in eine Situation gebracht hat, wo es nicht mehr richtig bootet.
Aber das wäre dann schon XOS. Ja da sind wir wollte ich gerade sagen, da gehen wir schon weiter. Also diesen Nix Package Manager, den kann man, der ist aber jetzt nicht an spezielles Linux gebunden, sondern den kann ich unter Arch, Linux, Ubuntu und sowas kann ich den auch austesten, benutzen.
Ja also genau, also Nix an sich kann man sogar auf Mac OS sogar benutzen. Sehr schön.
Auf Windows halt meistens darüber, dass man dann dieses Linux-Subsystem verwendet.
Was eigentlich, das habe ich gestern mal ausprobiert, zum ersten Mal ziemlich gut funktioniert.
Also man kann dann selbstprogrammische Programme starten und alles.
Also wenn man mal unter Windows gibt, ist ja die Paketmanager-Situation noch schlechter.
Wenn man da mal einen ordentlichen Paketmanager haben will, kann man sich auch mal Nix-Alles angucken. Genau.
Sehr schön also und dann haben wir jetzt schon paar mal auch nix us erwähnt hast du eben ja auch noch mal was ist jetzt nix us also den paket manager nix und es gibt auch eine sprache.
Den den nix language an der stelle für für diese pakete zu bauen ist ja rein nur für für den paket manager erschaffen worden wenn ich das so richtig gelesen habe also ist quasi.
Ja, man würde sagen, das ist so eine Art domänen-spezifische Sprache, also ich halte es halt optimiert dafür, Pakete zu bauen.
Beziehungsweise, ja, so Bildumgebung auszudrücken.
Ja, das hält natürlich Leute nie davon ab, sobald sie nix verwenden, das irgendwie in alle möglichen Richtungen zu abusen
und andere Dinge zu machen, für die es nie gedacht ist.
Aber hauptsächlich ist es halt dafür da, so Pakete zu beschreiben und die Bauanleitung dafür.
Ähm, und ja, das ist quasi die Nix Expression Language. Ähm, das ist halt eine funktionale Programmiersprache.
Ähm, warum ist das wichtig? Äh, und ich auch lazy, warum ist das wichtig?
Also, wenn ich jetzt zum Beispiel Nix, ähm, sollen wir uns auf Nix Packages eingehen?
Kannst du, kannst du gerne. Ja, okay. Also, Nix an sich ist ja nur der Paketmanager,
aber dann will man ja Pakete haben.
Und deswegen gibt es dieses Projekt, das heißt Nix Packages.
Das sind quasi alle Packages, die man mit Nix installieren kann.
Also das ist quasi das zentrale große Repository. Das sind glaube ich für Linux x86 sind das 80.000 Pakete.
Das ist damit einer der, es ist glaube ich die größte, also nach Zahlen quasi der größte Paketmanager.
Und nach, wenn man der Webseite repology.org trauen will, die quasi Statistiken über Paketmanager macht,
dann hat es auch die meisten aktuellen Pakete.
Ähm...
Und ja, jetzt hab ich den Faden verloren. Genau, wir waren bei der Nix, bei der Language Nix eben.
Für was man die dann halt entwickelt hat. Bzw. wir versuchen mal so ein bisschen halt,
dass dieses Bild um Nix, NixOS, einfach mal zu zeichnen.
Weil das brauchen wir dann für die weiteren Themen.
Ja. Genau.
Also, NixOS ist quasi dann um Nix, um Nix-Packages, ist dann quasi eine Linux-Distribution, die auf beiden basiert.
Also, es sind jetzt quasi die Pakete aus Nix-Packages.
Nix-Packages kann man natürlich dann auch unter anderen Linuxen verwenden,
aber NixOS ist dann quasi die Linux-Distribution.
Und was es dann noch, ist eine Linux-Distribution um Nix-Packages drumherum.
Und was es dann halt zusätzlich zu diesen Paketen hinzufügt, ist auch noch, dass man,
diverse andere Dinge des täglichen Computerlebens ausdrücken kann.
Also, dass man sowas wie Dienste definieren kann. Also sowas wie einen Web-Server oder einen grafischen Desktop und so weiter.
Und auch, ja, Konfigurations-Dateien.
Weil mit Nix tut man eigentlich nicht irgendwie Konfigurations-Dateien von den verschiedenen Programmen, die man benutzt, selber schreiben.
Sondern man drückt alles mit dieser Nix-Sprache aus.
Und wenn man dann das System updatet, wird diese Nix-Sprache evaluiert und das System daraus gebaut.
Das heißt, alle Konfigurations-Dateien sind dann quasi da auch mit drin und das sind einfach ganz normale Pakete.
Und auch wieder in mehreren Versionen. Das hat dann wieder den Vorteil, man kann wieder zugrollen.
Mit der Konfiguration.
Also das heißt, ich habe eine zentrale Konfiguration, höre ich daraus, mit der ich dann das System beschreibe, was alles drauf sein soll.
Und das mache ich eben auch mit dieser Nix-Language an der Stelle und sage dann,
ich möchte jetzt hier einen Web-Server, der aber nicht auf Port 80, sondern auf Port 8000 hören soll,
und kann das dann ausrollen.
Genau, das Schöne ist, dass es wirklich eine, dadurch dass es eine Sprache ist,
die aber dann über verschiedene Aspekte des Betriebssystems drüber hinaus geht,
kann man dann auch verschiedene Dienste, wenn die dann miteinander zusammenspielen sollen,
kann man die halt schön nah beieinander gruppieren in einer Konfigurationsdatei.
Zum Beispiel, wenn man sich Web-Services aufrichtet, wie zum Beispiel so ein Nextcloud,
dann braucht man ja immer den Nextcloud-PAP-Service zum Beispiel,
der die Anwendung an sich bereitstellt.
Dann will man vielleicht einen Web-Server davor haben und noch eine Datenbank dahinter.
Und das kann man dann alles schön gruppieren in einer Datei, in einem Modul.
Und das dann dadurch quasi seine NixOS-Konfiguration über verschiedene Dinge aufsplitten.
Gut, das ist ja dann schon die Pro-Variante. Man fängt erst mal mit einer Konfigurationsdatei an,
die beschreibt, wie das System aussehen soll, und die deployed man dann mit NixOS ...
Rebuild. Genau, mit NixOS Rebuild. Und dann wird die ja ausgerollt.
Und die ist aber nicht sofort live in dem Moment Geld also man muss dann einmal das System neu starten oder man macht eben einen switch direkt bei dem Befehl nix was switch,
ja also dass man dann direkt in die neue Version Umgebung rein gehen kann,
vielleicht an der Stelle mal nochmal so kurz abgerissen wir haben jetzt eine zentrale Konfiguration.
Die beschreibt wie das System aussieht das heißt wenn ich da irgendwas ändere das System wird bei so einem Rebuild immer neu gebaut ist das richtig?
Ja also im Prinzip ja in jedes Nixos Rebuild ist quasi wie in was man unter anderen Distributionen als clean install kennt.
Also jedes Update ist quasi eine Neuinstallation des Systems.
Das geht halt soweit, dass man, wenn das System wirklich so weit kaputt gehen sollte, dass man zum Beispiel sogar den Bootloader von seinem System,
der quasi am Anfang den Körner und so weiter lädt, wenn man den kaputt macht, kann man halt immer noch sein Recovery System,
also von einem USB-Stick zum Beispiel, ein anderes NixOS booten, kann sein Dateisystem von seinem Laptop zum Beispiel mounten,
Und dann ruft man einfach nochmal NixOS Install auf, ohne irgendwas weiter anzugeben, weil die Konfiguration liegt ja schon auf dem System.
Und der installiert einfach sauber drüber. Und dadurch kann man halt sein System reparieren, selbst wenn man es richtig, richtig kaputt macht.
Gut und dann habe ich aber dann meine persistierenden Daten, die muss ich dann irgendwo ablegen, wo sie nicht überschrieben werden.
Ja die Daten an sich werden, also NixOS tut eigentlich auf den, okay es kann beim Upgrade natürlich, kann man wenn es zum Beispiel Nextcloud hat und das tut jetzt die Datenbank manipulieren.
Also die Daten von der Datenbank selber, die werden nicht direkt von NixOS gemanagt, die liegen halt in einem Verzeichnis.
Die können natürlich kaputt gehen, also man muss halt immer noch von seinen Daten ein Backup machen.
Aber alles, was die Programme angeht und deren Konfiguration, das ist halt alles über diese Generation, über diese, wenn man upgradet, abgesichert, dass man da immer wieder zurückkommt.
Gut, also letzten Endes das Besondere an NixOS ist, wir haben eine zentrale Konfigurationsdatei.
Die kann ich dann auch, also keine Ahnung, ich hab jetzt irgendeinen fancy Dienst mir jetzt aufgesetzt und ein Kumpel kommt vorbei und sagt, ey, hier, das Ding hätte ich auch gern zu Hause, dann gebe ich dem einfach meine Konfiguration und er kann sich das mit der Konfiguration genauso eins zu eins bei sich zu Hause aufsetzen.
Ja, das ist auch, wie wir sind ja gerade hier auf dem CCC-Camp, das ist auch sehr beliebt in Hacker-Kreisen aus dem Grund.
Also viele haben halt irgendwie so kleine Projekte, haben halt überall irgendwelche Raspberry Pis rumliegen.
Raspberry Pis haben auch die Angewohnheit, dass sie gerne mal kaputt gehen, vor allen Dingen die SD-Karte.
Und das ist halt dann ganz cool, wenn man dann seine Konfiguration irgendwo separat davon nochmal zur Verfügung hat.
Und dann kann jeder auch sehen, wie das System konfiguriert ist und kann das auch bei Bedarf wiederherstellen.
Also das heißt, ihr unterstützt mit NixOS dann auch verschiedene Architekturen?
Ja, also hauptsächlich im Moment Systeme, die wir auch als Vinyl-Pakete vorbauen.
Das beste Support der Tage ist halt eher x86, x64.
Dass die Architektur, die halt in Laptops und Server-Systemen usw.
Normalerweise drin vorkommt oder Desktop-Systemen.
Dann, wenn man so kleinere Computer hat, zum Beispiel so Raspberry Pis,
da gibt's halt ARM häufig vertreten.
Auch auf Telefon zum Beispiel. ARM64 ist quasi die 64-Bit-Variante davon,
die eigentlich jetzt mittlerweile überall verwendet wird.
Die supporten wir dann auch. Und dann halt Darwin, also ARM macOS,
Das ist quasi, ja, Darwin ist halt zu den Tenen am ...
MacOS wird dann halt auch auf x86 und ARM verunterstützt, also auch die neuen hier M1-Macs.
Ähm ... Und dann gibt's halt so, ja, ein paar coolere Ports,
aber da wird halt nix vorgebaut.
Da muss man halt ... das ist ja selber arbeiten.
Aber was ich zum Beispiel auch benutze, was an sich erstaunlich gut funktioniert,
ist einfach RISC-64. Das ist hier diese ...
Das ist so eine kleine Architektur.
Der ist auch sehr beliebt in vielen Open-Source-Projekten, weil das komplette CPU-Design öffentlich ist.
Also kann quasi auch jemand anders hingehen und sagen, okay, ich will meinen Prozessor ein bisschen anders designen.
Gibt's auch viele FPGA-Designs, wo man sich selber seine CPU synthetisieren kann
und Dinge ausprobieren kann.
Das funktioniert erstaunlich gut, auch zum Cross-Kompilieren dahinter.
Also Cross-Kompilieren heißt, wenn man quasi jetzt einen fetten Server hat,
zum Beispiel auf x86-Server mit vielen CPUs.
Und dann will man eigentlich immer darauf bauen, statt jetzt auf diesem kleinen RISC-5-Core,
der jetzt irgendwie 1,3 Gigahertz hat oder so und dann quasi die ganze Zeit am Schwitzen wäre und überhitzt.
Das, ähm, ja, das ist halt dann ganz nett, wenn man ... Da kann man dann trotzdem mitarbeiten.
Es ist schon ziemlich benutzbar.
Wunderbar.
Das klingt auf jeden Fall sehr spannend. Ich sag mal dazu ich ich setz nix es auch schon ein an an bestimmten stellen ich bin nicht so tief in dem thema drin wie du deswegen stelle ich dir auch die fragen.
Und ja aus von von von meiner warte aus war es halt auch so ein bisschen diese pflegeleichtigkeit also gerade jetzt so mit den privaten server für die familie bereitstellen da hat man dann.
Die ganze Zeit hat man irgendwas gebastelt dann geht irgendwas kaputt dann muss man wieder nachschauen wo hast du das jetzt genau installiert was hast du da gemacht.
Bis man dann da irgendwas gefixt hat hat das mal mindestens ein Tag in Anspruch genommen weil du dich halt nach einem halben Jahr auch einfach nicht mehr dran erinnerst und die Dokumentation ist nicht nur in der Firma immer problematisch sondern.
Zu Hause sogar noch viel schlimmer meistens weil da sind dann die Dinge eben die man einfach mal so schnell nebenbei macht.
Und da ist dann halt das mit dieser zentralen Konfiguration richtig angenehm, da schaut man rein.
Ich hab das bei mir sogar auf dem Server mit den automatischen Updates laufen, das kann man da ja auch konfigurieren.
Eine Sache auf die ich vielleicht nochmal eingehen möchte, zu der du vielleicht nochmal was sagen kannst, ist.
Dadurch, dass du ja jedes Mal eine neue Installation machst, hast du halt auch relativ viele Pakete in diesem Nextdoor
liegen am Ende und der braucht dann schon ein bisschen mehr Speicherplatz.
Ja, also das ist tatsächlich was, was man vielleicht beachten muss,
wenn man jetzt von einem anderen System wechselt, dass man vielleicht nicht die alten gewöhnlichen Partitionsgrößen
für sein System festlegen kann.
Und zwar, weil man halt häufig mindestens so zwei Generationen von dem System rumliegen.
Weil was passiert ist zum Beispiel, wenn man jetzt quasi nichts mehr updatet,
es hält mindestens die Generation, mit der es gebootet wurde.
Weil das ist die letzte bekannte Konfiguration, die funktioniert hat.
Das heißt, ich kann auch immer wieder zurückspringen. Genau, auf diese Version, die gebootet hat.
Genau, dann ist die genau noch da. Das ist sehr wichtig.
Ansonsten wird halt für jede andere Generation, wenn man switcht und die alten Generationen jetzt nicht aufräumt,
das man kann die natürlich auch wieder löschen, wird für jede Generation halt ein Bootloader-Eintrag gemacht.
Das heißt, wenn man das startet, dann hat man ganz viele Einträge.
Ich glaube, das gibt es bei Ubuntu ja auch, Man hat verschiedene Kernel aber nur.
Genau, da hat man verschiedene Kernel, aber das, was man installiert hat und konfiguriert hat, das bleibt ja gleich.
Genau, genau. Bei NixOS ist es halt das komplette System, was da drin referenziert wird.
Also es ist letzten Endes so, wie wenn ich ein Snapshot mit BTFS machen würde oder sowas.
Oder mit ZSH oder wie auch immer.
ZSH, da sitzen wir gerade im Zelt, ja. ZFS, genau, ja.
ZFS ist auch tatsächlich, also weil die Leute ja schon ihr ganzes System snapshotten,
aber ihre Daten noch nie gesnapshottet hat, ist es deswegen ZFS auch ein sehr beliebtes Dateistem oder nix so ist,
weil das dann wirklich das System komplett macht, weil dann auch die Daten noch mal gesnapshottet werden.
Gut, das macht gerade, wenn man jetzt so was wie Datenbanken verwendet oder sowas,
macht das dann schon Sinn?
Weil die haben es nicht so gerne, wenn man da zwischen den Versionen hin und her springt oder sowas.
Ja, hab ich jetzt letztens jemanden gesehen, der hat das sich sogar auch so konfiguriert,
dass jedes Mal, wenn man ein Upgrade macht, wird vorher nochmal ein Snapshot mit ZFS gemacht.
Gut, das kann man jetzt auch bei anderen Systemen machen.
Und dann ist halt alles abgezichert.
Das heißt so aber ab und zu muss ich dann das System einfach aufräumen die alten Versionen dann wegschmeißen und damit ich einfach nicht.
Genau nicht zu viel auf meinem System liegen habe ich mein Speicher kostet nichts mehr haben wir schon ein paar mal gehört jetzt dass man dass man sich sogar 4 Terabyte NVMe leisten kann aber trotzdem.
Irgendwann ist auch selbst eine 4TB SSD ... Grade wenn ich jetzt an so einen Raspberry Pi denke oder so was,
da ist das halt dann doch nicht ganz so einfach, ja.
Ja, ja. Wobei, was mir immer auffällt bei Nix im Gegensatz zu anderen Paketmanagern,
dadurch, dass es quasi die alten und die neuen Daten gleichzeitig hält,
ist es ganz quasi ein bisschen optimierter, dabei vorzugehen, die neuen Pakete zu installieren.
Zum Beispiel bei Arch, wenn die halt ein Paket updaten, Und dann versuchen die nach jedem Paketupdate immer das Dateisystem zu synchronisieren,
dass quasi die Zeit, wo das System inkonsistent ist, also wo noch nie alle Daten auf die Festplatte geschrieben wird,
dass das möglichst klein bleibt.
Bei NixOS kann man halt viel rabiater umgehen und einfach mal das komplette System updaten
und das merkt man auch in der Geschwindigkeit, dass das viel schneller ein Paket da auspacken kann.
Ja. Dann...
Dann auch, was du gesagt hast, wie man sein System dokumentiert,
dadurch, dass diese Konfirmation existiert. Ähm ...
Ja, das kann man halt für sein System machen. Das kann man aber auch, wenn man gemeinsam an Softwareprojekten entwickelt.
Zum Beispiel die Batch, die es hier auf diesem Camp gab, das ist so eine Blume.
Ähm, hier mit so einem Bildschirm, da kann man so ein bisschen interagieren mit so verschiedenen Buttons.
Und die Entwicklungsumgebung dafür, das war halt ziemlich anstrengend,
zu installieren wieder, weil man dann wieder eine richtig lange Anleitung hat und was die dann halt hier gemacht haben, die haben einfach eine Datei in das Projekt reingelegt, eine shell.nix und mit dieser shell.nix kann man quasi mit einem Befehl, dem Befehl heißt nix shell, kann man sich dann halt alle Umgebungs-, alle Programme, die man braucht, um an dieser Batch zu entwickeln, um diese Firmware zum Beispiel zu ändern, kann man sich dann mit runterladen und ist dann halt ready to go, so schnell halt wie die Internetleitung funktioniert, um das runterzuladen.
So jetzt könnte es gleich mal ein bisschen laut werden hier fährt gerade die,
Bahn außen vorbei also falls ihr im Hintergrund jetzt irgendwelche komischen Geräusche hört nur dass ihr da kurz Bescheid wisst.
Das ist eine Eisenbahn die hier über das Camp Gelände fährt und kein Traktor oder so was den wir hier
Ist auch gleich die Toilette fährt es jetzt in die Toilette rein? Nee, ist Feed Up. Okay, gut
Dixi Klos sind sicher.
Gut, also du hast jetzt gerade noch Nix Shell auf den Plan gebracht. Ich würde sagen, das Thema lassen wir mal so stehen. Wer sich da ein bisschen tiefer einlesen will, der kann das an der Stelle mal machen oder uns einfach mal einen Kommentar schreiben, dass wir da drüber auch nochmal was machen, weil wir haben hier noch zwei weitere Themen auf oder sogar zweieinhalb,
auf die wir jetzt dann mal zu sprechen kommen einmal also du hast ja schon gesagt du verdienst dein geld mit mit nix und nix os vor allem und ihr habt dann da auch tools entwickelt oder
Du entwickelst bei Tools dann auch mit und eines dieser Projekte ist NixOS Anywhere.
Wir haben jetzt das NixOS. NixOS hat eine Konfigurationsdatei. Was ist jetzt NixOS Anywhere?
Okay, also ein bisschen zum Hintergrund. Wir haben halt verschiedene Kunden und jeder kriegt das anders und hat halt irgendwie andere Provider und andere Targets, wohin NixOS installiert werden muss und jeder dieser Plattformen oder Server, die irgendwo stehen, die sind halt alle immer ein bisschen anders.
Und auch das Installieren von NixOS fühlt sich dann immer ein bisschen anders an.
Und wir haben halt so ein Tool bauen wollen, was das so ein bisschen einheitlich umsetzt.
Und auch noch ein anderes Problem löst. NixOS ist halt immer noch ein bisschen, also ist eine kleine, aber sehr schnell wachsende Community.
Aber man kann es halt nicht überall so mit einem Klick installieren.
Also wenn ich hier zum Beispiel einen neuen Server zum Beispiel installiert,
hat man häufig so als Auswahl...
Du sprichst jetzt halt von den Providern, sei es jetzt Cloudflare oder Hetzner oder so Sachen. Hetzner, OVH, genau.
Genau, also da, wo man sich halt einfach eine kleine virtuelle Maschine oder halt auch einen großen Server mieten kann,
da gibt es dann immer Systeme, die man sich vorinstallieren kann,
wo man einfach auswählt aus einem Dropdown-Menü wahrscheinlich meistens.
Und da ist NixOS halt nicht drin.
Also es kommt halt immer häufiger, aber das, was immer am häufigsten drin ist, zum Beispiel sowas wie ein Ubuntu oder so oder ein Fedora.
Und man kann dann zwar häufig auch noch irgendwie ein eigenes Image hochladen, aber wir haben halt schon mal viel Zeit, erstmal das Image zu bauen, das hochzuladen, das aktuell zu halten.
Ja und, ja, also es ist immer aus der Richtung und dann halt auch, wenn man sich selber seinen Laptop installiert, ist es halt, bei der Installation, würde ich sagen, sind immer noch die meisten, also die meisten manuellen Schritte, die man braucht, um das System quasi zu installieren, ist es halt irgendwie bei der Installation.
Also man muss dann erstmal irgendwie, jetzt beim Cloud-Provider muss man halt irgendwie entweder das NixOS-Image irgendwie in das System geladen bekommen, wenn es überhaupt geht.
Und bei einem normalen Laptop müsste man halt einen Installer auf den USB-Stick packen.
Der Installer kann dann zum Beispiel in der grafischen Variante kommen oder quasi in einem Textmodus.
Und dann muss man halt dann in beiden Fällen dann vielleicht noch irgendwie manuelle Schritte ausführen.
Weil man hat ja in so einem System Festplatten drin oder SSDs, die man erstmal formatieren und partizieren muss und so weiter.
Und mit NixOS Anywhere haben wir halt ein Tool gebaut, mit dem man diesen Prozess auf ein Kommando unterbricht.
Also man sagt dann NixOS Anywhere, gibt dem über einen Flag seine Konfiguration an, die man installieren will, und danach eine IP-Adresse.
Und NixOS Anywhere erwartet dann quasi, dass auf diese IP-Adresse ein Linux antwortet.
Also dass man sich da per SSH-Remote-Schnittstelle einloggen kann.
Und was es dann tut ist, also wenn es jetzt zum Beispiel einen NixOS-Installer findet,
also es erkennt quasi, was ein NixOS-Installer ist, dann kann es quasi die Installation anfangen und durchführen.
Und wenn es aber zum Beispiel ein Ubuntu ist, benutzt du einen Trick, und zwar gibt es im Linux-Körnel eine Funktion, wo man dem Linux-Körnel sagt.
Okay, ich hätte jetzt gerne, dass du diesen Körnel, also ein anderes Linux bootest,
und du kannst ihm auch noch ein System mitgeben.
Dieser Trick sorgt dann dafür, dass er dann im Speicher ein NixOS-Installer lädt.
Also es ersetzt quasi im laufenden System das Ubuntu durch ein NixOS.
Das hat halt den Vorteil, dadurch dass es nur im Speicher existiert, kann man dann alle Platten, die jetzt noch an dem System hängen, die kann man dann halt frei benutzen, weil die werden ja nicht mehr benutzt von dem Installer, weil der nur im Speicher existiert.
Dann kann man halt im nächsten Schritt automatisch alle Platten formatieren, partitionieren, also partitionieren, formatieren und dann den NixOS-Installationsprozess beginnen.
Das heißt du brauchst dann aber eine bestimmte Menge an RAM, mit dem du arbeitest, das ist schon mal eine Voraussetzung.
Ich glaube das 3,5 Gigabyte RAM ist aktuell. Also 4 Gigabyte RAM ist absolutes Minimum.
Also 4 Gigabyte würde ich sagen, das geht komfortabel durch.
Man kann das nach unten noch ein bisschen runter optimieren.
Wir haben halt unser Image noch ein bisschen generisch, also das Installations-Image hat noch so gebaut,
dass das viele Dateisysteme beinhaltet.
Man kann noch ein bisschen runter optimieren. Aber das ist aktuell der Stand.
Wenn man zu wenig RAM hätte, aber man trotzdem die Möglichkeit hat,
einen normalen NixOS-Installer zu booten, kann man dann NixOS-NVMe trotzdem verwenden, weil es erkennt halt den NixOS-Installer und macht dann ganz normal weiter.
Und das ist halt auch ein praktisches Feature, weil auf Laptops, wenn man da jetzt noch gar nichts drauf installiert hat,
dann hat man auch noch kein SSH, um irgendwo reinzugehen.
Genau, aber gerade bei diesen Cloud-Plattform-Provider, da kriegt man ja meistens halt irgendwie einen SSH-Zugang direkt entgegengeschmissen.
Gibt's denn welches, also letzten Endes kann ich da jedes Linux-System unten drunter nutzen,
weil dieser Trick wird wahrscheinlich nicht nur bei Ubuntu funktionieren.
Sondern auch bei den anderen Systemen.
Ja, also wir haben da eigentlich, ja, ich glaube, wir haben schon,
es gab schon Leute, die haben so OpenBRT ausprobiert oder so,
das ist dann schon sehr speziell, aber es ist auch wahrscheinlich was,
was man wenig in Cloud-Environments befindet, aber ich glaube so die, das normale Wald und Wiesen, Linux,
das sollte eigentlich kein Problem darstellen.
Also wir haben auch schon viel getestet.
Was ich jetzt mir da vorstelle, also ich weiß das jetzt nur so aus meiner Erfahrung mit den Cloud-Providern,
man kriegt ja dann oftmals auch eine IP zugewiesen und so Sachen.
Das heißt, da ist dann aber für diese Konfiguration noch ein bisschen manuelle Arbeit auf dem eigenen Rechner notwendig,
da ich dann die IP da irgendwie mit den Konfigurationen reinpacke, das Netzwerk dort in der Konfiguration schon eingerichtet habe.
Und dann kann ich aber mit einem Befehl sagen, pack dir hier mal diese Konfiguration.
Und pack die bitte mal auf diese IP-Adresse, auf dieses System.
Ja, also die meisten Provider, die zumindest für IPv4, meistens DLCP und so weiter starten,
also das ist quasi eine automatische Konfiguration, IP-Adresse,
wir unterstützen vor allen Dingen für diesen Installer, den wir buten,
der braucht dann auch wieder eine Adresse.
Da haben wir das halt so gelöst, dass wir uns quasi die aktuelle Netzwerkkonfiguration von dem System,
was gerade, wo wir es quasi hinverbinden, dass es die wegspeichert.
Also es kann sich halt, es sind erzeugende IP-Adressen auf dem System,
auf folgende Netzwerkinterface ist die Speicherung weg und tun halt die in dem
NixOS-Installer wieder hinzufügen, sodass man sich dann zu dem Installer verbinden kann.
Aber für das letztendliche System, da tun wir den Nutzer quasi freie Wahl lassen, wie er sein System konfigurieren will.
Aber er muss halt dafür sorgen, dass er die Netzwerkkonfiguration so wählt,
dass er danach wieder ein Netzwerk hat, wenn er das braucht für diese Plattform.
Das klingt auf jeden Fall sehr spannend. Damit kann ich dann halt wirklich remote auch mehrere Maschinen
relativ schnell mit NixOS aufsetzen und vor allem wahrscheinlich das auch so ein bisschen
in eine Pipeline einbinden oder so was.
Ist das auch was, was ihr schon gemacht habt oder wofür ihr es vorgesehen habt,
gerade wenn man jetzt so Cloud-Anbieter nutzt?
Also meistens, also man trennt ja häufig solche Sachen in zwei Schritte.
Man sagt so, das eine ist das Provisionieren, das ist quasi das Anlegen von Ressourcen.
Wo man sagt, okay, ich miet mir jetzt den Server, das ist dann quasi der Provisionierungsschritt.
Und im Provisionierungsschritt wird dann auch die Installation gemacht.
Und das, was man wahrscheinlich in so eine Pipeline packt, ist dann eher das weitere Updaten von dem System.
Das Updaten von dem System ist jetzt nicht unbedingt, was man mit NixOS Anywhere macht,
das haben wir versucht, so sauber zu trennen.
Weil NixOS Anywhere halt auch destruktiv ist. drauf ist komplett weg machen deswegen wir wollten halt nie unbedingt ein tool haben wo man was man zum ständigen updaten nimmt und dann hat man auszusehen den falschen fleck mal gewählt und auf einmal ist die platen weg deswegen und außerdem gibt es im nix
im feld schon sehr viele tools um wenn man seine konfiguration lokal hat dass man sein server seine server farm fallen zum beispiel dass man die dann remote updaten kann also da gibt es schon viele tours und da haben wir versucht eigentlich da wollten wir diesen diesen so an an tools da wollte ich noch ein neues tool hinzufügen.
Sehr gut das ist lobenswert du hast vorhin im vorgespräch einmal erwähnt den namen disco disco geschrieben mit k und nicht mit c was hat es damit auf sich also du sagtest das musst du unbedingt mit reinbringen weil du hast ja schon vorhin gesagt verschiedene festplattenkonfigurationen also,
Ich hab auch einen Hetzner-Server, da hab ich dann zwei Festbutton drin,
die möcht ich dann auch in einem Raid-Verbund zum Beispiel verwenden.
Was macht Disco?
Wenn Nixer quasi die zentrale Konfiguration für das System ist,
dann ist Disco quasi die Konfiguration, wie die Platten angelegt werden sollen.
Also wie die Positionierung und die Dateisysteme, die man da auswählt, stattfinden sollen.
Und ja, es gibt halt viele Dateisysteme und auch Dinge wie ZFS.
Und ja, vorher gab es irgendwie gar nichts, um irgendwie automatisch so Platten zu formatieren.
Zumindest nicht im NixOS-Umfeld.
Und ja, es gab so ein paar Projekte, die haben versucht, das dann sehr elegant zu lösen,
dass man dann auch irgendwie seine Partitionierung ändern kann und so weiter.
Aber das wird halt ziemlich kompliziert.
Deswegen haben wir ja gesagt, okay, wir müssen jetzt irgendwie anfangen und irgendwas fertig bekommen.
Und da haben wir halt ein System gebaut, wo man gibt halt seine Konfiguration von seiner Platten an,
und dann umwandelt er das in die Partizipierungsbefehle.
Dass erst die Platte portioniert wird und danach kann man dann noch Festplattenverschlüsselung mit anmachen,
und dann die ganzen Dateisysteme formatieren.
Und wir supporten so ziemlich alles oder versuchen eigentlich alles zu supporten, was geht.
Wir haben sogar schon BKHFS Support, das ist quasi ein Dateisystem, was gerade sich aus einer Bewegung befindet
und noch nie mal im Mainline-Körner drin ist.
Genau, ja.
Aber wir versuchen da wirklich alles abzudecken. Und halt auch dann die Mountpoints, die dann in die Konfiguration mit NixOS mit drin sein müssen,
die tun wir dann auch mit generieren direkt in dem Schritt.
Und auch andere Dinge, wenn man dann zum Beispiel sowas wie einen Bootloader hat,
der muss ja auch auf einem Festblatt installiert werden, dann wird halt der Bootloader auch direkt mit konfiguriert.
Oder wenn man irgendwelche Programme braucht für dieses Dataisystem,
dann werden die halt, das wird halt alles miteinander abgedeckt durch die Kernmodule.
Also letzten Endes habt ihr damit genau das getan, was du vorhin gesagt hast.
Es gibt ganz viele, die diese Nix-Language verwenden, um halt andere Dinge damit auch zu basteln.
Und da habt ihr jetzt dann ein Tool gebaut, was wahrscheinlich diese Nix-Language dann verwendet,
um Festplatten zu partitionieren.
Ja, es ist halt trotzdem noch in die NixOS-Konfiguration integriert.
Also man importiert das einfach in die NixOS-Konfiguration.
Und es bestellt aber auch diese Generierung von den Programmen,
von dem Skript, was die Festplatten formatiert.
Bestelle es halt auch mit bereit und NixOS Anywhere erwartet halt, dass die NixOS Konfiguration, die man hat, dass es auch die Disco Konfiguration mit drin hat, dass es quasi diesen Formatierungsprozess.
Nix was anywhere ohne disco gibt es nicht sondern man braucht dieses disco dann in dem moment und das ist dann einfach in dieser zentralen konfiguration mit drin ohne dass ich da irgendwie was separates braucht das weiß dann also.
Das importiert man dann ganz am Anfang wahrscheinlich, sagt man hier.
Disco brauche ich auch.
Und dann zieht sich NixOS die Bedingungen, die es dafür braucht,
um dann die Festplatten so einzurichten.
Ja, und da, also wenn man dann irgendwie ein System komplett platt machen will
und alle Daten wieder auf null zurücksetzen will, kann man einfach mit einem Befehl dann auch wieder NixOS Anywhere sagen.
Das NixOS ist ja quasi auch ein Linux und wenn man SSH eingeschaltet hat,
kann man dann halt auch wieder sein System einfach neu installieren.
Okay, du sagtest vorhin, das Ändern von Partitionsgrößen und sowas, das ist nicht da mit drin, das heißt, ich habe in dieser Konfiguration, das ist dann nur so eine Startkonfiguration an der Stelle.
Das kann dann halt driften, also halt, wenn man Partitionsnamen ändert, das würde halt auch Einfluss auf das aktuelle System haben, aber wenn man dann, ja, da muss man halt dann manuell gerade arbeiten.
Wir haben wahrscheinlich schon so auf dem Plan, ein paar einfache Sachen zu erlauben, aber alles geht wahrscheinlich nie, weil das wird ziemlich schnell kompliziert.
Ja, so was wie in einem Raid verbundene neue Blatte aufnehmen.
Oder ich stell mir halt vor, grade neue Blatte aufnehmen, das Dateisystem zu vergrößern oder so Sachen.
Das sind Dinge, die man halt ja doch vielleicht häufiger mal machen möchte,
grade im Serverumfeld.
Ja, also aktuell müsste man dann halt auf die jeweiligen Tools der Dateisysteme zugreifen und das so tun.
Also so wie man's auch bei Ubuntu oder anderen Systemen machen würde.
Aber mal sehen, wo die Reise hingeht.
Jetzt haben wir noch ein Problem, was wir noch gar nicht angesprochen haben, also so eine zentrale Konfigurationsdatei.
Das klingt am Anfang, also ich habe, muss ganz ehrlich sagen, ich habe viel über NixOS gehört, bevor ich dann gesagt habe, jetzt muss ich es mir endlich mal anschauen.
Ich dachte immer so eine zentrale Konfigurationsdatei, das ist richtig richtig böse und anstrengend und wie auch immer.
Weil an für sich ist dieser ETC-Ordner eher so, ja, man fasst nicht so gerne, was da drin an.
Oder zumindest nur die Dinge, die man halt auch kennt. Weil halt auch alles irgendwie ein bisschen anders konfiguriert werden möchte.
Aber das macht ja nix mit dieser Abstraktion durch die Next Language an der Stelle relativ schön.
Das heißt, es wird alles eigentlich mit der gleichen Sprache eingerichtet.
Das das hat dann am Ende doch ein bisschen erleichtert also diese diese zentrale Konfiguration sorgt einfach dafür, dass ich, dass ich an einem Punkt nachgucken muss, was denn jetzt da eingerichtet ist auf dem System und muss nicht an fünf verschiedenen Stellen nachschauen, um um mir es dann zusammenzureimen.
Aber wir haben eine große Schwierigkeit dabei, es werden halt auch Passwörter gebraucht,
also gerade wenn ihr sowas wie Nextcloud dort installiert oder generell irgendwelche Web-Services,
die es eben auch erlauben, so ein initiales Passwort zu setzen oder auch für die Benutzer,
die man einrichtet über die Konfiguration, da möchte man ja dann auch ein initiales
Passwort mit eintragen zum Beispiel. Dieses Passwortmanagement an der Stelle, was ich
bis jetzt so mitgekriegt habe, ist eben, dass man den meistens in eine Datei übergeben
kann, in der das Passwort liegt, die sich das NixOS dann eben zieht beim Neubauen. Weil
das große Problem ist ja, wenn ich das in die Konfiguration direkt reinschreibe, landet
das ja in so einem Public Store, der world readable ist, sagt man ja immer.
Und gerade auch, wenn ich jetzt die Konfiguration mit Git verwalten möchte.
Wo packe ich das dann hin? Also was bringt mir das, eine zentrale Konfiguration zu haben,
wo dann meine Passwörter drinstehen und jeder kann sie lesen.
Ja, also genau, das Problem ist halt, dass Nix quasi da keine Berechtigung hat auf dem Nix-Store. Es kann halt jeder alles lesen.
Und das macht es halt schwierig, wenn man jetzt verschiedene Benutzer auf dem System hat oder auch verschiedene Dienste, dass dann halt jeder Dienst quasi alle Secrets lesen könnte.
Und es wird halt auch noch dadurch verschlimmert, wenn man, oder beziehungsweise es gibt halt noch ein anderes Feature,
wenn man sich halt selber seine Systeme vorbaut und dann zum Beispiel einen Binary Cache hat,
und der jetzt irgendwie öffentlich wäre, dann könnte dann ja auch jeder anfangen, die Secrets ohne zu ahnen.
Deswegen macht man das halt aktuell so, dass man die Secrets quasi nicht mit in die Konversation baut,
und die halt irgendwie als Dateien irgendwo rumliegen hat,
und dann über den Dateifahrt, über den absoluten Dateifahrt mit referenziert.
Das hat dann natürlich auch den Nachteil, dass es dadurch nie wirklich versioniert wird, die Secrets.
Also die Konfiguration ist zwar dann, die kann man wieder zurückrollen,
aber die Secrets sind quasi immer die, die da quasi zu dem Zeitpunkt,
wenn man die ändert, sind die halt live, die sind halt Teil der Konfiguration.
Und ja, das Problem hatte ich halt auch.
Und da habe ich dann ein Tool entdeckt, was von Mozilla entwickelt wurde ursprünglich, das heißt SOPS.
Das ist quasi eine Art Secret Editor für Secrets. Wie funktioniert das?
Also man hat ein Dateiformat oder kann auch eine binäre Datei sein oder was auch immer.
Und man benutzt diesen SOPS-Kommando und kann die damit editieren.
Also man kann zum Beispiel YAML, das ist ein Dateiformat, wo man dann so Key-Values drin ablegt.
Man sagt halt SOPS diese Datei, dann öffnet es das und entschlüsselt es dabei.
Weil SOPS sorgt halt immer dafür, man öffnet die Datei, man kann Sachen in Klartext editieren in diesem Ding und dann speichert es man wieder ab und dann ist es verschlüsselt.
Und es verschlüsselt das mit ein oder mehreren Keys.
Ein Key kann zum Beispiel der sein von dem Administrator oder von dem Benutzer, der die Secrets editieren will.
Und ein anderes Key kann zum Beispiel ein System sein, was jetzt diese Secrets lesen soll.
Und dadurch, dass es halt immer verschlüsselt abgelegt wird, ist es dann halt auch weniger kritisch, wenn man das zum Beispiel in sein Git-Repository oder zum Beispiel in einen zweiten privaten Git-Repository mit ablegt.
Und dadurch kann man halt das dann separat versionieren. Und dadurch, dass es schon verschlüsselt ist,
ist es auch nicht mehr so problematisch, wenn man das jetzt in diesen öffentlichen Nix-Store reinkopiert,
weil es ist erst mal dann verschlüsselt.
Und was ich dann quasi gebaut habe mit Substock Nix, ist dann quasi eine NixOS-Integration für diese Dateien,
dass man, wenn man ein System aktiviert, kann es den Key vom Host nehmen,
um diese Secrets zu entschlüsseln.
Und beim Aktivieren des NixOS quasi die zu entpacken und dass sie von den Services gelesen werden können.
Ja also das ist ein tool dass du selber entwickelt hast rund um um selbst selber um eben selbst in den in der nixos konfiguration zu verwenden.
Du sagst es jetzt gerade man kann das unter verschiedenen also man kann da verschiedenste dateien mit verwalten verschlüsseln wie mache ich das in nixos also was ist da.
Kann ich mir da jetzt einfach aussuchen und sage, ich mach da jetzt eine YAML-Datei, wo ich dann Key-Value für meine ganzen Passwörter habe?
Oder muss ich das alles in Einzeldateien packen? Oder bin ich da frei und muss mir da was aussuchen?
Ja, man ist leider sehr frei und muss sich was aussuchen. Aber so ein guter Weg, wie man anfängt, ist dann zum Beispiel,
dass man, also man will ja nie, dass jede Maschine immer alle Secrets liest.
Deswegen, und auch der Übersichtlichkeit halber, ist es dann praktisch, wenn man dann zum Beispiel für jede Maschine
dann ein SOPS-File, also ein YAML-File einlegt, was dann mit SOPS verschlüsselt wird,
wo dann quasi nur die Maschine das entschlüsseln kann.
Und man selber auch natürlich, man will ja wieder updaten.
Und dann kann man dann, wenn man jetzt irgendwie Dienste hat oder Secrets, die jetzt geteilt werden zwischen Maschinen und Maschinen,
dann kann man die in noch einer anderen Datei ablegen und die ist dann halt mit dem Key von den jeweiligen Servern und man selber verschlüsselt.
Also man kann sich das dann so strukturieren, wie die Strukturen im Projekt aussieht.
Also das heißt, das ist dann der Passwort Store für NixOS.
Ja, genau. Gibt es da auch noch andere Projekte, die sowas in der Richtung anbieten oder bist du da mit deinem Tool im Moment auf weiter Flur alleine?
Ja, also als ich damit angefangen hatte, gab es irgendwie noch keine so richtig zufriedenstellende Lösung.
Dann habe ich Sobsnicks gebaut und irgendwie einen Monat später gab es dann ActionX plötzlich und da habe ich mir gedacht,
hättest du das mal einen Monat eher gemacht, dann hätte ich das Projekt niemals anfangen müssen.
Jetzt gibt's halt zwei Lösungen und noch mehr. Also es gibt tatsächlich im NixOS-Wiki eine große Tabelle mit verschiedenen Lösungen. Ja, ich glaub HNIX und SOPSNIX sind ganz beliebt.
Weißt du da, wo die Unterschiede liegen oder hast du dir das HNIX gar nicht so richtig angeschaut, nachdem du jetzt deine Lösung hast?
Also EdgeNix, es gibt quasi ein Kommandozeilen-Tool, das heißt Edge, das ist relativ, das ist quasi, das war so die Technologie, die sie so als Nachfolger zu GNU-PG einführen wollte, um einfache Verschlüsselung zu machen, okay,
Es kann hier alle Sachen von Knupe gehen, ist jetzt nicht dafür da, um E-Mails zu verschlüsseln.
Es ist einfach dafür da, ich hab jetzt irgendwie ein Key und will jetzt damit Dinge verschüsseln und dafür ist halt dieses Edge.
Um H nix klickt glaube ich jedes secret in einer eigenen datei ab während sobs nix kann man halt mehrere secrets in eine datei packen.
Ja es hat so andere geschmacksrichtung wie man das anders also man hat da auch auch da wieder die qual der wahl du würdest natürlich sobs nix.
Empfehlen oder kann ich jetzt am meisten zu sagen aber ich kann den anderen H nix ich wollte dich hier mit ein bisschen support.
Vielleicht dazu auch nochmal dein GitHub Nickname, den hast du vorhin vergessen bei der Vorstellung.
Stimmt, ja also man findet unter dem Hintergrund mic290 findet man eine Reihe von Tools rund um Nix, andere anderen das Sobsnix, weil ich viel Pakete reviewt habe, habe ich ein paar Toolings dafür gebaut und auch wenn man Pakete updaten will, so Automatisierung.
Also das heißt wenn man wenn man da ganz tief in dieses rabbit hole absteigen möchte dann schaut man da am besten auch mal bei deinem github vorbei und.
Oder auch ein anderes Projekt also es gibt das offiziell die offizielle nix so ist Organisation auf github wo das nix packages entwickelt wird und auch der nix paket manager und dann gibt es noch eine andere Organisation die eigentlich noch größer ist sogar von der Anzahl der Projekte die heißt nix minus community.
Und es sind auch ganz viele Nix-bezogene Tools, die dort entwickelt werden, auch so viele Programme, die man verwenden kann, wenn man jetzt verschiedene Programmiersprachen verwendet, die dann direkt automatisch versuchen, Nix-Code dafür zu generieren, sodass man das automatisch paketiert hat in seinem System und dann alles sauber mit Nix installieren kann.
Und auch eine ganze Menge andere Tools, die man so zum täglichen Gebrauch braucht.
Sehr schön, das heißt wir haben jetzt hier einmal mit Nixwell's Anywhere, Disco und Soaps eigentlich so ein schönes rundes Paket geschnürt, mit dem man eigentlich schon mal anfangen kann Systeme aufzusetzen.
Ich arbeite heute an einem Projekt, wo ich versuche, weil das alles immer so separate Projekte sind und man immer erstmal selber auswählen muss, was ist jetzt das Beste. Ich arbeite gerade in so einer Commandline, wo diese ganzen Sachen so an einen
vereint werden also dass es quasi in einander übergreift. Du kennst du kennst dieses xkcd mit den Standards. Genau aber wir machen ja wir machen ja genau ein Standard um alle zu vereinen und dann haben wir noch einen Standard aber mal sehen.
Aber es gibt es gibt halt viele so also wir versuchen in dem Prozess dann halt auch viele so Fallstricke also so.
Dinge, wo man reintritt und sich wehtut, quasi die scharfen Kanten besser zu polieren, ähm, ja.
Ja, wunderschön. Möchtest du noch irgendwas, irgendwas featuren, was wir jetzt hier nicht besprochen haben oder haben wir irgendwas vergessen aus deiner Sicht, was ich jetzt nicht gefragt, angesprochen habe?
Ach, es gab auch ein paar coole Workshops hier auf dem Camp, aber zum Beispiel, was es hier gab, Matthew, das ist so ein quirliger Typ, er verkauft dann immer nix, also er verkauft auch mir nix, quasi nochmal, das ist so.
Also das beste seit geschnittenem Sprot.
Genau, er ist ja sehr überzeugt. Aber er macht auch viele coole Projekte und zwar hat er sich so selber, er hat so ein Telefon, das hat irgendwie so ein Android-Telefon, die haben ja mittlerweile ziemlich viel dran.
Und er hat sich darauf ein NixOS installiert. Jetzt kann man natürlich versuchen, das mit NixOS zu verwenden, aber es ist jetzt nicht unbedingt das beste Betriebssystem, um jetzt alle Dinge, die man mit so einem Telefon zu tun hat, abzuarbeiten.
Aber es gibt halt ein paar coole Tools, die man vielleicht doch ab und zu verwenden will und was er quasi gebaut hat, ist sich so, dass man den Android quasi in einem Container startet, also dass es dann in dem NixOS drin läuft und dann kommt man mit einem Swipe in das Android rein, kann dann halt Android-Dinge tun, mit dem anderen Swipe kann er dann wieder zurück auf Blender wechseln und 3D-Rendering machen oder er hat auch noch irgendein Spiel gehabt und er hat dann immer seine Tastatur vor dem Telefon, wo er das angeschlossen hat, damit er dann drauf tippen kann
Und hat dann auch noch, was er jetzt neu hat, so eine Brille, die er aufsetzen kann und dann das funktioniert dann quasi als Bildschirm und ist dann noch alles an diesen Telefon angebunden.
Und das hat eigentlich erstaunlich gut funktioniert, also sah eigentlich erstaunlich nutzbar aus, muss ich sagen, tatsächlich.
Okay, und der hat hier einen Vortrag gehalten da drüber und das auch mal vorgeführt.
Genau. Das war aber bei euch im NixOS-Zelt?
Ich glaube, es gab tatsächlich, es gab so einen ganz kurzen Vortrag auch bei Bits und Bäumen, ich glaube, der wurde ja oft gezeichnet, aber bei uns im Zelt wurde wahrscheinlich...
Genau also weil das unsere Zuhörer würden sich das vielleicht dann auch gerne mal anschauen.
Also wenn man auf irgendwelche Nix Veranstaltungen geht, also er ist eigentlich glaube ich immer dabei hat man das Gefühl im nächsten Monat Darmstadt ist die Nixcon.
Da hatte ich auch einen Vortrag tatsächlich über Nixis Anywhere.
Also da gibt es keine Tickets mehr oder wie sieht das aus? Nee das ist leider schon durch.
Schade weil das wäre direkt um die Ecke von mir. Ja, ähm, ja keine Ahnung, also wir haben auch mitgekriegt, also wir haben so irgendwie, ich meine London, äh, die Nixconfrontation.
Drei jahren vier jahren gemacht haben da waren wir 100 leute jetzt sind 200 leute nie genug also brauche ich 400 oder so tickets oder so es wird größer es wird größer aber es ist halt immer noch ein nische also ja das ist wenn man jetzt zum beispiel jetzt so.
Ja irgend so ein ein t-unternehmen geht und ich benutze NixOS fragen sie was ist das.
Werden werden diese ich ich muss sagen ich habe das so gefühl so ein bisschen nix es wird langsam zu dem neuen arts linux.
Aber wir hatten jetzt letzten dieses jahr einmal schon einen dreiteiler zu bsd gemacht weil das ja auch nochmal so ein,
ist ja auch nicht ein produkt letzten endes wo nicht so viele dran teilnehmen und nix so es ist letzten endes es ist ein dinox system was aber halt einfach alles anders macht als man es gewohnt ist.
Es ist ja auch schon ein relativ altes projekt tatsächlich aber dadurch dass es quasi so radikal mit neuen konzepten um die ecke gekommen ist,
hat erstmal die community eine ganze weile gebraucht um quasi die restliche welt daran anzupassen.
Aber aber aber es frisst halt also das ist das ist das ist halt bei nix so ein ding das ist halt so ein alles oder nichts also das heißt so die red pill und die blue pill wenn man die matrix ändert muss ich halt,
man muss sich halt man kommentiert sich dann halt darauf und dann ist es halt auch angenehm wenn man diese lernhürde übergangen hat aber man muss diesen schritt tun also aber wenn man das halt nur so halbherzig macht dann ja.
Ich hab's halt auch schon seit zwei Jahren im Einsatz und ab und zu ändert sich ja dann halt doch noch radikale Dinge von den einzelnen Versionen so dass man dann in der Konfiguration,
Dinge anpassen muss weil bestimmte Sachen jetzt die Precated sind oder gemoved wurden ich muss sagen bis jetzt hat war die Erfahrung damit sehr schön weil man hat versucht dann rebuild zu machen und dann sagt er.
Kannst gerne rebuild machen aber du müsstest vorher noch diese Konfiguration so und so umbenennen oder dahin schieben die hat sich jetzt geändert,
in der regel ist das ist sind diese switches ganz gut dokumentiert was ich festgestellt habe zumindestens mal auf auf der kommandozeile,
mir persönlich hat ein bisschen das wiki gefehlt das liegt aber auch so ein kleines bisschen glaube ich an der schnellen entwicklung,
die da hinten dran steht also alle halbe jahr kommt eine neue nixos version raus und gefühlt,
Kommt da einfach die Dokumentation nicht so ganz mit viele Sachen sind relativ stark veraltet und sind dann doch vielleicht ein bisschen anders da abzubilden als als jetzt in der Dokumentation das finde ich ein bisschen schade.
Macht den Einstieg ein kleines bisschen schwieriger aber dafür kann man tiefer einsteigen.
Also was mir aufgefallen ist, so viele Dinge, die so im Arch-Wiki beschrieben sind.
Brauchen wir die Doku nicht unbedingt, weil dieses Modulsystem, was quasi NixOS, also diese ganzen Optionen, die man benutzen kann in NixOS,
die sind schon alle so selbstdokumentierend. Also du hast halt diese Optionen, dann hast du die Beschreibung dazu, manchmal auch ein Beispiel und das kommt schon aus der Konfiguration heraus.
Das ist jetzt aber halt, das liest sich halt nicht so wie ein, wahrscheinlich fehlen so die ganzen Quickstarts, wie man so herangeführt wird.
Also sobald man dann anfangen kann diese Module zu lesen und zu verstehen, dann findet man die Dokumentation ziemlich schnell und ja.
Das beste Beispiel ist so die Nix Shell, die wir vorhin ja mal kurz angesprochen haben.
Es hat echt lange gedauert bis ich da mal so einen richtigen Einstieg gefunden habe, weil die Beispiele die es dann gibt, die sind dann wieder so einfach, dass sie halt nicht,
Nicht das Potenzial halt zeigen und auch nicht erklären an der Stelle sondern einfach sagen ja hier du kannst in in einer Shell die jetzt halt drei Tools installieren und sei glücklich damit aber du kannst ja viel viel mehr damit machen also ich hab sie jetzt halt eingesetzt die die,
Installiert nicht nur die tools sondern das das lädt dann auch die npm module runter automatisch installiert das ganze setzt die fahrde und dann habe ich eine entwicklungsumgebung in dem moment zur hand aber um dorthin zu kommen,
brauchst halt ein bisschen mehr.
Startup guide als nur damit kannst du programme installieren oder auch diese diese einzelnen konfigurations fahre die man dann da eben nutzen kann und sowas,
Das ist ein bisschen bisschen bisschen schwierig für den einstieg nix so es ist aus meiner sicht deswegen nichts für den einsteiger auf jeden fall aber für jemand der mit linux schon länger arbeitet,
der sollte sich nicht so als aus meiner sicht schon mal anschauen aus deiner garantiert auch und gerade wenn es darum geht ja regelmäßig mal was neues aufzusetzen oder.
Eben wie bei in meinem Beispiel eben einen Server zu haben wo man nicht jede Woche was dran macht sondern eben teilweise nur alle halbe Jahre und nach einem halben Jahr immer noch wissen will was da drauf ist.
Ja also nix hat doch das Problem dass wir tatsächlich zu viele Menüs haben zu viele verschiedene weil es gibt es gab dann jetzt auch im letzten 1,5 Jahren.
Wurden Dinge auch ein bisschen professioneller? Also da werden jetzt auch Leute so teilweise bezahlt dafür.
Das hast du ja jetzt. Dokumentation zu schreiben, auch ein bisschen koordinierter, dass wir dann so Untergruppen, Interessensgruppen gründen, wo wir dann, wo die sich dann regelmäßig treffen, um dann solche Dinge wie Dokumentation anzugehen.
Ja und dabei sind auch einzelne so nix so als guides oder nix guides entstanden und das Problem ist aber dass das quasi wie mit Standards wir haben halt für ganz viele Menüs quasi immer wieder Dinge erklären und ich glaube an als Anfänger ist man da ein bisschen verwirrt wahrscheinlich welchen man jetzt lesen sollte.
Ja gut hast du dann noch mal so einen Punkt wo ich ein wo man einsteigen sollte als Anfänger damit wir mit was Positiven auch enden an der Stelle weil das ist.
Wir haben jetzt die ganze Zeit geredet wie toll Nix ist und dann sagen wir jetzt zum Schluss ist es nicht so toll.
Also wenn man jetzt NixOS verwenden will, würde ich tatsächlich einfach das NixOS Manual nehmen, die Installationseinleitung lesen, das Dokument ist so geschrieben, dass man sich...
Das ist so ein Startup Guide, gell?
Man liest den linear durch und hat dann am Ende NixOS.
Man kann auch quasi den Easy-Mode nehmen und NixOS über den grafischen Installer installieren, dass es dann tatsächlich so durchklicken.
Aber das Ding ist halt muss halt hinterher trotzdem noch die Konfirmationsdatei verstehen also irgendeinen Punkt muss sie dich damit mal auseinandersetzen.
Oder dann ist es sinnvoller sie von Anfang an halt selber zu schreiben weil man dann einfach die Übung auch dafür bekommt das zu lesen und überhaupt umzusetzen.
Du sagst das jetzt es werden Leute auch nochmal bezahlt in dem Bereich das heißt NixOS wird mittlerweile wirklich relativ groß du verdienst dein Geld damit.
Wir haben auch im Anschluss von dem Podcast oder vielleicht auch erst im nächsten Monat dann noch ein Interview über jemanden, der sein Geld damit verdient, also über einen Kollegen von dir, um genau zu sein, um da einfach auch mal eine Einführung zu haben, wie das so vonstatten geht, wer da überhaupt am einsetzen ist und was ihr da so Näheres noch macht.
Und noch ein Schlusssatz, den du hast, den du den Leuten mit an die Hand geben möchtest?
Probiert es einfach aus, wenn euch Pakete fehlen, könnt ihr es in euren eigenen Repo updaten, aber noch cooler ist es mit anderen Leuten mitzuarbeiten und ihr könnt also relativ einfach die Snicks Packages runterladen.
Mit Git umgehen könnt und auch die Dinge selber fixen und man kann sich auch einfach als Methaner bei einem Paket eintragen.
Relativ einfach, da gibt es eigentlich keine Einstiegshürde, weil in dem Moment, das bedeutet, dass man,
gepingt wird, wenn jemand das Paket updatet. Also wenn man irgendwas hat und ihm das am Herzen liegt, kann man dann halt relativ einfach ein,
Paket adoptieren und hat dann so eine Art Mitspracherecht.
Das war ja auch was, was mir so am Anfang gefallen hat, dass quasi die ganzen Hacks, die man normalerweise immer so parallel am System entwickelt, die kann man einfach alle einfach,
Man botzt sich quasi sein eigenes Betriebssystem und ist dann ziemlich schnell dabei, dass man da Maintainer quasi von irgendwas wird.
Sehr schön, also das Mitmachen, die Hürde zum Mitmachen ist relativ niedrig. Genau.
Ja, wunderbar, dann bedanke ich mich. Ja, wir sind, denke ich mal, am Ende angekommen.
Dann bedanke ich mich für dein Interview, dass du heute dir die Zeit genommen hast, hier auf dem Event, auch bei der Hitze hier in dem Zelt auszuharren.
Ich hoffe der Ventilator hat ein kleines bisschen... Ja war super.
Eigentlich hätte ich diesen Podcast nur gemacht, damit ich hier neben dem Ventilator sitzen kann.
Also dann weiß ich in Zukunft, wie ich sowas angehe.
Ja, dann vielen Dank und dann wünsche ich dir hier noch einen schönen letzten Tag.
Morgen ist das Event ja leider zu Ende. Genau.
Ja, auf eine gute Zeit und vielleicht haben wir ja in vier Jahren das nächste Interview oder vielleicht auch vorher.
Genau. Oder mit anderen Leuten. Das wird ja immer größer.
Super. Dann wünsche ich allen Hörern viel Spaß beim Ausprobieren von NixOS.
Falls ihr dort nochmal zu bestimmten Themen etwas mehr hören wollt, dann einfach in die Kommentare schreiben.
Tschüss. Tschüss!