Der kann nix - NixOS, Framework und ein Dashboard-OS für Home Assistant
#35

Der kann nix - NixOS, Framework und ein Dashboard-OS für Home Assistant

Thomas: So, hallo und herzlich willkommen zusammen beim SmartHütte Podcast, euer Podcast für

Thomas: Smart Home, Technikkram, alles was nerdig ist, würde ich sagen.

Thomas: Wir haben heute den 24. Juli 26 und nehmen gerade auf Episode 35 und mit dabei ist wieder

Thomas: der und der Thomas, also ich, nein, schön.

Andrej: Andrej, moin.

Andrej: Hallo, Thomas.

Thomas: Also ich wollte fast sagen, so als Intro, wir haben wieder ein buntes Potpourri an Themen,

Andrej: Bestimmt.

Thomas: Aber mittlerweile ist das eigentlich unser Standard. Das ist die Baseline.

Thomas: Also, ja. Aber du hast was Cooles mitgebracht und da kommen wir auch relativ früh drauf.

Thomas: Aber vielleicht starten wir einfach mal mit zwei, drei kleineren Themen so zum Warmwerden.

Andrej: Genau.

Andrej: Vor einigen Folgen haben wir über unsere Matter-Erfahrung berichtet

Andrej: und dann war ich ein bisschen genervt zwecks der Zeitgeschichte von,

Andrej: wie heißen die, Ikea, Alpstuga, diese Luftqualitätsmen...

Thomas: Ja, genau, weil die das Display haben, ne?

Andrej: Ja, genau, die haben so ein Display mit der Uhrzeit

Andrej: und dann war ich ein bisschen genervt, dass das nicht im Matter-Standard ist.

Andrej: Es ist jetzt im Matter-Standard.

Andrej: Matter 9.1.0.

Andrej: Ich folge ja dem Ingo jetzt auf LinkedIn,

Andrej: Der hat da seine Artikelchen und schreibt da immer schön die Neuerungen rein.

Thomas: Du sagtest gerade Standard. Ist das auch neu im Standard oder ist es nur neu in diesem Matter-Server,

Andrej: Und da stand da was von Time Server.

Andrej: Ich habe direkt gefragt, ist das der Time Server, den ich hoffe, dass das der Time Server ist,

Andrej: dass er den Time Server, den ich über HACS installiert habe, jetzt ersetzt?

Andrej: Ja, es ist das.

Andrej: Das ist im Endeffekt die Möglichkeit, du kannst diese HACS-Matter-Time-Server-Geschichte jetzt deinstallieren

Andrej: und das ist integriert.

Andrej: Die Geräte kriegen ihre Zeit über den Matter-Server, den Default-Matter-Server, den du bei Home Assistant installiert hast.

Thomas: der da installiert ist, quasi bei Home Assistant? Weißt du das?

Andrej: Ja, klar, als ob ich das weiß.

Thomas: Okay, cool. Hauptsache es geht, weil das ist gut. Das hat mich auch unglaublich genervt. Ja, okay. Okay, okay. Sei einfach froh, dass du nicht irgendwie in der Maintainer-Rolle bist und dir das auseinanderbröseln kannst, wenn dir irgendjemand irgendwas reportet. In der und der Version geht's nicht. Version von was? Ja, aber ist cool, gut zu haben.

Andrej: Nee, ich weiß es nicht.

Andrej: Also kann sein, dass es im Matter-Standard ist,

Andrej: aber ich weiß jetzt nicht, was das für eine Version ist.

Andrej: Ist das die Matter-Version gewesen oder die matter.js?

Andrej: Habe ich jetzt nicht mal geguckt.

Andrej: Ich gucke mal kurz.

Andrej: Also es geht um die 9.1.0.

Andrej: Das ist das Home Assistant Add-on für Matter, der Matter-Server.

Andrej: Und in diesem wird der Matter-Server von 1.1.7 auf 1.2.6 gezogen.

Andrej: Und jetzt wird es wild.

Andrej: Dieser supportet Matter 1.6.0.

Andrej: Also, what?

Andrej: Ja, das ist jetzt auf jeden Fall supported.

Andrej: Wer das macht, ist mir auch egal.

Andrej: Genau, dachte ich, wäre eine coole Ankündigung.

Andrej: Dann kann man wieder eine HACS-Integration rausschmeißen.

Andrej: Und der Maintainer kann die wahrscheinlich auch einfach mal jetzt archiven,

Andrej: weil braucht man nicht mehr.

Andrej: Außer es gibt ein Feature, was der Standard-Matter-Server nicht hat,

Andrej: aber habe ich jetzt nicht gesehen.

Thomas: irgendwie, es schien halt so, das war

Thomas: das, glaube ich, was so besonders dran genervt hat.

Thomas: Ähm, Nerven ist jetzt

Thomas: übertrieben, aber es schien halt so, als wenn

Thomas: Uhrzeit synchronisieren ein gelöstes

Thomas: Problem sei. Und dann

Thomas: mit dem neuen IoT-Standard

Andrej: Null Uhr.

Thomas: stöpselst du dein Gerät an und

Thomas: die Uhrzeit driftet.

Thomas: Das war so, what? Ich muss ja

Andrej: Selbst Radiowecker aus den 80ern können,

Thomas: jetzt das händisch konfigurieren.

Andrej: ach, wahrscheinlich schon mal eher können das ja schon,

Thomas: Ja, aber schön.

Andrej: von daher war ein bisschen nervig.

Thomas: Ja, cool.

Andrej: Haken dran.

Andrej: Oh, wie heißt das?

Thomas: Also, ja, bin schon dabei,

Andrej: Kapitelmarke.

Andrej: Hast du gemacht?

Thomas: genau.

Andrej: Okay.

Thomas: Das war so geil. Okay, also, wir haben eine Nachricht bekommen nach der letzten Folge von, das sollte ich gerade gucken, ich glaube es war Sebastian, achso, ich muss auf alle Mailboxen suchen gehen, Sebastian, Sebastian, Sebastian, Sebastian, genau.

Thomas: Und die hat mich so unglaublich unterhalten und gleichzeitig habe ich mich so unglaublich dumm gefühlt, aber es war schön. Also, wir erinnern uns, in der letzten Folge hatte ich das Thema angebracht, aber diese Hitze hier in der Bude, diese Bewegungssensoren von Ikea, die funktionieren nicht mehr richtig. Ich muss 50 Zentimeter nah rangehen teilweise, damit die reagieren.

Thomas: Sebastian so, ja, das sind Infrarot-Sensoren.

Thomas: Wenn sich die Umgebungstemperatur deiner Körpertemperatur nähert, können die das nicht so gut erkennen.

Thomas: Und das war einfach nur mindblown.

Andrej: Ja, die haben halt einfach nur warm gesehen, ne?

Thomas: Das macht so Sinn.

Thomas: Und es ist so gut.

Andrej: Spannend wäre natürlich jetzt,

Thomas: Ja, ja, tatsächlich.

Andrej: ob die von Ikea oder die von Aqara

Andrej: oder wie auch immer du zu Hause hast,

Andrej: sich anders verhalten,

Andrej: aber Infrarot ist, Infrarot ist Wärmestrahlung.

Thomas: Also entweder die Aqara-Dinger, die hingen da sechs Jahre oder so.

Thomas: Also entweder hatten wir keinen so heißen Sommer, also nicht annähernd so heiß.

Thomas: Oder die kriegen es einfach ein bisschen besser hin, die sind einfach ein bisschen empfindlicher.

Thomas: Sie waren auch im Normalzustand in meiner Beobachtung etwas empfindlicher.

Andrej: Möglich.

Thomas: Vielleicht hat das den Unterschied schon gemacht, dass mir das nie aufgefallen ist.

Thomas: Oder die Hitze, ich weiß es nicht.

Thomas: Naja, also sehr geil, danke dafür.

Thomas: Nie drüber nachgedacht, macht Sinn.

Thomas: Und es hat tatsächlich nicht nur die Erkennung von den Myggspray betroffen.

Thomas: Ich habe die Dinger mit so einem Halter an die Wand geschraubt.

Thomas: Die Aqara-Teile, die haben ja diesen Sockel, den du so ein bisschen bewegen kannst und dann da drauf diesen Zylinder und die hatte ich immer nur festgeklebt und diesmal dachte ich mir, boah, das letzte, was du festgeklebt, wenn du es abnimmst, reißt sowieso die Tapete ab, also kannst du es auch gleich ranschrauben, ehrlich gesagt, also hinterlässt auch Spuren und vor allem, ich habe die kein einziges Mal unbewegt.

Andrej: Kugelgelenk.

Thomas: Also habe ich mir gedacht, komm, schraubst du mal ran. Und ich hatte so einen coolen Halter gefunden auf Maker World. Das ist einfach eine Fassung, wo du quasi dann diesen Myggspray von hinten reinklemmst. Du nimmst die eigene Klappe hinten ab, die äußere, und stattdessen klippst du den dann auf diese Schale. Und die hat dann eine Kugelfassung und auf der anderen Seite eben die Kugel, sodass du das halt quasi kugelgelagert drehen kannst und ausrichten kannst. Ziemlich cool, genau.

Andrej: Nice.

Thomas: Ja, ich habe es im PLA gedruckt und die haben alle runtergeguckt.

Andrej: Guck dir der runter.

Thomas: Die hingen alle runter, Kopf hängen lassen.

Andrej: Ja, die Toleranzen sind da sehr wichtig

Andrej: bei so einem Kugelgelenk, ne?

Thomas: Und am Anfang war das super rigid, würde ich sagen.

Andrej: Jetzt heißt es wohl Heißkleber dran.

Thomas: Das war echt fest.

Thomas: Du musstest richtig mit Kraft rangehen, um die zu bewegen.

Thomas: Und du hast sie einmal ausgerichtet und dann war es das.

Thomas: Ja, wahrscheinlich.

Andrej: Oder was auch immer.

Thomas: Ich habe es nochmal im PETG gedruckt und dachte, mir gibt es ja dem nochmal eine Chance.

Andrej: Meine Materialien ziehen sich zusammen

Thomas: Mal gucken.

Thomas: Nächster heißer Sommer oder so.

Andrej: und dehnen sich ja aus. Das ist ganz normal.

Andrej: Schade.

Thomas: Und wenn du jetzt dann dieses PLA, dieses Gelenk über die Kugel drehst,

Thomas: am Anfang war das halt, weil die Kugel natürlich, die ist ja in Layern gedruckt,

Thomas: das heißt, sie ist natürlich nicht super glatt.

Thomas: Und du hast das dann gespürt, es hat so wie so kleines Einrasten.

Andrej: Stufen. Geschmirgelt.

Thomas: Es waren natürlich keine Einrasten, genau, es waren die Stufen.

Thomas: So und nachdem das, sagen wir mal, das PLA hat sich geglättet.

Thomas: Es war butterweich.

Thomas: Du konntest das Ding bewegen, es hat nur nicht mehr eingerastet.

Thomas: Es war so ein bisschen wie der traurige Roboter Marvin.

Thomas: Ja, hat den Kopf hängen lassen.

Andrej: Aber so ein Tropfen

Thomas: Tja, genau.

Andrej: Heißkleber ist super cool, weil

Andrej: du kannst da dran machen, musst ja kurz warten.

Andrej: Aber der trocknet ja richtig schnell

Andrej: und das Coole ist, ist er abnehmbar.

Andrej: Das heißt, wenn der Winkel da nicht passt, kannst du einfach

Thomas: Du hättest denn, also du meinst einfach den Sensor, ach an der Kugel.

Andrej: abreißen wieder und es sieht nicht so

Andrej: mega scheiße aus, wenn man da dran kommt.

Andrej: An der Kugel. Einfach da, wo

Andrej: Ja, weil die richtige Menge Heißkleber, viele sagen, die richtige Menge ist, bis man nichts mehr sieht, aber die richtige Menge lässt sich auch echt relativ entspannt entfernen, wo dann das irgendwas kaputt geht. Schon echt viele Sachen mit gefixt. Echt? Und ausprobieren ist easy, weil diese Sticks kosten nichts und jeder hat solche. Ich habe hier so eine Schublade mit 50 Sticks, weil 50 waren billiger als 10. Und das, dann wollte ich da doch nicht.

Thomas: Ja, okay, das hätte ich vielleicht noch versuchen können.

Thomas: Ja, das stimmt.

Thomas: Die richtige Ausrichtung irgendwie merken sozusagen und dann kleben.

Thomas: Das habe ich von dir gelernt, seitdem ein paar Sachen mit Heißkleber befestigt.

Thomas: Ich weiß, einmal hat es

Thomas: nicht so den gewünschten Erfolg, aber ansonsten

Thomas: ist das eine super Sache, um das auch eben abnehmen

Thomas: zu können, wie du sagtest. Ja.

Andrej: fünf Minuten. Ja, das ist ja das Gute,

Thomas: Das Einzige Blöde ist halt, es ist immer relativ viel Aufwand.

Thomas: Du musst das Ding warm machen,

Thomas: es fängt vielleicht auch ein bisschen an zu oozen,

Thomas: dann musst du dann gucken, wo du das hinstellst

Thomas: und so. Also, mit Dingen, die

Thomas: nicht... Ja, das stimmt.

Andrej: ist ja egal, kannst alles wieder abmachen.

Thomas: Das stimmt. Was ist dein Makita-Aussatz?

Andrej: Ich wollte mir vielleicht, ich habe ja so einen mit

Andrej: hier an Steckdose,

Andrej: ich habe schon so lange überlegt, ich brauche den ja immer wieder,

Andrej: ob ich mir nicht einen hole, der meinen

Andrej: Makita-Aufsatz kann. Die gibt es bei Amazon

Andrej: für 20, 30 Euro oder so.

Andrej: So oft, wie ich da drangehe, wäre das schon

Andrej: geil, einfach Makita-Aufsatz dran,

Andrej: warm machen, fertig und

Andrej: hier einfach der Akku von Makita.

Thomas: Ach, okay. Okay, cool.

Andrej: Also was auch immer für ein Hersteller von Baumaschinen ihr habt,

Andrej: da gibt es wahrscheinlich beides.

Thomas: Hast du noch was Schönes gedruckt?

Thomas: In letzter Zeit. Hast du was für dein Rack gemacht, ne?

Andrej: Ach ja, oh mein Gott.

Andrej: Ja, ich habe parametrisch designt in FreeCAD

Andrej: und FreeCAD hat gesagt, nö, ist nicht parametrisch genug.

Andrej: Ich habe für meinen 10-Zoll-Rack,

Andrej: da war früher eine Fritzbox drin.

Andrej: Das ist so ein Rack, wo zwei 9-Zoll-Displays drin sind.

Thomas: Du weißt schon genau, wie oft es klingelt, ne?

Andrej: Eins für Home Assistant, eins für meinen Gaming-PC

Andrej: und das nehme ich halt mit zu Meetups & Co.

Andrej: und auch zu FrOSCon jetzt dieses Jahr.

Andrej: Und dort war eine Fritzbox drin

Andrej: und die Fritzbox lässt sich nicht so gut verwalten

Andrej: im Zuge von, oder einen Uplink geben.

Andrej: Die sind da sehr, sehr, ja, streng.

Andrej: Du kannst keinen WiFi-Uplink zum Beispiel geben.

Andrej: Dann habe ich mir einen von diesen Reiseroutern nochmal geholt,

Andrej: den ich ja für den Urlaub habe.

Andrej: Habe ich dann günstig bei Kleinanzeigen geschossen.

Andrej: Wir warten mal kurz auf den Katholenterror.

Andrej: So, und dann habe ich den Reiserouter...

Andrej: Ja, ja, zweimal bei halb.

Thomas: Oh, ah ja.

Andrej: Ja, genau, ich habe dann diesen Reiserouter geholt.

Andrej: Der hat natürlich nur zwei Ports, einen LAN und einen WAN.

Andrej: Das heißt, dafür brauchte ich auch einen Switch.

Andrej: Hatte ich noch in der Schublade rumliegen.

Andrej: Habe ich dann irgendeinen TP-Link-Switch mir geholt mit acht Ports.

Andrej: dann musste ich noch eins

Andrej: für das Home Assistant Blue

Andrej: drucken. Das heißt, drei von diesen

Andrej: mehr oder weniger ähnlichen, ne, vier. Und dann

Andrej: habe ich noch so eine Powerbank geholt, die

Andrej: nicht eine Powerbank, ein Power Supply,

Andrej: wo sechs USB-Cs sind und zwei

Andrej: USB-A, um alle oder die meisten

Andrej: Geräte aus dem Rack zu befeuern mit

Andrej: Strom. Funktioniert alles sehr gut,

Andrej: nur das Drucken, das war painful,

Andrej: aber ich glaube, ich habe acht Stunden oder so dafür gebraucht.

Andrej: Nicht fürs Drucken, sondern fürs Design,

Thomas: Das kann ich mir ja gar nicht vorstellen.

Andrej: weil, weil, ja,

Andrej: Weil man Kika hat echt, muss man echt aufpassen, wie man das bedient.

Andrej: Also mein Learning ist jetzt daraus, keine einzige Bemaßung zu machen,

Andrej: die irgendwie auf was anderes abzieht, außer die XYZ-Achsen und die XYZ, also XZ, YZ und so weiter, die Ebenen.

Andrej: Sonst hast du beim Skalieren von irgendwelchen Sachen hast du immer Probleme.

Andrej: Das hat mich so genervt.

Thomas: Nein, also, was ich meinte ist,

Thomas: ich kann mir echt nicht vorstellen, so zu arbeiten.

Thomas: Ich arbeite komplett anders.

Thomas: Ich klicke mich da so durch.

Thomas: Ich versuche viel Master-Sketch zu machen

Andrej: Ich habe halt angefangen, ich habe die Frontplatte genommen und davon habe ich nur die Hälfte designt,

Thomas: und dann nur gewisse Dinge auszuwählen

Thomas: und zu extruden oder zu pocketieren oder sowas.

Thomas: Aber vielleicht sollten wir mal zusammen

Andrej: weil es ja symmetrisch, gespiegelt.

Andrej: Okay, habe ich auf einer Ebene gemacht.

Andrej: Dann habe ich den Rahmen gemacht.

Andrej: Ich habe den Item Holder, habe ich das genannt?

Andrej: Was ich da reintue, war im Endeffekt ja viermal das Gleiche,

Andrej: nur andere Maße.

Andrej: Das waren andere Komponente,

Andrej: die ich dann abhängig von der Dicke der Front Plate machen musste.

Andrej: Das heißt, das war dann auch berechnet direkt,

Andrej: mit Variablen an der Mpazap.

Andrej: Dann habe ich die Base Plate gemacht,

Andrej: die abhängig von der Breite als auch der Tiefe

Andrej: des Item Holder

Andrej: Rahmens ist. So, und das hat auch

Andrej: eigentlich super funktioniert, aber sobald du dann anfängst

Andrej: mit Fillets und mit Holes und hier und da,

Andrej: dann musst du voll aufpassen, auf was du

Andrej: dich beziehst, weil wenn du dann nach diesen

Andrej: Grundfunktionen etwas abänderst,

Andrej: wo dein Power Supply

Andrej: Loch sein muss, für dein Kabel

Andrej: oder so, dann musst du echt aufpassen.

Andrej: Und die Fillets musst du sowieso jedes Mal

Andrej: neu machen. Und damit das überhaupt

Andrej: gedruckt werden konnte, habe ich dann tatsächlich

Andrej: im FreeCAD-Forum auch gefragt, ich habe das

Andrej: exportiert und ich habe irgendwie nur

Andrej: so, weiß nicht, 50%

Andrej: meines Modells bekommen, was ich dann bei

Andrej: Bambu Slicer gesagt habe, so hä?

Andrej: Wenn du drei oder mehrere Komponenten hast,

Andrej: musst du die erst mal zusammenführen,

Andrej: dass das nachher ein Objekt ist.

Andrej: Und dann kannst du das große Objekt,

Andrej: wo die ganzen Einzelmodelle

Andrej: gebaut drin wurden, kannst du dann

Andrej: exportieren als großes

Andrej: 3MF, oder? 3MF heißt das?

Thomas: eine FreeCAD-Session machen.

Thomas: Entweder mache ich was anders.

Andrej: Willst du jetzt von mir lernen oder mache ich Scheiße?

Thomas: Also bei mir knallt es auch ständig bei

Thomas: eins von beiden.

Thomas: Also entweder lerne ich was

Andrej: Ja, ich habe halt ein bisschen viel

Thomas: oder du machst Dinge sehr kompliziert.

Thomas: Die, ja, vielleicht.

Andrej: Solidworks und Autodesk

Andrej: wie heißt das?

Andrej: Designer hieß das damals? Ja.

Andrej: Davon habe ich halt wie Denkweise wahrscheinlich noch übrig.

Thomas: Damit hatte ich nie Kontakt.

Thomas: Ich habe mit FreeCAD angefangen,

Andrej: Ich kann dir mal zeigen, das Modell, was ich gemacht

Thomas: ein bisschen OpenSCAD gemacht

Thomas: und wieder zurück zu FreeCAD.

Thomas: Zeigst du.

Andrej: habe. Vielleicht hast du ja eine Idee. Oder?

Andrej: Machen wir mal. Aber nicht im Podcast, ist das

Thomas: Ja, genau.

Andrej: nicht so spannend.

Thomas: Wie wir hier sehen.

Andrej: Nächstes Thema?

Thomas: Okay, cool.

Thomas: Ich habe noch eine kleine Sache zum 3D-Druck

Thomas: und zwar,

Thomas: Ich habe hier im Büro so Hohlräume, also das Büro hat halt so ein Spitzdach und das geht aber nicht bis zum Boden direkt runter, da ist so ein Meter 20 vielleicht hoch an den Rändern und da haben wir dann so Hohlräume gemacht, einfach OSB-Platten und du kannst die aufmachen und da kommst du rein und so weiter.

Thomas: Und da lagere ich so ein bisschen Werkzeug und sowas und dann ist mir irgendwann der Gedanke gekommen, alles was da drin ist in den Räumen, das purzelt, querbeet und es ist immer schwer an die Sachen ranzukommen, man muss sich total verbiegen, vor allem wenn du eine gewisse Höhe hast, Körperhöhe, macht gar keinen Spaß.

Thomas: Also ist mir eingefallen, ich könnte ja anfangen, mir mal so Haken zu drucken, die ich vielleicht sogar an die OSB-Platten von der Innenseite befestige.

Thomas: Und dann kann ich Dinge aufhängen wie einen Akkubohrer oder Schrauber.

Thomas: Also diese gesamte, das träge Köfferchen oder sowas.

Thomas: Mega geil, habe ich gemacht.

Thomas: Und dann war der nächste Gedanke, die Tür selber, wenn man sie aufklappt, hat halt in dem Raum ziemlich viel Platz.

Thomas: Und ich habe sehr viele Spaxschrauben-Behältnisse.

Thomas: Also, es ist ja eh die Erkenntnis schlechthin, ne?

Thomas: Man braucht auf jeden Fall gutes Werkzeug, dann macht das Ganze auch viel Spaß.

Thomas: Und meine Erkenntnis auch, du brauchst halt auch ein Riesensortiment an Spaxschrauben, damit du einfach für jede Konstellation was da hast.

Thomas: Sehr geil.

Thomas: Die sind jetzt da, aber die stehen halt quasi im Hohlraum ganz vorne auf dem Boden.

Thomas: Das heißt, immer wenn ich einen Werkzeugkoffer rausschiebe, muss ich die immer erstmal alle zur Seite nehmen.

Thomas: Das hat mich so genervt.

Andrej: Da macht man halt so Sachen nicht,

Andrej: wie mal schnell was aufhängen oder sowas.

Thomas: Richtig. Ja. Also dachte ich mir, okay, komm, dann machst du auf die Innenseite irgendein Befestigungssystem, wo ich dann zumindest diese Spaxschrauben-Behältnisse irgendwie in Behälter reinstecken kann und dran befestigen kann.

Andrej: Ja, ja.

Thomas: Wie machst du das? Wie wäre es mit Open Grid? Das ist ja eigentlich genau für sowas gedacht, was auch so ein bisschen was tragen kann.

Thomas: Habe ich mir mal ausgerechnet, wie viel Kilofilament ich nur für das Grid an der Tür bräuchte.

Thomas: Habe ich keine Lust mehr.

Andrej: Viel.

Thomas: Ja, also ich weiß nicht mehr genau die Zahl, aber die Tür, die hat vielleicht so,

Andrej: Okay, nee, nee. Einfach eine Fase.

Thomas: wie gesagt, 1,20 Höhe und sagen wir mal mindestens 80 Breite, aber es könnte auch ein Meter sein.

Thomas: Ich kam so grob auf 6 Kilo, 6 Spulen.

Thomas: Dachte ich mir, nein, das mache ich nicht.

Thomas: Und habe stattdessen mich nochmal an, habe mich einfach nochmal an FreeCAD gesetzt und gedacht,

Thomas: okay, ich habe an einigen Stellen mit so French Cleat gearbeitet.

Thomas: Das sind diese Klemmleisten, wo du einfach nur eine Leiste an die Wand schraubst

Thomas: und die hat halt auf der Seite, auf der Wandseite oben, so eine 45 Grad Abschrägung nach unten.

Thomas: Und da kannst du Dinge, eine Fase, ja, danke.

Thomas: Und da kannst du Dinge einfach reinhaken, hin und her ziehen.

Thomas: Macht man halt anscheinend viel in Werkstätten.

Thomas: Klemmleiste auf Deutsch, so.

Thomas: Dann dachte ich mir, komm, designst du das nochmal.

Thomas: Hab ich schon oft gemacht in FreeCAD, weil ich da schon vieles mit befestigt hab an verschiedenen Stellen.

Thomas: und versuchst es mal auf minimal Material zu reduzieren

Thomas: und das hat auch wunderbar geklappt.

Thomas: Also eine Leiste, die irgendwie 70 cm breit ist,

Thomas: bestehend halt aus drei Teilen.

Thomas: Also die Leiste hat dann so ein Element,

Andrej: Ja, die brauchen ja nichts, weil es so plan ist.

Thomas: wo du so ein Verbindungsstück reindrücken kannst,

Thomas: damit du die gerade anschrauben kannst.

Thomas: Damit du also quasi 3 x 23 cm aneinander dingeln kannst

Thomas: und dann schraubst du die gerade ein und zack, alles ist gut.

Thomas: Das war die Idee, hat auch gut funktioniert.

Thomas: Und jede dieser Leisten keine 20 Gramm Filament.

Thomas: Das heißt, du hast dann irgendwie 50 bis 60 Gramm.

Andrej: Und du musst ja auch, das ist easy,

Thomas: Ja, genau.

Thomas: Stabilität brauchst du nicht groß.

Thomas: Ich glaube, drei Wände reicht locker an der Stelle.

Thomas: Ein bisschen Infill rein.

Thomas: Aber so Standard, Kubik, 15 Prozent und so.

Thomas: Und da habe ich dann als erstes mal einen kompletten Werkzeugkoffer voller Spax dran gehangen.

Thomas: Der Haken selber hat dann leider auch nochmal 50 Gramm Filament geschluckt,

Thomas: weil der musste eine gewisse Breite haben.

Thomas: Aber davon abgesehen, es ist sehr materialschonend.

Andrej: gegenüber 6 rollen.

Thomas: Also ja, also Open Grid hat da leider keinen Sinn gemacht.

Andrej: Ja gut, die Flexibilität hast du

Thomas: Auch wenn ich das System toll finde irgendwie.

Thomas: Die Light-Variante hätte glaube ich nicht, nee genau, nicht ganz so.

Andrej: jetzt halt dafür nicht. Oder nicht ganz so.

Thomas: Also ich müsste mir jetzt halt mehrere von diesen Leisten,

Thomas: aber ehrlich gesagt mehr als 200-300 Gramm an Leisten mache ich mir an die Tür nicht ran

Thomas: und dann habe ich genug Flexibilität für alles.

Thomas: Und bei den sechs Spulen, da war ja noch nicht dabei die Behältnisse.

Thomas: Also das Spaxzeug wollte ich, also du musst es entweder umfüllen oder du musst es halt mitsamt der Packung irgendwo reinstellen.

Andrej: Ich habe mitgebracht zwei Themen.

Thomas: Das musst du auch nochmal drucken, das macht auch nochmal viel aus.

Thomas: Ja, wollte ich nochmal erwähnt haben.

Thomas: Also ich mag dieses Klemmleisten-System total gerne.

Thomas: Und da gibt es auch viele Modelle schon fertig.

Thomas: Ich wollte es einfach nur möglichst klein haben.

Thomas: Deswegen, es hat irgendwie eine Tiefe von 7 Millimeter, eine Höhe von, ich glaube ich kam auf 17 oder sowas.

Thomas: Und damit ist das sehr, sehr sparsam.

Thomas: So, was hast du da Schönes?

Andrej: Einen hoffentlich eher kürzeren

Andrej: mit SSH-Keys und FIDO2

Andrej: und YubiKey. Und NixOS

Andrej: kommt gleich. Aber machen wir erst SSH-Keys.

Thomas: Wahrscheinlich nicht so, wie du das jetzt besprechen möchtest, weil du hast was von FIDO2 erzählt

Andrej: Hast du

Andrej: schon mit YubiKeys SSH-Keys

Andrej: gemacht? Ja?

Thomas: und meine Variante bis jetzt war einfach nur, den Key in den Passwort-Safe reinzupacken

Thomas: und den Passwort-Safe quasi dann mit Touch-ID oder irgendwas Biometrischem abzusichern.

Andrej: Okay, dann machen wir mal FIDO2.

Andrej: Da habe ich nämlich letzten, ich habe das vor Jahren

Andrej: schon mal gemacht, aber irgendwie

Andrej: nie gemacht. Also ich habe den Key erstellt, aber

Andrej: nie benutzt. Aber jetzt habe ich

Andrej: mich nochmal damit beschäftigt, weil ich das ganz interessant fand.

Andrej: Und zwar gibt es da,

Andrej: du kannst mit dem YubiKey, kannst du

Andrej: einen SSH-Key generieren. Auf

Andrej: zwei verschiedene Arten und Weisen.

Thomas: Das hat er nicht antizipiert.

Andrej: Noch einmal kurz, danke

Andrej: Katholin. Und zwar gibt es

Andrej: einmal die sogenannten Non-Resident und die

Andrej: Resident-Keys. Und

Andrej: das sind quasi SSH-Keys,

Andrej: auch mit, gibt es mit

Andrej: RSA als auch mit

Andrej: Ed25519.

Andrej: Das geht mir so auf den Keks

Thomas: Haben die kein Mute? Kann man da nicht Do Not Disturb machen?

Andrej: mit dieser Kirche hier.

Andrej: Wir haben hier 100...

Andrej: Keine Ahnung.

Andrej: Die bimmeln hier manchmal einfach 20 Minuten

Andrej: und kommen halt los und dann haben wir...

Thomas: Es ist auch nur ein paar Meter bei euch, ne? Also 50 oder was?

Andrej: Das ist am Fenster sind das 100 Dezibel.

Andrej: Habe ich mal durchgemessen. Das ist schon echt laut.

Andrej: Ja, gefühlt 10.

Andrej: Nee, weniger. Also Luftlinie 10.

Thomas: Noch weniger.

Andrej: Und das ist das Dachfenster.

Andrej: Na egal, ich habe das Fenster jetzt zugemacht.

Andrej: Ich werde vielleicht währenddessen ersticken, aber

Andrej: den Tod müssen wir halt sterben.

Andrej: dafür, dass die Katholen ihre Sachen hier ausleben können.

Thomas: Dafür haben wir vor allem auch nicht in den heißen Tagen aufgenommen,

Thomas: weil das konnte ich mir wirklich nicht vorstellen, hier im Büro zu sitzen.

Andrej: Naja, machen wir noch mal vorne.

Thomas: Das ging nicht.

Andrej: Non-Resident und Resident Keys.

Andrej: Und zwar, warte, wie war das nochmal?

Andrej: Ach ja, und zwar, der Non-Resident Key,

Andrej: den kann man erzeugen, gibt es mit RSA,

Andrej: hat es auch mit Ed25519 irgendwas.

Andrej: Ich vergesse das immer, die Zeichenfolge.

Andrej: Also beide Typen, je nachdem, welche Firmware euer YubiKey hat,

Andrej: kann der halt vielleicht nicht den neueren.

Andrej: Muss man mal drauf achten.

Andrej: Und so wie ich das jetzt im Kopf habe, ist das so, dass bei dem Non-Resident-Key habt ihr quasi nicht den SSH-Key per se auf dem System.

Andrej: Ihr habt schon, aber es ist quasi ein Teil des SSH-Keys.

Andrej: Der generiert euch natürlich den Private-Key und den Pub-Key, aber du brauchst den YubiKey und die Datei, die du auf deinem Rechner generiert hast, um den gesamten Private-Key zu generieren.

Andrej: Was macht das interessant?

Andrej: Und zwar SSH, Agent Forwarding, ist sicher.

Andrej: In dem Sinne, weil wenn du dich auf einen Server tunnest,

Andrej: wo du mit vielen Kollegen drauf bist oder teilst das mit Freunden oder so

Andrej: und du machst Agent Forwarding, dann ist ja im RAM dein Key halt.

Andrej: So nicht, weil nur der Teil im RAM ist, der auch auf deinem System drauf ist,

Andrej: aber nicht der Teil des YubiKeys, der Hardware.

Andrej: Fand ich irgendwie ganz spannend, das Konzept.

Andrej: Nachteil ist natürlich, du brauchst beides.

Andrej: Ist natürlich auch der Vorteil von der Sicherheit her.

Andrej: Du brauchst beides.

Andrej: Das ist ja was haben und was wirklich physisch ist,

Thomas: Und du brauchst es vor allem auch jedes Mal, weil es kann ja nicht gecached werden.

Andrej: weil das Digitale kann dir ja geklaut werden.

Andrej: Ja, genau.

Thomas: Dementsprechend bei jedem SSH-Key-Use.

Andrej: Es gibt so ein paar Tricks, wo ich gesehen habe,

Andrej: dass man so eine Art Timeout reinpacken kann.

Andrej: Da muss ich mir noch ein bisschen mehr einlesen,

Andrej: weil es nervt mich schon wirklich jedes Mal,

Andrej: diesen SSH, den YubiKey da anzufassen.

Andrej: Genau.

Andrej: Und der Resident Key, der ist auch interessant.

Andrej: Der ist der quasi, das ist quasi der Key, der dann auch auf der Festplatte liegt und du kannst, das Problem bei dem ist oder der Vorteil, diese Datei, die du beim Non-Resident hast, wenn die weg ist, ist die weg, du brauchst einen neuen Key.

Andrej: Bei dem Resident-Key kannst du die immer generieren lassen.

Thomas: Du brauchst also am Ende wirklich nur den YubiKey.

Andrej: Das heißt, jemand, der dein Key hat, kann mit SSH-Keygen-Uppercase-K

Andrej: kann dann dieses Ding generieren und hat dann quasi Zugriff auf deine Systeme.

Andrej: Genau, ist aber dafür mit einem großen Vorteil versehen, super portabel.

Andrej: Du kannst den mitnehmen, den Key, von deinem Desktop an deinen Laptop

Andrej: und musst nichts drüber kopieren, nichts machen.

Andrej: Richtig cool.

Andrej: Also haben bei, da wüsste ich nicht, ob der das unterstützt,

Thomas: Aber dafür würde ich das dann vielleicht eher nur mit dem Bio-YubiKey machen,

Thomas: der ja auch selber einen Fingerprint-Sensor hat und nicht nur Touch.

Andrej: weil der Bio hat ja viel weniger Funktionen.

Thomas: Achso, okay. Bin da leider auch nicht tief genug.

Andrej: Ich weiß nicht, ob der FIDO2 kann.

Andrej: Der Bio ist ja, nee, der Bio kann, glaube ich,

Andrej: keinen Pass dieser ganzen Smartcard-Features

Andrej: und OpenSS, äh, nicht OpenSS, sondern OpenPGP oder so.

Andrej: Bin ich mir auch nicht sicher.

Thomas: Moment, das heißt, du musst den Key nur reintun und du musst ihn nicht jedes Mal bestätigen?

Andrej: Der Bio ist auf jeden Fall ein bisschen runtergestrippt dran.

Andrej: Kann sein, dass der FIDO2 kann.

Andrej: Genau, und das fand ich ganz interessant.

Andrej: Du kannst aber auch, wenn du bei der Generierung

Andrej: ein paar Flags angibst, kannst du sagen,

Andrej: hey, ich hätte gerne einen Verify-Required-Pin.

Andrej: Das heißt, du brauchst immer den Touch.

Andrej: Aber du kannst auch sagen, ich hätte einen Non-Touch-Required.

Andrej: Und das ist natürlich dann auch interessant für Skripte,

Andrej: für ein Backup-Skript.

Andrej: Dann erzeugst du dir halt so einen kleinen Non-Touch-Required-Key

Andrej: und solange der Key drin ist, läuft das Backup,

Andrej: ziehst den Key raus, läuft das Backup nicht,

Andrej: weil da ist kein Zugriff mehr drauf.

Andrej: Ja, genau.

Andrej: Es gibt Non-Touch-Required.

Andrej: Das ist ein Minus-O, No-Touch-Required.

Thomas: Geil, dann hast du so einen Dongle-Modus, ne?

Andrej: Fand ich auch ganz interessant.

Andrej: habe ich einfach im Zuge, ja, ein bisschen

Andrej: so, ein bisschen unauthenticated,

Andrej: ne, im Endeffekt nichts anderes, als wenn du dann

Thomas: Ja, ich habe übrigens mal nachgelesen.

Andrej: SSH-Key generierst und den

Andrej: einfach ohne Passwort für Automatisierung machst,

Andrej: aber halt mit Key, ne, den du halt rausziehen

Andrej: kannst. Fand ich ganz cool. Okay.

Thomas: Ach, gelesen. Geskimmt.

Thomas: Nachgeskimmt. Es gibt YubiKey Bioseries FIDO-Edition.

Thomas: Und es gibt eine Multiprotokoll-Edition und anscheinend unterstützen die beide FIDO.

Thomas: Also vielleicht ist das... FIDO ist vielleicht das Basismodell.

Thomas: Aber so viel habe ich es jetzt auch nicht gelesen.

Thomas: Es ist nur bestätigt zumindest, geht wohl auch damit.

Thomas: Weil gerade wenn du so einen Key hattest, wo du wirklich nur den Key brauchst

Thomas: und keinen lokalen Teil, keinen zweiten Faktor, wäre das natürlich relevant.

Andrej: Genau, sehe ich auch so. Ja, also wenn du

Andrej: den Resident-Key hast, dann solltest du schon den

Andrej: Bio nehmen, dann kann dir jemand,

Andrej: der den Key klaut, halt tatsächlich

Andrej: nicht nutzen, wenn dein Fingerabdruck eigentlich dabei ist.

Andrej: Außer der klaut dir halt deinen Daumen, ne, von daher

Andrej: ist das auch egal.

Thomas: Ist noch, also ich sehe da eine gewisse Hürde.

Andrej: Also, da muss man auch überlegen, ne,

Andrej: wenn dir jemand deinen Key klaut, dann kann er dir auch deinen Daumen

Andrej: klauen, wenn er Bock drauf hat.

Andrej: Da gibt es doch diesen XK...

Andrej: Kennst du diesen XKCD mit dem...

Andrej: mit dieser Security-Sache?

Thomas: Ich glaube nicht.

Andrej: Nee, ich hab... Wir müssen die Nummer nach raus...

Thomas: Du kannst ihn zwar jetzt hier nicht zeigen, aber du kannst ihn mir sagen und wir nehmen mal ein Lachen auf.

Andrej: Es ist mit einem Hammer.

Andrej: XKCD

Andrej: Hammer Security, glaube ich.

Andrej: Gucken wir als erstes... Ja, da ist er.

Andrej: Irgendwie sowas von...

Andrej: Hey, this laptop is encrypted. Let's build a million-dollar

Andrej: cluster to crack it. No good! It's

Andrej: 4096-Bit-RSA.

Andrej: Best you blast, or

Thomas: Ja, der physische Teil.

Andrej: evil plan is foiled. Und dann, ja, hier ist

Andrej: der Schraubenschlüssel, mit dem du den Kopf einschlagen

Andrej: kannst hier. Hol dir, hol das Passwort.

Andrej: Schraubenschlüssel im Baumarkt, 15

Andrej: Euro. Genau, ich fand das einfach

Andrej: interessant, weil ich mir diese Keys aufgesetzt

Andrej: habe. Und was auch geht,

Andrej: selbst noch nicht gemacht, steht

Andrej: aber jetzt an die nächsten Wochen irgendwann mal,

Andrej: du kannst die auch für LUKS Encryption

Andrej: benutzen. Also,

Andrej: fand ich dann auch ganz nett. Ein bisschen praktischer für

Thomas: Ja, das ist gut.

Andrej: den Laptop halten, finde es aber jetzt nicht so, dass du immer hingehen musst

Andrej: und einmal touchen. Und ist auch ein bisschen

Andrej: in Pointless da ein No-Touch-Required

Andrej: dann hinzupacken.

Andrej: Ja, ne, fast gar nicht.

Thomas: Hast du, was ist denn der Grund, warum bist du jetzt auf den YubiKey wieder so gekommen?

Thomas: Du hattest den die letzten Jahre nicht so intensiv in Benutzung, oder?

Andrej: Ich weiß nicht, hatte ich Bock drauf und lag hier rum und weil ich

Andrej: meinen Desktop halt neu gemacht habe, dann dachte ich, komm,

Thomas: Okay.

Andrej: dann probiere ich es mal und mache es mal richtig.

Andrej: Zu dem Thema

Thomas: Ich habe mich nämlich ein bisschen, also meine, ich habe es eine Zeit lang sehr intensiv genutzt.

Andrej: LUKS mit...

Thomas: Aber dann waren die praktischen Faktoren, haben zu viel Gewichtung bekommen.

Thomas: Also ich glaube, ich hatte es schon mal erwähnt, wenn du abends auf der Couch sitzt und bist belagert von Frau und Hund oder sowas.

Thomas: Und du brauchst deinen YubiKey, der am Schlüsselbund unten an der Eingangstür hängt,

Thomas: nur damit du dich jetzt hier irgendwo einloggen kannst.

Thomas: Sehr nervig.

Thomas: Und ich habe jetzt so einen Mittelweg für mich gefunden, der noch funktioniert.

Thomas: Kommen wir später zu.

Thomas: Es gibt nämlich bei Strongbox, das ist die KeePass-Software für iOS und macOS,

Thomas: da gibt es die Möglichkeit, einen virtuellen Key anzulegen.

Thomas: Du gibst also quasi das Secret ein, was deinen YubiKey generiert hat

Thomas: und hast dann auf beiden Seiten

Thomas: dasselbe. Und der ist biometrisch

Thomas: gesichert, also in der sicheren

Andrej: Ja, und

Thomas: Enklave vom Mac.

Thomas: Und dann musst du halt Touch-ID. Ist natürlich nicht

Thomas: ganz so sicher, natürlich, aber weil es

Thomas: halt in der Enklave drin ist,

Thomas: bilde ich mir ein, also

Thomas: nicht nur bilde ich mir ein, hast du zumindest

Thomas: den Effekt, dass wenn sich jemand auf deiner Kiste

Thomas: doch irgendwie einloggt

Thomas: und

Thomas: das alleine reicht ja nicht von außen.

Thomas: Also er müsste immer noch den Finger haben.

Thomas: Na gut.

Andrej: bei mir ist das gerade praktisch, ich habe

Andrej: zwei gleiche YubiKeys

Andrej: von der Version her und einer steckt im Desktop

Andrej: fest drin, einer im Laptop. Ich überlege

Andrej: mir, ob ich mir so ein USB-Verlegungskabel

Andrej: einfach hier auf den Tisch lege und dann

Andrej: habe ich halt einfach eine praktische, ein bisschen

Andrej: wie Fingerabdruck beim MacBook, das ist ja auch super

Andrej: praktisch. Beim Framework nutze ich es

Andrej: nicht, weil es funktioniert beim Anfänger

Andrej: irgendwie nicht. Ich bin da nicht so happy mit.

Thomas: Okay. So, jetzt hatte ich dich unterbrochen. Du wolltest irgendwas mit LUKS, glaube ich, sagen. Irgendein Filmname, oder? Nein? Okay. Gibt's denn da noch einen anderen Faktor? Oder ist es wirklich so, wenn der Server da ist und der Client anfragt, Attacke.

Andrej: Das ist meine persönliche Erfahrung.

Andrej: Im Internet sagen andere Leute Besseres.

Andrej: Ich habe auch immer mit meiner rechten Hand

Andrej: generell, also mit dem rechten Daumen immer Probleme

Andrej: bei dem Aqara-Schloss, aber mit

Andrej: meinem linken geht es. Keine Ahnung,

Andrej: vielleicht bin ich rechtstrocken getrocknet oder sowas.

Andrej: Genau, LUKS geht auch

Andrej: und dann dachte ich so, okay,

Andrej: das kommt gleich noch zu dem anderen Thema, was ich habe,

Andrej: aber das ziehe ich mal vorweg, weil es gerade thematisch passt.

Andrej: Und ich habe ja meinen Server auch verschlüsselt mit LUKS,

Andrej: alle Platten mache ich schon seit Jahren, immer.

Andrej: Hatte ich, glaube ich, auch schon mal erwähnt.

Andrej: Aber es war ein bisschen nervig, weil, gut, bei Proxmox kann es halt passen,

Andrej: ein Tipp mit einer Konsole, aber das macht auch keinen Spaß.

Andrej: Und jetzt bin ich über ein Projekt gestoßen, das ist auch schon ein bisschen älter,

Andrej: aber ich habe davon nie gehört.

Andrej: Kennst du LUKS, Clevis & Tang oder Tang & Clevis?

Andrej: Schon mal davon gehört?

Andrej: Ja, nee, Tang ist der Server, Clevis ist der Client.

Andrej: Und im Endeffekt ist das nichts anderes als über Netzwerk eine LUKS-Entschlüsselung oder Verschlüsselung natürlich auch und das funktioniert so, der Server ist super klein, läuft irgendwo und Clevis als Client nistet sich ein in den Bootprozess als mögliche und die fragen was an.

Andrej: Ich habe mir eineinhalb Stunden

Andrej: Talk dazu angekollt. Die erste Stunde

Andrej: ging um den mathematischen

Andrej: Mechanismus, warum das sicher ist.

Andrej: Weil ich das im Gehen gemacht habe,

Andrej: nur Kopfhörer, und die Slides dazu nicht gesehen habe,

Andrej: habe ich das überhaupt nicht verstanden.

Andrej: Ich weiß nur, dass

Andrej: wenn du den Client klaust, hast du

Andrej: kein Secret, womit du das LUKS entschlüsseln kannst.

Andrej: Wenn du den Server klaust, hast du auch kein Secret,

Andrej: womit du das entschlüsseln kannst. Das ist so eine mathematische

Andrej: Geschichte. Keine Ahnung.

Andrej: Da kann man sich ja mal reinziehen. Auf jeden Fall,

Andrej: solange dieser Server halt verfügbar ist,

Andrej: kannst du einfach einen Slot enrollen in LUKS

Andrej: und das Ding macht es automatisch.

Andrej: Und das Ding läuft auch in Raspberry Pi.

Andrej: Das braucht gar nicht viele Ressourcen.

Andrej: Das ist total spannend.

Andrej: Da wurde ich dann richtig fuchsig.

Andrej: Da können wir gleich, ja, vielleicht gut.

Thomas: Aber ja, das ist natürlich das Problem, ne? Also ich habe das hier auch und das ist zum Glück nur bei dem Host, der auch ein PyKVM angeschlossen hat. Da kann man dann zur Not darüber rauf, also nicht zur Not, sondern das ist dann halt der Weg. Oder ich habe das zweierlei gelöst. Also das habe ich als eine Variante.

Andrej: Ja, du kannst, glaube ich,

Andrej: oh warte, das weiß ich nicht.

Andrej: Ich meine, du kannst das mit dem TPM auch zusammen machen.

Andrej: Das heißt, der Client, Clevis, muss ein Secret bekommen,

Andrej: als auch der TPM muss verfügbar sein.

Andrej: Das heißt, an der Hardware wurde nicht rumgefummelt.

Andrej: Und dann, ich glaube, das heißt

Andrej: ein Shamir Shared Secret, dieses SSS.

Andrej: Gibt es ja diese

Andrej: Gibt es ja diese Secrets

Andrej: Geschichten, wo du sagst, okay,

Andrej: es gibt fünf Leute, die haben ein Secret,

Andrej: drei davon müssen da sein, damit das jetzt

Andrej: entschlüsselt wird. Solche Sachen gibt es ja.

Andrej: Ich glaube, das heißt Shamir Secrets.

Andrej: Und ich meine, das kannst du damit auch konfigurieren.

Andrej: Ich fand das super spannend. Ich werde das, glaube ich, machen.

Andrej: Also ich bocke auf den Moment, mal rumzuspielen.

Andrej: Also wer mal Bock hat auf Festplattenverschlüsselung,

Andrej: aber kein Bock hat, hier jetzt mal

Andrej: Passwort einzutippen, was ich voll nachvollziehen kann,

Andrej: Wenn mal so ein Reboot oder Stromausfall,

Andrej: dann musst du halt da hin, ne?

Andrej: Gut, bei Stromausfall ist sicher das Problem,

Andrej: dass der Tang-Service halt eher da sein muss

Andrej: als sein Clevis, der die Anfrage schickt.

Andrej: Aber wenn das, das ist

Andrej: echt nur ein kleines Binary, soweit ich weiß,

Andrej: oder kleiner Miniserver, dann

Andrej: lohnt sich das ja vielleicht mal, da Zeit zu investieren.

Andrej: Ja. Ja, dann musst du aber den Schlüssel

Thomas: Die andere Variante ist, das Root-Datei-System ist nicht verschlüsselt, du kannst das System ganz normal starten, aber alles, was irgendwie mit Payload zu tun hat, also das gesamte Docker-Volume quasi, also das Überverzeichnis, das Parent-Verzeichnis, wo das ganze Docker-Kram drin ist, das alles liegt auf einem verschlüsselten Volume.

Thomas: in dem Fall ZFS, aber das spielt keine Rolle.

Thomas: Und der Schlüssel, den musst du dann halt entweder nach dem Boot händisch eingeben mit SSH

Thomas: oder du kannst den auch potenziell verschlüsselt zum Beispiel in einem eCryptfs lagern,

Thomas: aber dann wird es schon ein bisschen komplexer.

Andrej: wieder wohin tun, ne? Das ist ja mal das

Thomas: Das eCryptfs entschlüsselt sich, glaube ich, alleine schon dadurch,

Andrej: Problem. Ach so, okay, ja, kann sein.

Thomas: dass du dich anmeldest mit deinem Benutzernamen und Passwort mit PAM quasi.

Thomas: Ich meine, so war es.

Andrej: Aktuell mache ich's, ich

Thomas: Ja, okay.

Andrej: hab noch leider Proxmox,

Andrej: das heißt, da muss ich's eintippen.

Andrej: Dann wird mein Root-Endschlüssel bootet

Andrej: und auf meinem Root liegt der Key für meine Disks,

Andrej: für mein Hard-Disk-Array, für mein RAID.

Andrej: Und das mache ich mit, ich glaube, /etc/crypttab ist das, glaube ich.

Andrej: Da kannst du das halt hinterlegen.

Andrej: Und natürlich habe ich immer noch die Möglichkeit,

Andrej: das per Hand abzutippern, wenn ich Bock habe.

Thomas: Da muss ich jetzt gerade wieder an dieses neue MacOS-Feature denken.

Andrej: Nur ist das sehr, sehr lang und das werde ich nicht tun.

Andrej: Vor allem nicht in einer Konsole, wo du nicht mal Feedback bekommst.

Thomas: Ich weiß nicht, ob das 26 oder 27 war, wo sie eingebaut haben,

Thomas: dass wenn du verschlüsselte Disks hast auf einem Server

Thomas: und der dann bootet, dass du per SSH schon draufkommst,

Thomas: damit du entschlüsseln kannst.

Andrej: Ach, das gibt es auch schon für Linux.

Andrej: Das heißt, da kannst du Dropbear-SSH für nehmen.

Thomas: Ah, nice.

Andrej: Das ist ein kleiner SSH-Client, Dropbear heißt der.

Andrej: Und der startet einfach schon super, super früh.

Andrej: Kannst du auch auf einen anderen Port legen als 22,

Andrej: damit es nicht kollidiert.

Andrej: Und dann kannst du genau das Gleiche auch machen.

Thomas: Nice.

Andrej: Das heißt, du kannst deinen Root völlig verschlüsseln.

Andrej: Und anstatt, dass du es in so eine Konsole eintippst,

Andrej: kannst du es dann über den Dropbear-SSH machen.

Andrej: Auch fein.

Thomas: Habe ich was zugefunden, cool.

Thomas: Packen wir mal in die Shownotes.

Andrej: Ich weiß gar nicht, warum ich es jetzt nicht benutze.

Thomas: Ja, frage ich mich auch gerade.

Andrej: Ja, Schmerzen.

Andrej: Dann siehst du, wie oft ich den reboote.

Thomas: Ja.

Andrej: Genau.

Andrej: Das Thema wollte ich nur kurz anschneiden.

Andrej: Das brauchen wir nachher nochmal.

Andrej: Jetzt kommt aber ein großer Sack.

Thomas: Ein großer Sack.

Andrej: Ganz, ganz großer Sack.

Thomas: Kannst du das?

Andrej: Geschenke.

Andrej: Nee, nicht Geschenke.

Thomas: Du kennst ja nix.

Andrej: Andrej kann nix, sag ich dazu.

Andrej: Kann nix, ne?

Andrej: Genau.

Andrej: Ich habe, ich weiß gar nicht, wie es angefangen hat,

Andrej: aber schon länger, den Nix-Bug gefressen.

Andrej: Was ist Nix?

Andrej: Leider ist die Nomenklatur ein bisschen blöd bei denen.

Andrej: Es gibt NixOS, das Betriebssystem, es gibt Nix den Paketmanager und es gibt Nix die Sprache. Es hilft nicht am Anfang, dieses Thema zu durchdringen. Nun ja, was ist es? Warum finde ich das so spannend?

Thomas: Okay.

Andrej: Wir beide kommen ja aus der, oder nicht kommen,

Andrej: wir haben schon super viel deklarativ versucht,

Andrej: Betriebssysteme aufzubauen.

Andrej: Mit Ansible, mit Puppet, mit Chef, mit Salt,

Andrej: die habe ich zumindest alle angefasst.

Andrej: Und natürlich Bash.

Andrej: Mit varying degree of success, würde ich mal behaupten.

Thomas: Ja.

Thomas: Mit Container-Linuxen und Containern.

Andrej: Ja, Container-Linux und mittlerweile ist ja auch

Andrej: der ganze heiße Scheiß im uBlue-Linux

Andrej: mit all seinen Nachteilen.

Andrej: Ja, und das hat mich immer so,

Andrej: ich fand das Thema total spannend,

Andrej: Aber ich fand, da war noch nichts Geiles und jetzt habe ich NixOS gefunden.

Andrej: Und dabei ist das noch nicht mal neu, das existiert seit 20 Jahren oder so.

Andrej: Das ist noch richtig alt.

Andrej: Also ich habe jetzt auch nicht mega den Plan.

Andrej: Ich habe nur ein Server jetzt aufgesetzt und Desktop und spiele damit jetzt rum

Andrej: und wollte jetzt einfach mal kurz mal ein bisschen schmackhaft machen, worum geht es denn hier.

Andrej: So ein Aperitif rüberbringen.

Thomas: Passt.

Thomas: Wenn du jetzt auch mega den Plan hättest, dann würde das ja gar nicht hier in den Podcast passen.

Andrej: Okay, genau.

Andrej: Also ich habe ja schon erwähnt, Nix ist eine Sprache, das ist eine funktionale Programmiersprache.

Andrej: Fällt mir wahnsinnig schwer.

Andrej: das zu verstehen. Mein Hirn ist dafür

Andrej: einfach noch nicht gemacht, aber ich sage mal so,

Andrej: Claude hilft unfassbar gut dabei.

Andrej: Also ich bin erschrocken, wie gut die Ergebnisse

Andrej: sind, voll mit Opus. Um das mal

Andrej: sich erklären zu lassen, warum das

Andrej: so jetzt aufgebaut ist und so weiter.

Andrej: NixOS, wie gesagt, das Betriebssystem und dann gibt es halt

Andrej: noch den Paketmanager. Der ganze

Andrej: oder der Nachteil bei

Andrej: Ansible und Co. ist, oder

Andrej: ein Bash-Script, du hast

Andrej: ja, du versuchst etwas deklarativ zu beschreiben,

Andrej: ob es jetzt mit YAML

Andrej: ist, mit Ansible oder was ist das

Andrej: in, was ist das bei Puppet?

Andrej: Was war das nochmal? Ruby, ne?

Andrej: Irgend so ein Ruby-Syntax-

Andrej: Geschichtchen. Das ist immer

Andrej: das, du kannst da zwar zum Beispiel

Andrej: sagen, okay, installiere bitte folgendes

Andrej: Paket Nginx, das ist dann auch deklarativ.

Andrej: Wenn du diesen Block dann rausnimmst,

Andrej: dann ist Nginx immer noch

Andrej: installiert und

Andrej: du hast eventuell einen unterschiedlichen Zustand,

Andrej: je nachdem zu welchem Zeitpunkt

Andrej: welcher Server wann provisioniert wurde bei diesen

Andrej: Servern, weil das Skript halt eventuell anders war

Andrej: zu dem Zeitpunkt. Bei Nix ist das anders.

Andrej: Die versuchen das komplett anders zu lösen.

Andrej: Das System besteht erstmal aus

Andrej: zwei Dateien, also die das

Andrej: beschreiben. Einmal die Configuration.nix,

Andrej: nicht irgendwo in ETC,

Andrej: und dann gibt es einmal die Hardware-Configuration.nix.

Andrej: Die Hardware-Configuration.nix,

Andrej: die wird generiert. Da ist, ich glaube,

Andrej: das New-ID von der Festplatte drin,

Andrej: Machine-ID, vielleicht irgendwie solche Sachen.

Andrej: Hab ich gar nicht so reingeguckt. Braucht man gar nicht.

Andrej: Musste nur ins Git packen nachher und gut ist.

Andrej: Und in der Configuration.nix steht

Andrej: halt das drin, was du reinschreibst.

Andrej: Und das bildet das System ab.

Andrej: Und das ist total genial. Du sagst einfach,

Andrej: ich hätte gerne zum Beispiel Nginx

Andrej: installiert oder SSH, dann sagst du einfach

Andrej: packages.ssh.enable.

Andrej: Done.

Andrej: Und dann hast du diese Konfiguration

Andrej: geschrieben. Was du machst, ist, du führst

Andrej: ein Kommando aus und dann

Andrej: baut das System eine neue

Andrej: Generation, heißt das,

Andrej: und das Paket läuft. Und viele Dinge

Andrej: sind im Hintergrund schon passiert, weil

Andrej: dieses Enable-SSH ist ein Modul,

Andrej: welches zum Beispiel dein

Andrej: Firewall-Port aufmacht, den User

Andrej: erlaubt, etc. pp. Ganz viele

Andrej: Dinge passieren da. SSHD startet

Andrej: eventuell, wenn du

Andrej: nicht nur einen Agent hast,

Andrej: nicht nur einen Client, sondern halt einen Server.

Andrej: Und da passieren dann so ganz viele Dinge. Auf diese

Andrej: Dinge hast du auch Einfluss. Du kannst auch

Andrej: sagen, SSH enable, dann machst du

Andrej: eine geschweifte Klammer auf und dann

Andrej: hast du da so Options drin. Zum Beispiel

Andrej: bitte keine Passwort

Andrej: Authentication zulassen, nur

Andrej: Root von Localhost etc. pp.,

Andrej: was du halt alles einstellen kannst. Das heißt,

Andrej: du schreibst wirklich

Andrej: literally alles in die

Andrej: configuration.nix und gar nichts

Andrej: mehr in etc.

Andrej: sshd

Andrej: slash config slash .1

Andrej: Es gibt ja diese nummerierten Configs

Andrej: in sshd.d

Thomas: Mhm.

Andrej: und so einen Blödsinn. Du schreibst alles

Andrej: da rein. Dann führst du diesen Befehl

Andrej: aus und dieser Befehl,

Andrej: Dieser NixOS Rebuild Switch, der sorgt dafür, dass die Dinge passieren, die passieren sollen.

Andrej: Ein Snapshot erzeugt wird, ein Symlink umgesetzt wird, weil das aktuelle System ist im Endeffekt nur ein Symlink auf was installiert ist.

Thomas: Mhm.

Andrej: Hast du es verkackt, kannst du zurückrollen. In Sekunden.

Thomas: Also ist das ein Symlink auf einen Stand, wo alles drin ist?

Thomas: Oder ist das quasi jede Datei irgendwie ein Symlink auf irgendwas?

Andrej: Gute Frage. Dafür müsste ich jetzt mal in den Nix Store reingehen.

Thomas: Mhm.

Andrej: Nix hat ja diesen Paketmanager und alles, wirklich alles ist in slash Nix slash Store drin.

Andrej: Hast du Python 11 installiert, hast du dort Python 11 drin.

Andrej: Jetzt kommt aber der Clou.

Andrej: Da das eine funktionelle Programmiersprache ist

Andrej: und das Ziel von dieser auch ist,

Andrej: bytegenau deine Programme zu haben,

Andrej: sorgt es dafür, dass der Compiler, die Flags,

Andrej: andere Dependencies sind Inputs für die Funktion,

Andrej: Python jetzt zu bauen.

Andrej: GCC so und so, das und das, Build Flag.

Andrej: Und dann wird das gebaut.

Andrej: Und was am Ende rausputzt, ist dann Python 11 mit einem Hash.

Andrej: Ich glaube, der Hash ist in der Mitte und danach steht irgendwie die Python 11 und dann die Version von Python oder von dem Paket selbst.

Andrej: Und dieser Hash ist exakt der gleiche, wenn die Inputs die gleichen sind.

Andrej: Hast du die gleiche GCC-Library, hast du die gleichen Build-Flags, hast du die gleichen Dependencies, dann ist der Hash identisch und das liegt in deinem Nix Store.

Andrej: Baust du Python 11 mit einem anderen Compiler, also hier mit musl zum Beispiel oder sowas, dann kriegst du einen anderen Hash, hast aber auch Python 11.

Thomas: Mhm.

Andrej: Und jetzt kommt der Clou, dem wir ja mit Docker und Containern jetzt ein bisschen ausgeholfen haben, ist diese Dependency-Hell, dieses, mein Programm braucht Python 11, mein Programm braucht Python 12, du kannst aber nur mutually exclusive eins von beiden installieren, weil, whatever, und das lösen die, indem die einfach jede einzelne Version gehashed in diesen Nix-Store liegen lassen können.

Thomas: Okay, das heißt, wenn du eine Dependency hast von Python oder irgendeine Python-Bibliothek

Andrej: Und egal was, ImageMagick oder genau, er würde es bauen, wenn es nicht im Nix Cache vorhanden ist. Der Nix Cache ist so ein riesen Cache, den ich glaube teilweise auch von AWS gesponsert wird, wenn ich mich recht entsinne. Das heißt, die ganzen Binary sind da und er würde ihn einfach runterladen. Dann hast du halt mehrfach das Ding da drauf.

Thomas: oder irgendeine Software, die auf Python läuft,

Thomas: hat eine Dependency auf Python mit irgendwelchen Flags,

Thomas: dann, und du hast einen Python installiert,

Thomas: das aber nicht exakt diese Flags hat,

Thomas: dann würde er nochmal ein anderes bauen

Thomas: oder fertig gebaut installieren,

Thomas: wenn ich das richtig verstehe.

Thomas: Ja, okay, interessant.

Andrej: Voll der spannende Ansatz, weil du, ja, dieser Nix Store ist auch der Dreh- und Angelpunkt im Endeffekt allem.

Thomas: Weil das auf einer so globalen Ebene funktioniert, ne?

Andrej: Das ist auch einer der Nachteile, die Nachteile kann ich nachher nochmal zusammenfassen,

Andrej: aber einer der Nachteile ist, du kannst jetzt nicht mal eben BindView runterladen und das ausführen.

Andrej: Es geht nicht, weil die Pfade nicht existieren.

Andrej: Es gibt keinen User Lib, es gibt keinen, wo die Shared Libraries drin sind,

Andrej: weil Shared Libraries haben ja den Nachteil, dass sie Shared sind und dadurch halt dieses Dependency Locking haben,

Andrej: wenn du halt unterschiedliche Abhängigkeiten hast.

Thomas: Das heißt, im Grunde für alles, was installiert ist,

Andrej: Genau, also und nicht nur die Libraries findet,

Thomas: muss er eine eigene Umgebung zusammenbauen,

Thomas: damit diese Applikation die ganzen Libraries findet, die es braucht.

Thomas: Und die sucht... genau, genau, mit exakt den Flags und allem Drum und Dran.

Andrej: sondern die Libraries in der Version.

Thomas: Also genau das, was das Ding braucht.

Andrej: Das ist halt nachher bytegenau.

Andrej: Wenn ich dir mein, da kommen wir gleich nochmal drauf,

Andrej: wegen Flake und so, wenn ich dir meine Konfiguration gebe,

Thomas: Und derselbe Compiler, also nicht nur die...

Andrej: in fünf Jahren, selbst wenn der Binary Cache nicht mehr verfügbar ist,

Andrej: solange der Source noch da ist,

Andrej: baust du dir das byte für byte exakt wieder auf.

Andrej: Nicht der gleiche, nicht die gleiche, derselbe.

Thomas: Okay, spannender Ansatz.

Andrej: Das ist echt wichtig.

Andrej: Ja, also, es gibt keine Dependency-Hell.

Andrej: Gibt es trotzdem beim Paketieren.

Andrej: Das ist ein bisschen komplexer.

Andrej: Also, so eine Funktion zu schreiben.

Andrej: Ich habe es noch nicht gemacht.

Andrej: Ich möchte es machen,

Andrej: weil bisher bin ich noch nicht in die Bedrohung gekommen,

Andrej: dass ein Paket nicht vorhanden war,

Andrej: weil Nix-Packages tatsächlich sogar größer ist als das AUR,

Andrej: also das Arch User Repository.

Andrej: Ich habe jetzt leider, ja, ich auch nicht.

Thomas: Was überraschend ist, weil ich habe noch nie jemanden getroffen, der das nutzt.

Thomas: Sie wird es geben, natürlich, aber dass die Userbase so groß ist,

Thomas: dass man so ein großes Package-Repository abbildet.

Thomas: Das ist überraschend.

Andrej: Ja, genau.

Andrej: Das ist auf jeden Fall ein Thema,

Andrej: das schreibe ich mir auch die nächsten Wochen, Monate

Andrej: mal auf, dass ich da mal Bock drauf habe, was zu paketieren.

Andrej: Problem ist, wenn es nichts

Andrej: gibt und er schon paketiert ist, das wird es machen.

Thomas: Nein, Luxusprobleme.

Andrej: Genau, das heißt,

Andrej: wir haben diese Konfigurationsdatei,

Andrej: wir interagieren mit dieser Konfigurationsdatei

Andrej: mit Nix-Kommandos, die uns erlauben,

Andrej: du kannst auch sagen, ich

Andrej: NixOS Rebuild test, dann wird

Andrej: deine Umgebung gebaut und

Andrej: aktiviert, auch der Symlink

Andrej: wird gesetzt auf deine aktuelle,

Andrej: aber wenn du zum Beispiel so mit

Andrej: SSH oder Netzwerk-Kram rumspielst

Andrej: und du hast dich ausgeschlossen,

Andrej: kannst du dann einfach rebooten, weil es wurde nicht persistiert.

Thomas: Mhm, okay.

Andrej: So wie früher viele Firewalls

Andrej: das gemacht haben. Du applyst

Andrej: dein Change und dann

Andrej: kannst du mal gucken,

Thomas: Das heißt, das machst du, wenn du explizit Tests als Argument ergibst.

Andrej: ob du noch draufkommst. Wenn nicht, dann

Andrej: machst du... Genau.

Thomas: Okay.

Andrej: Test erzeugt auch keine Generation, weil

Andrej: eine Generation ist dann

Andrej: dieser Symlink,

Andrej: der dann diesen Zustand beschreibt zu dem Zeitpunkt.

Thomas: Okay.

Andrej: Jeder von diesen Generationen

Andrej: ist ein Bootbar, wird auch in einem Bootmenü eingetragen.

Andrej: Dann kannst du einfach durchscrollen und sagen,

Andrej: ja, ich hätte jetzt gerne die Version.

Andrej: Vorsicht, rollt nicht die Konfiguration.nix zurück,

Andrej: sondern nur den Zustand.

Andrej: Wenn dort noch ein Bug drin ist, tut weh.

Andrej: Oder kann weh tun.

Andrej: Muss man einfach drauf achten.

Andrej: Genau.

Thomas: Zu dieser Konfiguration nichts.

Andrej: Wie funktioniert...

Thomas: Es sei denn, da kommst du eh noch drauf.

Thomas: Aber du sagtest, die beschreibt dein gesamtes System.

Andrej: Mhm, yep.

Thomas: Also Pakete, die installiert sein sollen

Thomas: und teilweise ja sogar, wie sie konfiguriert sein sollen.

Thomas: mit der geschweiften Klammer und

Thomas: erlaube kein Passwort-Zugriff.

Thomas: Gehe ich denn recht in der

Thomas: Annahme, dass du auch sagen kannst, an der Stelle,

Thomas: du könntest auch da Includes definieren

Thomas: auf andere .nix-Dateien,

Andrej: Das machst du noch anders, aber kommen wir gleich drauf.

Thomas: damit du sagen kannst, für Entwicklungsumgebung

Thomas: für mein

Thomas: Software X ist hier eine .nix-Datei

Thomas: und da ist alles drin, was

Thomas: die Entwicklungsumgebung braucht.

Thomas: Und du, okay, cool, dann

Thomas: das stimmt. Aber das heißt,

Andrej: Genau.

Andrej: Was du machen kannst,

Andrej: zum Beispiel, ich mache mal ein paar kleine Beispiele hier.

Andrej: Bei mir steht time.timeZone gleich Europe/Berlin.

Andrej: So, Zeitzone gesetzt.

Andrej: Ähnliches Kommando für den Host nehmen.

Andrej: Mist, sehe ich gerade nicht.

Andrej: Egal.

Andrej: Oder du kannst einfach so eine Liste abgeben.

Andrej: Zum Beispiel, ich hätte jetzt gerne

Andrej: environment.systempackages.

Andrej: Das sind einfach die Pakete,

Andrej: die dem System zur Verfügung stehen sollen.

Andrej: Also auch dem Root-User.

Andrej: Das ist ja manchmal praktisch,

Andrej: was der mal ein paar mehr Tools bekommt,

Andrej: als die mitgeliefert werden.

Andrej: Da sind bei mir zum Beispiel ZSH, WGET, CURL,

Andrej: HTOP, GIT, QEMU und BIND für dig.

Andrej: Also Network Debugging und so.

Andrej: Und das beschreibt es halt.

Andrej: Dann baust du und kriegst die Pakete.

Andrej: Und das dauert halt so lange, das dauert nicht lange.

Andrej: Das ist jetzt irgendwie nicht so wie so ein Ansible-Run.

Andrej: Ich habe das mal probiert mit Ansible,

Andrej: so ein deklaratives OS zu machen.

Andrej: Boah, ist das painful, das ist so langsam.

Andrej: Und das ist halt wirklich, es dauert so lange,

Andrej: wie es runterladen hat, von so einem Binary

Andrej: und ein bisschen Linkerei.

Andrej: Aber das ist fix.

Andrej: Das machst du mal eben im Alltag, das ist handelbar.

Andrej: Das ist nicht so aufwendig.

Andrej: Ich würde sagen, nicht compilen.

Thomas: weil wir hatten vorhin gesagt, da wird

Thomas: was kompiliert teilweise.

Thomas: Das heißt aber, es gibt für die Standard-Dinge alles?

Andrej: Es wird nicht compiled.

Andrej: Solange es Binarys gibt, werden die runtergeladen.

Thomas: Ja.

Andrej: Ich hatte noch keinen Compile-Prozess bei mir.

Thomas: Okay.

Andrej: Es wird gebaut im Sinne von

Andrej: diese Derivation wird gebaut.

Andrej: Das kann manchmal dauern, wenn du super viele

Andrej: Pakete hinzugefügt hast und ganz viele

Andrej: Module und Optionen. Wenn du ganz

Andrej: viel auf einmal machst, dann kann das so ein paar

Andrej: Sekunden mehr dauern.

Thomas: Ich hatte schon ein bisschen Sorge vor...

Thomas: Also jeder, der mal Gentoo benutzt hat, weiß.

Thomas: Wenn der X-Server neu kompiliert wird.

Thomas: Kannst du mehrere Kaffee trinken gehen?

Andrej: Machst du erstmal Urlaub.

Thomas: Okay.

Andrej: Genau. Dann, wie machen

Andrej: die ihr Release? Das fand ich auch ganz spannend.

Andrej: Es gibt ja im klassischen Sinne

Andrej: LTS und Rolling Release und diverse

Andrej: Variationen da drin.

Andrej: Arch natürlich auf der ganz harten Seite mit

Andrej: Rolling oder Bleeding Edge, weil

Andrej: AUR zwischendurch

Andrej: und dann Ubuntu, Debian mit diesen

Andrej: LTS, die 2, 5

Andrej: je nachdem, was für ein Support-Paket man auch

Andrej: kaufen kann und so, ne, kriegst halt

Andrej: dann deine x Jahre, deine neuen

Andrej: Pakete. Wenn ich das richtig

Andrej: verstanden habe, hast du bei NixOS

Andrej: zwei Channels aktuell. Der eine

Andrej: heißt 26.5

Andrej: aktuell, also jetzt von diesem Jahr

Andrej: im Mai und dann gibt's

Andrej: Unstable heißt der. Gibt diese zwei Channels.

Andrej: Wenn ich, wenn meine Recherche

Andrej: richtig ist, hält ein

Andrej: 26.5, 6 Monate.

Thomas: Okay.

Andrej: Dann gibt es 9.

Andrej: Da heißt dann wahrscheinlich

Andrej: 26.11 oder so.

Andrej: Oder 12. Ah nee, 26.12 wird es werden.

Andrej: Also dann ungefähr ein halbes Jahr

Andrej: halten die so. Dann haben die noch einen Monat

Andrej: Karenzzeit für Security-Updates und dann muss

Andrej: es halt auf den neuen Channel

Andrej: aufspringen. So. Diese

Andrej: Channels sind ein bisschen

Andrej: wie LTS, nur ein bisschen schneller.

Andrej: Aber wenn du jetzt

Andrej: NixOS installierst und ich mache das

Andrej: eine Woche später und wir haben den gleichen Channel,

Andrej: haben wir nicht den gleichen Stand.

Andrej: Weil es kann sein, dass zu dem Zeitpunkt

Andrej: der Pakete geupdatet wurden.

Thomas: Keine Ahnung.

Andrej: Das heißt, du folgst einem Channel.

Andrej: Das ist so ein bisschen wie bei Flatpak.

Andrej: Wie hieß das bei denen? Auch Channel?

Andrej: Ja, ne? Anyway.

Andrej: Nicht Flatpak, Flatcar meine ich.

Andrej: Ich pfeife.

Thomas: Ah, okay, ja.

Thomas: Kann sein.

Thomas: Ich glaube, das hieß Channel.

Andrej: Ja, genau.

Thomas: Genau.

Andrej: Und dem folgst du halt.

Andrej: Und danach wird immer relativ schnell deprecated.

Andrej: Und Unstable ist halt, was du daraus machst.

Andrej: Unstable kann halt viele Änderungen haben.

Andrej: Das Coole ist, du kriegst im Output auch häufig mit,

Andrej: hey, die Option für SSH,

Andrej: die du jetzt aktuell in deiner Konfiguration haben,

Andrej: die haben sich geändert.

Andrej: Hier sind die neuen Pfade.

Andrej: Das heißt, du kannst auch relativ entspannt migrieren,

Andrej: so bisher.

Thomas: Was heißt hier sind die neuen Pfade?

Andrej: Noch hatte ich keine großen Probleme, was das angeht.

Andrej: Habe ich tatsächlich auch noch nicht gemacht,

Andrej: weil es ist ja nur eine Warning.

Andrej: Ja, zum Beispiel das Modul SSH,

Andrej: die Option für SSH-Keys wurde jetzt in eine Suboption gepackt.

Andrej: Keine Ahnung, irgendwie sowas.

Thomas: Ah, okay.

Andrej: Das ist dann so interner von einem Modul.

Andrej: Genau.

Thomas: Weil du meintest ja vorhin, es gibt diese geschweifte Klammer auf.

Thomas: irgendwelche, bei BSD hat man das

Thomas: glaube ich früher Flavors genannt oder sowas,

Thomas: also irgendwelche

Thomas: Ausrichtungen oder Features aktivieren,

Thomas: deaktivieren. Das heißt, es ist aber nicht

Andrej: Das ist sehr flexibel.

Thomas: nur flach, also am Ende

Thomas: gibt es sogar eine Konfigurationssektion

Thomas: für jedes dieser Pakete.

Andrej: Das kann unendlich viele Ebenen haben,

Andrej: je nachdem, wie komplex das Modul halt ist.

Andrej: Also das ist das SSH-Modul, was viele Leute nutzen.

Andrej: Da kannst du halt super viel konfigurieren.

Andrej: Im Endeffekt alles, was du in der Config-Datei konfigurieren kannst.

Thomas: Das muss natürlich nur

Thomas: explizit abgebildet sein,

Thomas: in der Paketdefinition.

Andrej: Fast.

Andrej: Es gibt, also wenn du ein Modul nutzt, dann ja.

Andrej: Es gibt aber, glaube ich, auch Sachen,

Andrej: die kannst du einfach templaten.

Andrej: Dann nutzt du halt die Konfigurationssprache,

Andrej: die das Tool nutzt, JSON, YAML, whatever,

Andrej: und baust das halt da rein.

Andrej: Der Vorteil ist, es ist trotzdem in der Nix-Konfiguration.

Andrej: Sie kann nur nicht evaluiert werden.

Andrej: sie kann syntaktisch

Andrej: evaluiert werden, im Sinne von, ist das

Andrej: ein valides YAML vielleicht?

Andrej: Aber selbst das ist dann schwierig, weil das

Andrej: halt dann abhängig von dem

Andrej: Tool ist, was das nutzt.

Andrej: Ist eine Struktur, ja.

Thomas: Das heißt, am Anfang

Thomas: habe ich irgendwie diese, warum auch immer,

Thomas: diese geschweifte Klammer gesehen als

Thomas: steht halt hinter der Paketdefinition

Thomas: einfach so in einer Zeile drin, aber

Thomas: ich muss mir das eher wie so ein Objekt oder eine

Thomas: Struktur vorstellen, die ich aufmache

Thomas: und dann die sogar mehrere Ebenen haben

Andrej: Im Endeffekt glaube ich ein Attribute-Set, weil das

Thomas: kann.

Andrej: du holst dir dann einfach

Andrej: bei mir zum Beispiel Hardware.Bluetooth.

Andrej: Ich hatte kein Bluetooth hier. Ich habe mich gefragt,

Andrej: wo ist denn mein Bluetooth? Ja gut, muss ich

Andrej: Hardware.Bluetooth gleich, Klammer auf,

Andrej: Enable gleich true.

Andrej: Und ich hätte auch direkt sagen, Hardware.Bluetooth enable.

Andrej: Aber dann ist das nur eine Zeile und ich habe diese Struktur nicht.

Andrej: Aber ich brauche zum Beispiel auch Power on Boot True.

Andrej: So, dann baue ich diese Klammer auf.

Andrej: Dann kannst du so peu à peu einfach ganz viele Optionen nacheinander reinsetzen.

Thomas: Cool. Während der Laufzeit. Und dann würde

Andrej: Genau, fand ich auch.

Andrej: So, und jetzt gehen wir mal, genau, wir hatten das mit dem Switch.

Andrej: Der baut eine Generation, die immer bootbar ist.

Andrej: Ist im Boot-Menü eingetragen.

Andrej: Kann man auch während der Laufzeit immer wechseln.

Andrej: Jetzt kommen wir zu dem Thema, also einfach nur NixOS Switch.

Andrej: Ich glaube, Rollback war es, glaube ich, oder so.

Andrej: Oder Restore, habe ich vergessen.

Andrej: Ja, gar kein Thema.

Thomas: ja gegebenenfalls, dann hättest du auf einmal wieder

Andrej: Fand ich auch krass.

Thomas: Dinge nicht mehr installiert, weil

Thomas: waren in der vorherigen Generation nicht dran.

Thomas: Okay. Nice. Ja. Interessant.

Andrej: Gibt es ein paar Sachen, da musst du aufpassen,

Andrej: wenn du beim Bootloader was umänderst.

Andrej: Solche Sachen, klar, da musst du einen Reboot machen.

Andrej: Ich habe den Hostname geändert, da habe ich auch ein paar Sachen gelernt.

Andrej: Wenn du den Hostname änderst und das in der Laufzeit machst,

Andrej: dann kannst du Chrome nicht mehr benutzen.

Andrej: Chrome kriegt dann nämlich ein Error

Andrej: und macht ein Logfile auf deinem Profil.

Andrej: Wahrscheinlich ein Security-Feature,

Andrej: dass jemand nicht deine Cookies und so klauen kann,

Andrej: mal eben so.

Andrej: Ich weiß nicht warum, aber

Andrej: Logfile entfernen, da konnte ich Chrome wieder starten.

Andrej: Ich habe mich sehr gewundert. Genau, dann gehen wir mal zu dem Thema.

Thomas: Okay. Ja, das ist doch krass.

Andrej: Jetzt haben wir diese Channels, das ist ein bisschen

Andrej: krass, dass du alle sechs

Andrej: Monate das machen musst, weil

Andrej: es ist halt fix, es ist nicht ganz wie Arch,

Andrej: aber es ist auch schnell manchmal.

Thomas: Also, ob sich das bei meinem Server machen

Thomas: wollen würde jedes Mal, weiß ich nicht.

Andrej: Jetzt kommen wir bei der geilen Punkt.

Andrej: Das Thema Flakes. Ich habe ja

Andrej: vorhin auch gesagt, du folgst ja einem Channel. Das heißt, wenn wir

Andrej: zu einem unterschiedlichen Zeitpunkt das installieren, haben wir

Andrej: nicht notwendigerweise die exakt gleichen Pakete.

Andrej: Und wir wissen ja, was das für ein

Andrej: Pain manchmal ist für Server, wenn du eine unterschiedliche Umgebung hast

Andrej: und du willst die eigentlich vereinheitlicht behandeln.

Andrej: Kettle versus Snowflake.

Andrej: Nun gibt es das seit 2021 experimentelle Feature,

Andrej: ein bisschen so wie die Google-Gmail-Beta,

Andrej: das sogenannte Flakes.

Andrej: Musst du einmal enablen, dann hast du es drin.

Andrej: Dadurch ändert sich auch ein bisschen, welche Kommandos du brauchst,

Andrej: wie du mit dem System interagierst.

Andrej: Ist aber nicht so wichtig.

Andrej: Ist so ein bisschen Syntax anders.

Andrej: Und was das macht ist, es generiert hier ein flake.lock-File

Andrej: und in diesem lock-File steht im Endeffekt die exakte Version drin

Andrej: von dem Paket, was du jetzt installiert hast.

Andrej: Das heißt, wenn du jetzt meine Konfiguration bekommen würdest

Andrej: und ich habe da meinen flake.lock drin,

Andrej: dann würdest du wirklich ein vollidentisches System bekommen,

Thomas: Das ist dann also der Version-Pin, wenn man so möchte.

Andrej: inklusive wirklich gehashter, bytegenauer Programmversion.

Andrej: Genau, das ist ein bisschen so wie die requirements.txt

Andrej: oder was es nicht alle gibt bei JavaScript und so.

Andrej: haben wir ja alles mal schon mal gesehen. Genau.

Andrej: Und das macht es halt dann auch ganz

Andrej: spannend, finde ich, weil dann ist es wirklich

Andrej: übertragbar von einem System

Andrej: auf den anderen. Das macht es halt auch easy zu spielen.

Andrej: Hey, du spielst mal, ne? Das Einzige,

Andrej: was du wegsichern musst, ist halt die Konfiguration

Andrej: selbst. Die ist völlig okay in Git zu packen

Andrej: und dein Home

Andrej: musst du halt wegspeichern, weil

Andrej: State ist halt

Andrej: schwierig, ne? Also, wenn du jetzt

Andrej: deinen Browser hast, den Cache und die Configs.

Andrej: Wobei, Konfig kommen wir noch zu.

Thomas: Einfach zu sagen, ich installiere mir hier einen Rechner neu und mit einem Tool, also mit dem Tool aus der Distribution sozusagen, kann ich sicherstellen, dass das wirklich nachher so aussieht wie vorher.

Thomas: Ich muss dann nur noch meinen State drüber kopieren.

Andrej: Ich fand es super, also technisch finde ich es

Andrej: interessant, als auch als Hoster

Andrej: und als Provider und so weiter.

Andrej: Aber was ich dann auch spannend fand, ich habe mal gelesen,

Andrej: in der Wissenschaft ist es auch total doof.

Andrej: Nehmen wir mal, voll gut,

Andrej: nimm mal an, du hast irgendwie

Andrej: Forschung gemacht, Messergebnisse, dann nutzt du

Andrej: irgendein Python-Tool, um die zu analysieren,

Andrej: zu berechnen und

Andrej: veröffentlichst das und fünf Jahre später

Andrej: baut jemand auf deiner Forschung auf,

Andrej: schreibt darüber eine Doktorarbeit etc. pp.

Andrej: Gibt ja tausend Möglichkeiten, aber der

Andrej: kriegt es nicht hin, die Forschungsergebnisse zu reproduzieren,

Andrej: weil vielleicht gab es

Andrej: einen Bug in dem Floating-Zahl

Andrej: GCC, weil GCC

Andrej: Floating-Zahlen halt falsch behandelt hat zu dem

Andrej: Pipe-Type, whatever. Da gibt es ja auch sowas.

Andrej: Und das kann das System

Andrej: halt auch in der Theorie lösen.

Andrej: Dass du halt drei Jahre später einfach eine identische

Andrej: Umgebung aufsetzt und

Andrej: das dann einfach nochmal empfährst.

Andrej: Also wirklich reproduzierbare

Andrej: Ergebnisse bekommst. Weißt du, durch

Thomas: Und gerade so im Hosting-Umfeld, weil du das ja auch gerade erwähnt hattest, da gibt es ja den Ansatz zu sagen, einfach damit etwas in einen gewissen Zielzustand kommt,

Thomas: betrachtest du es halt statt Snowflake

Thomas: irgendwie als Cattle. Das heißt, der

Thomas: State darf da nicht drauf sein in irgendeiner Form.

Thomas: Du schmeißt es weg und erstellst

Thomas: es from scratch von etwas,

Thomas: was durchgetestet ist,

Thomas: was gescannt wurde,

Thomas: alles, was dazu gehört. Genau.

Andrej: CI/CD-Ding, durch Security-Patch

Andrej: und so weiter.

Thomas: Und dann hast du im Grunde ein deterministisches

Thomas: System. Aber es heißt

Thomas: halt natürlich, dass, nehmen wir mal an, du hast Kubernetes

Thomas: Nodes und du willst eine Node,

Thomas: willst eine Sicherheitspatch einspielen,

Thomas: musst du wirklich alle Nodes durchrotieren

Thomas: und du musst wirklich Workloads umschieben

Andrej: Genau, und das kannst du auch remote machen.

Thomas: und du musst aber auch die Node selber zerstören und dann neu erstellen.

Thomas: Ist eine destruktive Operation, die dann auch natürlich Impact drauf hat,

Thomas: also wie viel Last dieser Prozess erzeugt.

Thomas: Könnte man genauso gut mit NixOS lösen, indem du halt sagst,

Thomas: alles klar, wir bereiten die neue Generation vor, flake.lock,

Thomas: da ist alles beschrieben, was für ein Zielzustand da sein soll,

Thomas: da ist die Kernel-Version drin, da sind die ganzen Paket-Versionen drin,

Thomas: sondern das ist alles so getestet und die bestehenden Systeme müssten im Grunde einfach nur das einmal anwenden.

Thomas: Also diesen Rebuild-Switch, wovon du vorhin gesprochen hast.

Thomas: Einziger Nachteil, vielleicht müssten sie einmal rebooten natürlich, also Kernelfix natürlich,

Andrej: Ich habe, ja klar, ewig, geht noch weiter.

Thomas: da musst du einmal durchtreten, wenn du da nicht irgendein Kernel-Patching-Ding drin hast.

Thomas: Aber durchtreten ist halt immer noch eine andere Dimension als ich schmeiße das Ding jetzt weg

Thomas: und ich erstelle ein neues, da kann viel bei schief gehen.

Thomas: Also Provider haben halt auch natürlich, ich meine, diese Prozesse sind ja komplex und können temporäre Fehler auftreten.

Thomas: Es dauert einfach insgesamt teilweise vielleicht was lange.

Thomas: Okay, total spannend.

Andrej: Du hast ja gerade gefragt wegen der Entwicklungsumgebung,

Andrej: dass du deine Pakete definierst.

Andrej: Das machst du gar nicht mehr im System.

Andrej: Du hast gar nicht so viele Pakete mehr im System.

Andrej: Du packst ja deine Dependency einfach ins Repo.

Andrej: Du erzeugst einen Flake.

Andrej: Du kannst nämlich Flakes unabhängig von NixOS benutzen,

Andrej: sondern einfach mit Nix.

Andrej: Du erzeugst eine Flake-Datei, wo du deine Pakete reinpackst,

Andrej: zum Beispiel Just, das gute alte Just-File.

Andrej: dann dein Python,

Andrej: dann dein, was auch immer du halt hast,

Andrej: dann ImageMagick, falls du Bildbearbeitung machst,

Andrej: oder Pillow oder whatever.

Andrej: Das heißt, du packst dann nicht nur

Thomas: Es klingt vor allem auch danach nach ein Teilproblem dessen, ein kleiner Teil, wofür ich mir eigentlich auch immer eine Lösung gewünscht habe,

Andrej: Python und Python-Pakete rein,

Andrej: sondern auch System-Pakete, die du

Andrej: für diese Entwicklung

Andrej: brauchst, machst dann flake.lock

Andrej: mit und zu dem Zeitpunkt,

Andrej: und dann kannst du noch ein Tool benutzen, wo ich gerade total

Andrej: der Fan von bin: direnv,

Andrej: du gehst da einfach rein mit CD

Andrej: und er öffnet direkt eine

Andrej: Nix-Shell, das kann man

Andrej: auch auf macOS machen, öffnet einfach eine

Andrej: Nix-Share, wo diese Dinge einfach installiert sind,

Andrej: Punkt, aus, fertig. Du gehst aus

Andrej: diesem Verzeichnis wieder raus, es ist

Andrej: nicht mehr installiert. Es ist

Andrej: einfach so genial.

Andrej: Ich krieg ja Gänsehaut.

Andrej: Es macht, ja,

Thomas: ist, du gehst in ein Verzeichnis rein

Thomas: und es werden automatisch Env-Vars gesetzt

Thomas: in deinem System, weil, ne,

Thomas: damit die zu deiner Entwicklung passen,

Thomas: keine Ahnung, Staging, URL, SD

Thomas: und das und das und blablabla

Thomas: und das natürlich dann irgendwie auch idealerweise

Thomas: rekursiv nach unten, ne, also wenn du, keine Ahnung,

Thomas: in das Git von deiner Arbeit reingehst, dann wird

Thomas: schon mal das und das gesetzt, gehst du in ein Unterverzeichnis

Thomas: rein, wird auch noch das und das gesetzt

Thomas: und ich hab irgendwie nie eine Lösung dafür gefunden.

Andrej: das uv und

Andrej: wie, was wir, venv,

Andrej: Python venv, ne, die haben das ja auch so gelöst.

Andrej: Du kannst das ja machen, du kannst

Andrej: eine .python-version-Datei, glaube ich,

Thomas: Python, äh, das war PyEnv.

Andrej: anlegen. pyenv, so, ja, sorry.

Thomas: PyEnv, mhm.

Andrej: Genau, die

Andrej: Aber was die machen, die packen dir quasi die PIP-Dependencies rein.

Andrej: Für Python jetzt.

Andrej: Es gibt auch andere Tools, wie das mit Go und Rust und was weiß ich nicht alles machen.

Andrej: Oder auch mit Terraform.

Andrej: Aber du kriegst halt keine System-Sachen da rein.

Andrej: Und wenn du dann, gerade bei Terraform,

Andrej: wenn du Terraform installiert hast auf dem System,

Andrej: dann hast du es in dieser Version.

Andrej: Und gerade mit Terraform ist das so pain,

Andrej: wenn du jetzt eine neuere Version hast als deine Arbeitskollegen

Andrej: und du pleist den State und du machst das wirklich vom Laptop

Andrej: oder von der Maschine halt und nicht

Andrej: von der CI/CD, dann meckert

Andrej: der State beim nächsten Kollegen so,

Andrej: ja, dein Terraform ist zu alt, dein Kollege

Andrej: hat schon eine neue Version.

Andrej: Dann hängst du da wieder.

Andrej: Das ist dann wieder so. Und das ist

Andrej: einfach geil. Das flake.lock

Andrej: beschreibt einfach exakt deine

Andrej: Umgebung, die du haben willst.

Andrej: Es gibt ein separates Kommando, womit

Andrej: du sagst, ich hätte gerne die Dependencies

Andrej: abgedatet. Jetzt kommt noch ein weiterer

Andrej: Clou, da bin ich ganz übersprungen. Ich habe ja vorhin

Andrej: diese Channels erwähnt. Du kannst die Channels,

Andrej: du hast ja so ein Update-Befehl,

Andrej: du kannst den Channels immer noch folgen, aber was du mit

Andrej: Flakes jetzt auch machen kannst, du kannst sagen,

Andrej: jetzt bin ich aber überlegen, ob das

Andrej: wirklich Flakes, doch,

Andrej: das ist Flakes-spezifisch. Du kannst auch sagen,

Andrej: ich hätte gern dieses Paket aus

Andrej: Unstable und den

Andrej: Rest lasse ich einfach aus

Thomas: Ah, okay. Ich werd grad rollig.

Andrej: dem Channel 26.5

Andrej: aktuell. Das ist, weil

Andrej: manchmal sind die halt im Stable

Andrej: unnötigerweise viele Versionen hinter,

Andrej: aus welchen Gründen auch immer, und du

Andrej: sagst, okay, ich hätte aber folgendes Tool, bitte gerne

Andrej: immer in der letzten.

Thomas: Ja, das hat mich sehr verwirrt.

Andrej: Ich wusste es.

Andrej: Wir sind noch nicht fertig.

Andrej: So, direnv haben wir, Flakes haben wir,

Andrej: also wir locken das.

Andrej: direnv löst ganz viele Entwicklungsprobleme.

Andrej: Ich nutze es noch nicht lang genug,

Andrej: um wirklich Pain zu haben.

Andrej: Also von daher, alles mit Vorsicht zu genießen,

Andrej: das kann auch sehr komplex werden.

Andrej: Was viele Leute auch machen,

Andrej: habe ich noch nicht gemacht, möchte ich noch,

Andrej: Docker mit Nix, also

Andrej: Docker-Container mit Nix zu bauen.

Thomas: Ich habe gelesen, dass das geht und dachte mir aber, warum macht man das?

Andrej: Ja, du weißt das ganz genau.

Thomas: Also ich meine, Docker hat ja eine eigene deklarative Sprache.

Thomas: Bitte, erzähl.

Thomas: Ja, wobei, nee, stimmt, die ist nicht deklarativ, ne?

Andrej: Die ist überhaupt nicht deklarativ.

Thomas: Also die ist imperativ.

Thomas: Also teils, teils.

Thomas: Deklarativ im Sinne von nutzt folgendes Image, aber der Rest ist dann halt irgendwelche Run-Commands.

Andrej: Der Rest ist Bash.

Thomas: Ha, okay.

Andrej: So, ich kann mir ein Problem beschreiben,

Andrej: was wir mal hatten.

Andrej: Es war, glaube ich, unser Postgres-Service,

Andrej: den wir mal hatten.

Andrej: Und wir hatten eine Postgres-Version gepinnt,

Andrej: in Klammern, 15 damals oder sowas.

Andrej: Und dann lässt du die CI/CD-Pipeline noch mal rennen

Andrej: und dann war das Postgres-Image kaputt,

Andrej: obwohl es die gleiche gepinnte Version war.

Thomas: Ja, ja, ja, genau.

Andrej: Aber was viele ja nicht wissen,

Andrej: dass ein Docker-Tag, der ist

Andrej: überhaupt, wie ein Git-Tag im Endeffekt,

Andrej: ist überhaupt nicht,

Andrej: wie nennt man das,

Andrej: nicht reproduzierbar, sondern

Andrej: unique? Ne, der ist nicht geschützend

Andrej: in irgendeiner Weise, du kannst ihn überpushen.

Andrej: Das heißt, in einem ganz kurzen Augenblick,

Andrej: in der Woche oder zwei,

Thomas: Immutable, wie er auch immer auf Deutsch heißt.

Andrej: im YouTube, ja, danke,

Thomas: Ja, ich erinnere mich.

Andrej: in der Woche oder zwei,

Andrej: wo der Kollege, ich weiß gar nicht, ob das ich das war oder

Andrej: ein Arbeitskollege, versucht hat, das Docker-Image

Andrej: zu bauen und komplett verzweifelt ist,

Andrej: hatten die einfach ein kaputtes Image gepusht.

Andrej: auf den Tag.

Thomas: Das war gemein.

Andrej: So, und ja,

Thomas: Hat Vor- und Nachteile, ne?

Thomas: Aber lass mal die Klammer vielleicht nicht zu sehr aufmachen,

Thomas: weil das kann ja auch total sinnvoll sein.

Andrej: der Vorteil ganz easy, du kriegst die Patches mit rein,

Andrej: ganz cool.

Thomas: Genau, ja.

Andrej: Oder wenn das Postgres 15

Andrej: ist, dann können auf einmal,

Thomas: Ich glaube, das war eine neue Debian-Version oder sowas.

Andrej: vielleicht war das sogar, die haben den Unterbau gewechselt

Andrej: von Debian auf Ubuntu oder sowas.

Andrej: Oder neue Debian-Version, was ich finde,

Thomas: Und, mhm, mhm, ja, cool.

Andrej: kein meiner Ding war, naja, egal.

Andrej: Und du kannst aber auch einfach

Andrej: diese Nix-Konfigurationssprache nehmen

Andrej: und sagen, ja gut, ich hätte jetzt gern Postgres,

Andrej: ich hätte jetzt gern die und die Plugins,

Andrej: Whatever, ne? Erweiterung. Und dann

Andrej: baust du dir das und als Artefakt

Andrej: spuckt dir halt ein Docker-Image raus. Dann machst du kein,

Andrej: soweit ich weiß, ich hab's noch nicht gemacht,

Andrej: nutzt du nicht mehr das Docker-File per se,

Andrej: sondern halt diese NixOS-Geschichte

Andrej: und haust dann da halt was rein

Andrej: mit der flake.lock. Das ist sehr gefährlich,

Andrej: das weiß ich wirklich nicht. Aber

Andrej: super interessant, weil es halt wirklich bytegenau, ne?

Thomas: Ja, also, weil wirklich genau dieses Szenario,

Thomas: was du beschrieben hast,

Thomas: wir hatten es schon mal in,

Thomas: wirklich im Zuge der Entwicklung eines Features.

Thomas: Also wirklich so von wegen, in der Feature-Branch

Thomas: vor dem Merge Request war noch alles okay.

Thomas: Und danach, weiß ich nicht,

Thomas: Integrationstest und irgendwie alles ist kaputt.

Thomas: Und du fragst dich, hä?

Thomas: Aber ja, es ist natürlich kein Schutz da.

Andrej: Ja, und das ist halt immer, als

Thomas: Das ist wirklich ein neues Image.

Andrej: guter Entwickler guckst du ja auch immer ein bisschen auf Dependencies.

Andrej: Du machst ja nicht einfach nur, ja, scheiß drauf, ich nehme jetzt die alte

Andrej: Version, sondern dann löst du halt die

Andrej: Fehler auch, ne? Und das ist dann wieder Zeit.

Andrej: Und das macht ja auch Sinn, diese Fehler zu lösen, aber vielleicht auch nicht unbedingt zu dem Zeitpunkt.

Andrej: Und dann kannst du diesen Prozess halt auch trennen.

Andrej: Du kannst sagen, ich bringe die gepatchte Version raus vom Postgres,

Andrej: aber ich brauche jetzt nicht das Debian-Upgrade, weil es ist eh noch gültig, die Version.

Andrej: Oder vielleicht switchen die von Debian auf Ubuntu oder Alpine oder whatever.

Andrej: Das musst du nicht mitnehmen, weil das bringt natürlich auch mal seine Challenges mit.

Andrej: Na gut, dann gehen wir noch auf drei Themen ein.

Andrej: Dann habe ich ja vorhin noch erwähnt, dass das Home, dein Home-Verzeichnis,

Andrej: da, wo dein State drin ist, da wird es halt auch schwierig,

Andrej: weil du kannst ja nicht State deklarieren.

Thomas: Also ich denke jetzt zumindest

Andrej: Mein Desktop läuft gerade auf NixOS, da läuft jetzt auch der Chrome

Andrej: und ich muss mich ja einloggen.

Andrej: Da gibt es dann halt Grenzen.

Andrej: Da muss man sich klar sein, das geht nicht.

Andrej: Aber doch.

Andrej: Also zum Beispiel teilweise.

Thomas: mal als erstes an Dot-Files.

Thomas: Das ist ja auch ein anderweitig

Andrej: Geht.

Thomas: durchaus schon gelöstes Problem, aber

Thomas: wäre natürlich nett, das irgendwie

Thomas: noch irgendwie integriert zu wissen.

Andrej: Genau, dafür gibt es ja auch viele andere Projekte.

Andrej: chezmoi habe ich auch mal ausprobiert, hat mich genervt.

Andrej: Dann gibt es GNU Stow, nee, Stow, Stow heißt es, genau.

Thomas: Ist das ein Teil von Nix?

Andrej: Und diverse andere Tools, die dort File Management machen können.

Andrej: Aber brauchst du gar nicht.

Andrej: Also es gibt dieses Projekt Home Manager heißt das.

Andrej: Und Home Manager übernimmt im Endeffekt alles, was dein User macht.

Andrej: Also in meinem Fall Andrej, in deinem Fall Thomas.

Thomas: Oder ist das Nix-spezifisch, Mitchell?

Andrej: Nein, das ist ein separates Modul, was du auch nachträglich installieren musst.

Andrej: Kann man auch auf Mac benutzen, unabhängig von NixOS.

Andrej: Generell, Nix kann man sich auf dem Mac installieren

Andrej: und hat man den Nix-Paketmanager.

Andrej: So entwickelt auch der, ich glaube es war der,

Andrej: wie heißt der, der Hashimoto, der Terraform-Gründer?

Andrej: Mitchell Hashimoto, genau.

Thomas: Hm. Hm. Hm. Stimmt. Ja. Jucky. Ja. Da muss man vielleicht auch die Kirche mal im Dorf lassen. Also da mag jeder anders ticken, aber also ich hüpfe sehr, sehr selten von einem Rechner aufeinander, ehrlich gesagt.

Andrej: Genau, der macht das auch schon seit langem.

Andrej: Und mit diesem Homemanager kannst du viele Dinge tun.

Andrej: Dort kommen dann ganz viele Module zum Vorschein.

Andrej: Zum Beispiel gibt es auch ein Modul für, klar, Git.

Andrej: Das ist aber auch schon in der Configuration nix möglich,

Andrej: also in dem System.

Andrej: Aber halt dann übernimmt der Homemanager so einige Dinge,

Andrej: so ist mein Verständnis aktuell.

Andrej: Und zum Beispiel hast du dann auch so ein Konfigurationsmanagement für Oh My Zsh.

Andrej: Anstatt, dass du so ein Git-Repo da runterpullst, mehr oder weniger regelmäßig, kannst du das einfach konfigurieren.

Andrej: Oder, was ich gemacht habe, Syncthing, meinen File-Syncing-Server, den ich nutze, um Dateien von Desktops und so weiter zu sharen und Handy,

Andrej: den habe ich auch konfiguriert. Das ist eine Syncthing.nix-Datei.

Andrej: Dort habe ich den Service-Syncthing enabled true, habe die guiAddress gemacht,

Andrej: habe gesagt, bei meinem Desktop ist es in Ordnung, dass der von überall erreichbar ist,

Andrej: aus meinem lokalen Laden.

Andrej: Ich habe dem sogar die Credentials durchgepasst.

Andrej: Kommen wir gleich noch drauf zu.

Andrej: Und du kannst sogar die Folders definieren

Andrej: und welche Geräte damit synchronisieren.

Andrej: Das ist sehr stark abhängig,

Andrej: wie viel Zeit Leute in das Modul reingesteckt haben,

Andrej: was es kann.

Andrej: Das Syncthing-Modul ist wohl ganz nett.

Andrej: Da kannst du auch die Devices konfigurieren, die du hast.

Andrej: Das heißt, du machst nicht dieses Setup jedes Mal von vorne

Andrej: und das ist einfach Klick da.

Andrej: es gibt auch ein Modul für GitHub,

Andrej: den GitHub-Community-Client

Andrej: habe ich auch jetzt genutzt. Da habe ich jetzt nicht

Andrej: viel drin. Da habe ich nur ein

Andrej: API-Token

Andrej: hinterlegt mit vielen

Andrej: Read-Rechten, weniger Löschrechten,

Andrej: als mal was schief geht.

Andrej: Also dieses Home-Manager, das übernimmt dann quasi

Andrej: die Installation von Paketen und

Andrej: Konfiguration von Paketen in deinem Home-Verzeichnis.

Andrej: Das heißt, viele Dinge sind gar nicht mehr auf dem

Andrej: System installiert, sondern nur noch für den User.

Andrej: Warum sollte mein Root-User den GitHub-Client

Andrej: haben? Warum sollte mein Root-User

Andrej: VS Code haben?

Andrej: Also ganz viel, das hat ja Impact auch

Andrej: ein anderer. Gibt sogar ein Home-Manager-Modul

Andrej: für den Plasma-Desktop, wo du

Andrej: sehr rudimentär, aber immerhin noch

Andrej: deinen Desktop so konfigurieren kannst und dann exakt mitnehmen.

Andrej: Da kommen wir aber auch zu dem Nachteil,

Andrej: Plasma konfiguriert

Andrej: sein Desktop über eine wahnsinnig große

Andrej: XML-Datei.

Andrej: Wenn du Bock hast,

Andrej: kannst du die auch

Andrej: templaten lassen und dann da

Andrej: mit Variable etc. pp.

Andrej: da reinschreiben. Da musst du aber aufpassen,

Andrej: dass du nicht mit dem GUI mehr rumklickst.

Andrej: Da ziehe ich dann die Grenze zwischen

Andrej: deklarativ und was ist praktisch,

Andrej: weil ich will meinen,

Andrej: wenn die Monitors gedreht sind,

Andrej: ich bin irgendwo und dann möchte ich nicht in die

Andrej: Config-Datei, dann möchte ich einfach in dem

Andrej: Settings-Menü klicken und sagen,

Andrej: mach Spiegel oder mach erweiterter Screen.

Andrej: Ja, sehe ich auch so.

Thomas: Und wenn ich das mal tue, also hüpfen im Sinne von migrieren auf ein neues System, dann machst du halt ein R-Sync von deinem alten Home-Dir auf das neue und dann ist es halt so wie vorher. Für sowas finde ich das vollkommen legitim.

Andrej: Ja.

Thomas: Deswegen habe ich auch persönlich, ich arbeite noch gar nicht mit Dotfiles, aber da gibt es zumindest ein Pain, weil da geht es ja nicht nur darum, dass man von einem System auf ein anderes migriert, sondern man hat halt immer mal wieder neue Systeme, auf die man per SSH drauf geht und die verhalten sich dann halt anders, Stock.

Thomas: Da wäre es schon schön, keine Ahnung, seine Vim-Konfiguration mitzunehmen oder in der ZSH-RC gewisse Dinge einfach immer zu setzen.

Thomas: Okay, ja. KDE-Konfiguration über XML oder über Module. Voll gut.

Andrej: Das habe ich mir dann gespart.

Thomas: Ja.

Andrej: Ich habe es drin,

Andrej: weil ich dachte, vielleicht gibt es ja so Sachen,

Andrej: guck mal grad rein, was hab ich denn da drin?

Andrej: Home, Common, ne, nix

Andrej: besonderes. Plasma, ah ja.

Andrej: Idle Timeout für meine Displays.

Thomas: Ach, du kannst das dann kombinieren, ja? Du kannst sagen, die Sachen setzt er dann so und zerstört dir dann nicht deine komplette andere Config?

Andrej: Ist eine gute Frage, kann ich dir gar nicht beantworten.

Thomas: Okay. Das wäre dir wahrscheinlich schon aufgefallen.

Andrej: Vielleicht konkurriert's auch.

Andrej: Das war auch nur ein Test, ich war jetzt

Andrej: nicht so, da ging's mir eher,

Thomas: Mhm.

Andrej: den Desktop nutze ich teilweise auch als Server. Ich lass den

Andrej: hier oben laufen, weil der ist halt ein bisschen mehr Power als

Andrej: mein Laptop und dann baue ich hier halt

Andrej: Sachen. Wirklich genau, Compilen

Andrej: oder so. Das möchte ich nicht auf dem Framework machen.

Andrej: Ist der Akku leer und

Andrej: der hinter dem Ding hebt ab. Genau, und dann nochmal

Andrej: ein letztes Thema, weil Komplexität kennt ja kein Ende.

Thomas: Oh.

Andrej: Gar nicht

Andrej: letztes, noch zwei. Ja, und dann

Andrej: nochmal die Nachteile. Jetzt hat man seine

Andrej: Konfiguration und alles und

Andrej: jetzt möchte man natürlich auch sowas

Andrej: wie, bei Syncthing möchte ich

Andrej: mein User Passwort festlegen, welches

Andrej: das GUI schützt. Oder

Andrej: vielleicht Keys hinterlegen, was auch

Thomas: Mhm. Bei age muss ich kurz klugscheißern. Ich hatte gelesen, weil ich finde das immer sehr verwirrend vom Namen her, dass man das A-G ausspricht oder A-G oder irgendwie sowas.

Andrej: immer. Es gibt zwei Projekte,

Andrej: um Secret Management zu

Andrej: machen in Nix. Es gibt agenix

Andrej: und sops-nix. Ich habe mich für

Andrej: SOPS entschieden, aus Gründen,

Andrej: die ich nicht ernsthaft, the more you know,

Thomas: Ähm, jaja. Mhm. Okay. Mhm. Mhm. Mhm. Gibt's denn da ein Tooling, dass das gleich, sagen wir mal, repo-weit macht? Wobei, nee, das ist ja eine Nix-Datei, ne? Ah, okay. Ah. Nice. Mhm. Mhm. Ja, klingt aber auch so. Mhm. Mhm. Jaja.

Andrej: so wie ich das gehört habe, ich kann mich

Andrej: gerne auch entscheiden. agenix ist

Andrej: ein bisschen weniger komplex,

Andrej: verschlüsselt aber auch

Andrej: und auch ein gutes Tool, auch sehr

Andrej: soweit ich weiß,

Andrej: sind die da fleißig am Programmieren, auch wenn

Andrej: das letzte Release jetzt drei Jahre her ist.

Andrej: Aber egal, kann ja vielleicht funktionieren.

Andrej: Was ich genommen habe,

Andrej: ist sops-nix. Gehen wir mal kurz

Andrej: drauf ein, wie das funktioniert.

Andrej: Was man macht ist,

Andrej: man erzeugt einen age-Key,

Andrej: ein Private Key auf deinem Rechner.

Andrej: Der liegt in ~/.config/age

Andrej: irgendwo und dann

Andrej: hast du ein Private Key. Dann

Andrej: nimmt man sich diese Datei

Andrej: und generiert mit irgendeinem Kommando,

Andrej: kann man sich in der Anleitung durchgucken, beim GitHub ist

Andrej: ganz gut die Anleitung, dann

Andrej: generiert man sich aus dem Private Key

Andrej: ein Public Key. Diesen Public Key

Andrej: nimmt man und copy-pastet den

Andrej: in eine YAML-Datei

Andrej: Einen Augenblick, bevor ich hier Schwachsinn erzähle.

Andrej: Es gibt eine, genau, du legst eine SOPS-YAML-Datei an.

Andrej: Dort kannst du dann deine Keys deklarieren.

Andrej: Ich habe zum Beispiel Admin-Framework und Admin-Desktop.

Andrej: Das sind meine Public Keys.

Andrej: Und dann kannst du denen quasi so ein Mapping machen.

Andrej: Schaut einfach in die Doku rein.

Andrej: Das ist ein bisschen einfacher.

Andrej: So ein Mapping zu Host und welcher User das ist.

Andrej: So eine Gruppe erzeugst du im Endeffekt.

Andrej: Bei mir ist es gerade alle Geräte, alle User dürfen auf alle Geräte drauf.

Andrej: Man kann es komplexer machen.

Andrej: Gehen wir jetzt nämlich drauf ein.

Andrej: nutzt, wenn man

Andrej: jetzt hat man diesen Private Key lokal

Andrej: auf der Kiste liegen und mit diesem Private Key

Andrej: wird im Endeffekt,

Andrej: wenn ich das richtig verstanden habe,

Andrej: wird eine YAML-Datei, die du

Andrej: Secrets YAML oder so nennst, wird die

Andrej: verschlüsselt. Das heißt, du kannst im

Andrej: Plaintext deine Daten bearbeiten

Andrej: mit so einem

Andrej: Kommando, SOPS edit oder so was,

Andrej: habe ich jetzt nicht mehr im Kopf, aber ist auch nicht so wichtig,

Andrej: steht alles in deinem GitHub-Ding. Dann

Andrej: bearbeitest du das mit deinem Editor deiner Wahl,

Andrej: schließt und du hast

Andrej: age-encrypted-Dateien drin.

Andrej: Was du siehst, ist die Struktur.

Andrej: Du siehst Syncthing, Passwort, Github,

Andrej: CLI-Token, aber der Value

Andrej: ist immer verschlüsselt. Und

Andrej: decrypted wird das Ganze

Andrej: mit dem SSH-Host-Key,

Andrej: der immer erzeugt wird

Andrej: in der Installation unter etc.

Andrej: slash SSH, slash SSH-Host

Andrej: ED, was auch immer. Ist ganz wild.

Andrej: Du kannst, was ich gemacht habe, ist,

Andrej: ich habe meinen Laptop,

Andrej: also ich habe meinen Desktop aufgesetzt,

Andrej: ich saß hier mit meinem Freund Niklas, liebe Grüße, wenn du das hörst,

Andrej: Wir haben einfach Nix installiert,

Andrej: einfach Nix-Installationsparty-Nachmittag gemacht

Andrej: und dann saßen wir an unseren jeweiligen Rechnern,

Andrej: haben es installiert, dann wollten wir,

Andrej: das nächste Ziel war, okay, jetzt möchten wir das

Andrej: aber von meinem Laptop steuern können.

Andrej: Man kann die ganzen Kommandos mit Nix, OS, Rebuild, blablabla,

Andrej: die kann man auch mit einer SSH-Target machen.

Andrej: Du kannst sogar sagen, welcher Host der Build-Host ist.

Andrej: Das heißt, wenn du jetzt zum Beispiel

Andrej: auf einem Raspberry Pi was machst,

Andrej: dann willst du vielleicht nicht alles

Andrej: auf dem Raspberry Pi bauen lassen.

Andrej: Vielleicht auch doch, weil ARM ist ein bisschen blöd

Andrej: mit Cross-Compiling auf deinem

Andrej: x86, bei dir nicht mit deinem Mac.

Andrej: Nun ja, das haben wir dann geschafft

Andrej: und dann wollte ich halt natürlich auch, dass

Andrej: mein Laptop und mein Desktop diese Datei

Andrej: bearbeiten können. Ja, und dann

Andrej: kannst du einfach diese,

Andrej: gehst du nochmal diesen,

Andrej: fügst du nochmal ein Public Key hinzu von deinem

Andrej: Laptop dann, in dem Falle,

Andrej: musst die nochmal neu verschlüsseln, die Datei

Andrej: und dann können beide darauf zugreifen.

Andrej: Inwiefern, Rieb?

Andrej: Das ist eine YAML-Datei, die du im Git einfach committest.

Andrej: Weil es verschlüsselt ist, kannst du es machen.

Andrej: Genau, jetzt habe ich also ein Secret-Management,

Andrej: wo so, sagen wir mal, Secrets drin sind,

Andrej: die ich für nicht alle Secrets,

Andrej: weil ich password-manage ja trotzdem,

Andrej: aber die ich halt zur Build-Zeit immer brauche.

Andrej: Aktuell nur zwei, aber hey.

Andrej: Ich habe eine gelockte Flake-Datei,

Andrej: die mein System exakt genau beschreibt.

Andrej: Ich habe diverse Flake-Konfigurationen

Andrej: in meinen diversen GitHub-Repositories,

Andrej: die dann direkt die Dependencies ziehen, die ich brauche

Andrej: und habe halt ein deklaratives System.

Andrej: Und so aktuell arbeite ich daran,

Andrej: diese Struktur, die ich mir aufgebaut habe in meinem Repo,

Andrej: für mehrere Hosts zu machen.

Andrej: Das heißt, ich habe dann meinen Desktop, meinen Laptop,

Andrej: meinen kleinen Miniserver, den ich hier noch habe,

Andrej: so einen Woodward-Arm-Rechner,

Andrej: dass ich dann ein Git-Repo habe,

Andrej: welches meine Infrastruktur beschreibt

Andrej: und wo ich dann auch easy, in Klammern,

Andrej: ist es Komplexität, darf man auch nicht vergessen,

Andrej: aber halt easy an einer Stelle abdecken kann.

Andrej: Und da kommen wir, glaube ich, auch zu den Nachteilen. Das passt dann ganz gut. Das hört sich jetzt in der Theorie alles sehr cool an, aber meine Fresse, ist das eine brutale Lernkurve. Kein Scheiß. Das ist so komplex, ne? Ja, die Idee hört sich cool an und dann denkt man, ja, vielleicht Enzo Bejami, bla bla bla. Ne, nixer. Diese Nix-Sprache, mir tut die im Kopf weh. Ich verstehe immer mehr, aber es dauert.

Andrej: Ich muss dafür auch sagen,

Andrej: die Community ist da auch sehr einig,

Andrej: die Doku-Scheiße, die gibt es an viel zu

Andrej: vielen Stellen, in unterschiedlichen Versionen,

Andrej: in vielen Git-Repos

Andrej: und das macht keinen Spaß.

Andrej: Das ist wirklich nicht cool.

Andrej: Und ich bin froh, dass Claude Code existiert,

Andrej: weil der hilft ungemein. Aber man darf nicht vergessen,

Andrej: man muss das auch verstehen, was man da macht.

Andrej: Das ist wichtig in meinen Augen,

Andrej: weil sonst wird es schwierig.

Andrej: Was ich auch ein bisschen schwierig finde,

Andrej: was zu der Lernkurve gehört, die Errors,

Andrej: die Error-Meldungen sind hart.

Andrej: Also du kriegst erstmal mal so einen fetten Trace

Andrej: und im Endeffekt ist nur die letzte

Andrej: Zeile sinnvoll, wie bei Python häufig.

Andrej: Das ist ja auch so.

Thomas: Was sind denn übliche Fehler?

Andrej: Den anderen Scheiß kannst du erstmal ignorieren.

Andrej: Ja, muss

Andrej: man lernen und dann muss man halt auch viel

Andrej: verstehen, um die Error-Meldung zu interpretieren.

Andrej: Große Klassiker, Semikolon

Thomas: Was fällt dir so ein? Wo bist du schon mal reingelaufen?

Andrej: und vergessen hier und da. Dann suchst du dich

Thomas: Das sind zwei Zeilen inhaltlich gemerged und bam.

Andrej: dumm und dusselig.

Andrej: Ja, genau.

Andrej: Oder

Andrej: dann eine Modul-Config

Andrej: konfiguriert, die es

Andrej: so nicht mehr gibt, weil die Doku zu alt war.

Andrej: Oder das Beispiel im Blog oder so.

Andrej: Dann sagt er dir hier, das Modul existiert

Andrej: nicht. Oder du machst eine

Andrej: Konfiguration, eine Home-Manager-

Andrej: Konfiguration machst du

Andrej: in deinem System, weil es das nicht gibt.

Thomas: Einfach weil alle Abhängigkeiten fehlen, oder?

Andrej: Es gibt aber eine gute

Andrej: Paketsuche. Es gibt auch eine gute

Andrej: Modulsuche. Da kann man auch sich alle

Andrej: Moduloptionen auflisten

Andrej: lassen. Auch in der Kommandozeile gibt es

Andrej: auch im Web eine gute. Das hilft dann schon.

Andrej: Großer Nachteil finde ich jetzt so,

Andrej: mal eben so ein Binary installieren

Andrej: und sagen, ich führe das aus, geht halt nicht.

Andrej: De facto geht das nicht.

Andrej: Das ist total crazy. Das ist eine

Andrej: ganz andere, ja,

Andrej: dafür ist das nicht gemacht.

Andrej: Es fährt kein Halbgleis.

Thomas: Das heißt, im einfachsten Fall, wenn es irgendein CLI ist oder so,

Andrej: Es gibt nur so, entweder so oder gar

Andrej: nicht. Oder du baust von Source.

Thomas: ist es wahrscheinlich am einfachsten, du startest mal eben schnell einen Docker-Container

Thomas: und packst das da rein und führst das halt da eben aus und schmeißt danach wieder weg.

Thomas: Ja, okay.

Andrej: Da musst du aber die Nix-Funktion

Andrej: wieder machen. Habe ich, wie gesagt, noch nicht

Thomas: Gibt es hinter Tooling was sowas vereinfacht?

Andrej: gemacht. Das muss ich noch machen. Das ist noch eine Übung, die mir

Andrej: fehlt. Weiterhin

Thomas: gibt es irgendwie so eine Art Nix-Generator

Thomas: oder so, wo du vielleicht

Andrej: Nee, es gibt Tooling, keine Ahnung.

Thomas: einfach sogar in Pakete, das wäre doch cool,

Thomas: wenn du so eine Text-User-Interface

Thomas: wo du einfach eine Suchmaske

Thomas: hast nach Paketen, zum Beispiel

Thomas: und wenn du

Thomas: es anklickst, dann zeigt er dir vielleicht auch noch an, was du alles

Thomas: konfigurieren kannst und dann kannst du es einfach so schön

Thomas: grafisch dir zusammenbröseln.

Thomas: Schade.

Andrej: Es gibt Hilfen für,

Andrej: es gibt ja Pakete, die, also ich glaube,

Andrej: man kann Binaries ausführen, wenn die komplett autark sind

Andrej: und von nichts abhängen.

Andrej: Dann müsste es eigentlich eine Theorie gehen,

Andrej: wenn die so komplett autark sind. Ich weiß nicht, wie easy

Andrej: das ist oder wie viele das sind.

Andrej: Es gibt, ich habe es gelesen, noch nicht

Andrej: gemacht, es gibt ja diese Filesystem

Andrej: Hierarchy in Linux, also ETC User

Andrej: war, was weiß ich, das ist ja hier

Andrej: komplett umgedreht, weil

Andrej: es liegen ja keine Libraries und Co. da, wo sie

Andrej: für gewöhnlich liegen.

Andrej: Und es gibt aber wohl auch so ein Projekt, wo du das faken kannst für bestimmte Applikationen, damit die halt überhaupt lauffähig sind.

Andrej: Zum Beispiel, wenn du einen Vendor, ein Freund von mir, der Niklas wieder, der will irgendwie so ein elektronisches Messgerät benutzen, dafür kriegt er ja nicht den Source, sondern nur ein Binary oder sowas.

Andrej: Und da musst du es halt faken.

Andrej: Da musst du dann so ein Filesystem-Archive gehen und er hat es dann nicht gemacht, weil dann musst du es schnell laufen bringen, hat dann Ubuntu-Installation und zack, zack.

Andrej: soweit ich gelesen und gehört habe

Andrej: und ein paar YouTube-Videos, kannst du das

Andrej: halt irgendwie hinkriegen. Soweit bin ich

Andrej: noch nicht. Mach das jetzt seit ein paar Wochen.

Andrej: Genau, noch ein Nachteil, wie gesagt

Andrej: schon vorher, zurückrollen ändert nicht

Andrej: die Konfigurations-Nix. Das heißt, du hast immer

Andrej: noch eine eventuell defekte Konfiguration.

Andrej: Die Konfiguration an sich ist jetzt

Andrej: eher weniger defekt, weil

Andrej: die wird ja auch evaluiert und wenn die baut, dann baut die.

Andrej: Wenn die nicht baut, dann baut die nicht. Das ist ein bisschen

Andrej: so wie eine Compiled-Sprache.

Andrej: Das heißt aber nicht, dass dein Tooling-Bugs

Andrej: haben kann oder du es falsch konfiguriert

Andrej: hast, dein SSH, Deem etc.

Andrej: Das schützt dich davor natürlich nicht.

Andrej: Und da es diesen Nix-Store hat

Andrej: mit den im Endeffekt

Andrej: nicht nur doppelten, sondern auch teilweise

Andrej: achtfach vorkommenden Paketen,

Andrej: braucht es ein bisschen mehr Storage.

Andrej: Da habe ich mir beholfen mit Btrfs und ein bisschen

Andrej: ZSTD-Compression. Das haut nochmal

Andrej: irgendwie gute 30-40%

Andrej: weg. Das ist schon mal ordentlich.

Andrej: Und man darf auf keinen Fall vergessen,

Andrej: dass man diese Garbage-Collection aktivieren sollte,

Thomas: Stimmt, sammelt sich

Andrej: dann sonst...

Andrej: ne?

Andrej: Sonst hast du noch, ja.

Thomas: nur immer mehr ein. Und NixOS kommt

Andrej: Und Btrfs mit Limit

Andrej: Festplatte ist kacke.

Andrej: Kennt man ja. Ne, das hab ich jetzt

Thomas: also mit Btrfs. Das ist so

Thomas: ein Teil. Okay.

Andrej: gemacht. Es gibt einen Installer, den du

Andrej: fahren kannst. Das ist der Calamares

Andrej: Installer, den haben viele Distros.

Andrej: Du kannst auch, das mach ich jetzt

Andrej: gerade für mein Odroid, du kannst

Andrej: auch ein Tool nehmen, das heißt Disko.

Andrej: D-I-S-K-O.

Andrej: Cooler Name. Da kannst du auch deinen

Thomas: aus deiner configuration.nix.

Andrej: Festplatten beschreiben. Du kannst sagen,

Andrej: welche Partition, GPT,

Andrej: welches Layout, MBR, GPT,

Andrej: welche Partition du haben möchtest, welche

Andrej: Dateisysteme, ob du LUKS haben möchtest und dann schreibst du es

Andrej: deklarativ rein, machst mit sops dein

Andrej: LUKS-Passwort rein, das ist mein Endgoal.

Andrej: Aber

Andrej: eins nach dem anderen lösen.

Andrej: Und das letzte Rabbit Hole, was ich jetzt noch aufmachen wollte

Andrej: zu dem Thema, da das ja

Andrej: alles so wiederherstellbar

Andrej: ist, gibt es in der Community einen

Andrej: ganz witzigen

Andrej: Versuch, oder nicht Versuch, es nutzen viele

Andrej: Leute, ein Ephemeral Root

Andrej: zu haben, also in dem Sinne, dass

Andrej: das Root-Datei-System nie auf der Festplatte existiert,

Andrej: sondern bei jedem Boot neu erzeugt wird.

Andrej: Ja, und im Endeffekt liegt es dann,

Thomas: Und, ah, klingt eigentlich auch total plausibel.

Andrej: ich glaube, es liegt dann im RAM,

Andrej: das ist ein Nix-Community-Projekt,

Andrej: also github.com slash nix-community

Andrej: und das heißt Impermanence.

Andrej: Habe es mir noch nicht angeschaut,

Andrej: fand ich einfach nur interessant vom Gedanken her.

Andrej: Wenn man so, klar,

Thomas: Ich meine, wenn du eh schon alles, die Daten, die ganzen Pakete

Thomas: in ihren ganzen Variationen müssen ja noch immer gespeichert werden,

Thomas: aber das Zusammenbauen kann ja und die mal,

Thomas: dann gehst du auch wirklich mal sicher,

Thomas: dass du nicht versehentlich außerhalb von irgendwelchen Nix-Spezifikationen

Thomas: irgendwas umkonfigurierst, ne?

Andrej: genau, it lets you choose what files and directories

Thomas: Okay, das heißt, du könntest eventuell sogar noch irgendwas definieren.

Andrej: you want to keep between reboots.

Andrej: The rest is thrown away.

Andrej: Dann soll es dein Home zum Beispiel

Thomas: wenn du möchtest, dass noch etwas persistiert wird.

Thomas: Das klingt auf jeden Fall total spannend.

Andrej: oder deine Boot-Partition vielleicht auch.

Andrej: Ganz andere Denke halt.

Thomas: Auf der anderen Seite natürlich auch einiges an Komplexität wieder,

Thomas: wenn man vom, ja, ich meine,

Thomas: deklarativ ist für Build-Prozesse, für Code, den du rausbringst,

Thomas: wo auf Production quasi sichergestellt sein muss,

Thomas: dass das derselbe Stand ist,

Thomas: wie den, den du entwickelt hast und getestet hast.

Andrej: Come to us.

Thomas: Aber bei Laptops, also bei Arbeitsumgebung,

Thomas: ist das Anforderungsprofil ja anders.

Thomas: Ich sehe den Charme und ich liebäugel auch gerade damit, da mal was auszuprobieren.

Thomas: Ich weiß nur nicht, ob das genauso wie mit To the Dark Side, We Have Cookies.

Andrej: Come to us.

Thomas: Ich weiß ja nicht, ob der O-Welt.

Andrej: Scheiße.

Thomas: Also dieses, du hast mal angefangen, irgendwann mit Ansible-Systeme einzurichten.

Thomas: Das hatte ich auch mal getestet und habe relativ schnell festgestellt,

Thomas: boah ne, allein schon dieser iterative Prozess, an das Ziel zu kommen,

Thomas: Und dann sicherzustellen, dass dasselbe Playbook auch funktioniert, wenn du vom Scratch startest, also nicht die Einzelschritte durchläufst. Das ist schon so viel Schmerz und das kostet so viel Zeit und das ist es bei mir einfach nie wert gewesen.

Andrej: Das hast du mit Nix halt nicht.

Andrej: Das baut oder baut nicht.

Thomas: Ja, genau.

Andrej: Ich glaube, der große

Andrej: Unterschied zwischen das Ansible-Deklarativ zu machen

Andrej: ist, erstens, Ansible ist arschlahm.

Andrej: Wenn du so...

Andrej: Das dauert einfach. Das ist so langsam.

Thomas: Ja, furchtbar.

Andrej: Und das nervt einfach schon.

Andrej: Wenn du nur ein Paket installieren möchtest,

Andrej: dann geht dir ja trotzdem das ganze Playbook jedes Mal durch,

Andrej: obwohl der Status ja schon längst erreicht ist,

Andrej: weil der hat halt kein State.

Andrej: Das ist ja der Nachteil.

Andrej: NixOS macht das nicht.

Andrej: Der hat irgendwie ein Div, macht den Div

Andrej: und im Endeffekt nichts anderes,

Andrej: als wenn du sagen würdest,

Andrej: sudo apt-get install oder brew install.

Andrej: Ist ja egal.

Andrej: Für Thomas, es gibt nix-darwin

Andrej: oder für die Leute, die das mal ausprüfen wollen,

Andrej: Und es gibt wohl ein paar Leute, die dann halt ihre Home zumindest mal gemacht haben.

Andrej: Oder die fangen an mit dem Repository und teilen sich dann mit der Flake, machen sich da das DN freien.

Andrej: Du brauchst ja gar kein NixOS, du kannst ja schon mal langsam starten.

Andrej: Du kannst den Nix-Paketmanager installieren auf macOS.

Andrej: Ich glaube, der braucht Root-Rechte.

Andrej: Ich weiß nicht, wie easy das ist, wenn das ein Lockdown-macOS beim Arbeitgeber ist.

Thomas: Testen.

Andrej: Weil du halt auf Slash nix musst und ein paar Sachen.

Andrej: Da bin ich mir gar nicht sicher.

Andrej: Ich habe gerade keinen Mac zu Hause, den ich nutzen kann.

Thomas: Ich fand's geil.

Andrej: Ja, super spannendes Thema, finde ich.

Andrej: Sorry fürs Abgenörde, aber sowas fixt mich total.

Andrej: Ich fand es geil.

Andrej: Endlich normale Leute.

Andrej: Und wenn jemand das nutzt und ich hier viel Schwachsinn erzähle,

Thomas: Ja, also bietet sich ja an, wenn man gerade für etwas brennt, Leute vielleicht noch gleich mit anzustecken bei der Gelegenheit. Das ist gut.

Andrej: weil ich bin gerade erst voll im Learning-Prozess drin.

Andrej: Bitte, bitte melden, weil ich bin total interessiert in einem Thema.

Andrej: Und das hört ja noch nicht auf.

Thomas: Ja, fantastisch.

Andrej: Das Thema wird gleich nochmal aufgebaut.

Andrej: Aber erst mal du.

Thomas: Na gut, dann ich.

Thomas: Also, der Papa hat sich was geklickt.

Thomas: Und zwar...

Andrej: Ist egal, was es war, es war unten rechts.

Thomas: Fast, aber nah genug.

Andrej: War die Batterie der Maus alle oder was?

Thomas: Also ich meine, wir leben in einer Welt...

Thomas: Auf dem Weg dahin.

Thomas: Also, du hast mich angefixt, du Sau.

Andrej: Das ist ein bisschen nicht mehr hingekommen.

Thomas: Das machst du ja schon mal gerne.

Thomas: Und zwar vor zwei Monaten oder so.

Thomas: als du mir dieses Video geschickt hast von der Framework-Keynote,

Thomas: als das 13 Pro vorgestellt wurde.

Andrej: Ist das schon draußen?

Thomas: Das hat so langsam in mir gebrodelt.

Thomas: Also es wurde ja irgendwie verzögert, die Lieferung.

Thomas: Es sollte im Juli jetzt die erste Charge kommen,

Andrej: Weil ich habe noch keine Reviews gefunden, deswegen frage ich.

Thomas: die eigentlich im Juni kommen sollte.

Thomas: Momentan steht bei den Batches immer noch

Thomas: Expected July.

Thomas: Genau, ich auch nicht.

Andrej: Naja, also nicht.

Thomas: Deswegen, eigentlich wollte ich auf Reviews warten, um zu gucken, weil, was war die Wunschvorstellung?

Thomas: Hab ich nicht, nein, das war mal wieder, das war mal wieder so.

Andrej: Das kannst du auch, glaube ich, vergessen auf dem Desktop.

Thomas: Die Wunschvorstellung war, ich mag ja, also meine Vergangenheit war, ich hab eigentlich seit Mitte 90er Jahre circa eigentlich nur Linux benutzt.

Thomas: In den unterschiedlichen Variationen, also und auf Servern, auch so OpenBSD, NetBSD, FreeBSD, das hat mich auch angefixt.

Thomas: Aber das war halt eine Servergeschichte, nie auf dem Desktop.

Thomas: Es gab ein, ich würde sagen, ja, andere Leute sehen das vielleicht anders,

Thomas: aber die OpenBSD-Entwickler, die nutzen das auch anscheinend auf ihren Notebooks.

Andrej: Ja, die eine Person.

Andrej: Kudos.

Thomas: Ich hätte da jetzt kein Interesse dran.

Thomas: Naja, ich hatte mal eine Phase, das muss irgendwie um 2010 oder so gewesen sein,

Thomas: da habe ich, glaube ich, zwei Jahre ein Mac benutzt,

Thomas: bin dann wieder zurück auf ein ThinkPad mit lecker Linux

Thomas: und als ich dann bei, ja, bei unserem Arbeitgeber jetzt angefangen habe,

Thomas: da hatte ich dann die Option und ich weiß, zuvor, wir haben uns ja ein Jahr zuvor kennengelernt,

Thomas: bei einem anderen Arbeitgeber, da hatte ich dann auch noch ein ThinkPad mit Linux

Thomas: und ich weiß, da waren wieder diverse Themen wie, was, ich erinnere mich nicht, okay, ach du je,

Andrej: Telefonanlage.

Andrej: Die Telefonanlage wäre so eine Telefonsoftware,

Andrej: die nur auf Mac oder Windows lief.

Andrej: Es war es ja noch.

Andrej: Weißt du das nicht mehr?

Thomas: nee, das habe ich verdrängt, achso, du meinst so, damit man sich dann da anmelden kann,

Andrej: Okay.

Andrej: Ja, PTSD.

Thomas: damit man telefonisch erreichbar ist, also der Client dafür.

Andrej: Ja.

Thomas: Ach, okay. Oh Gott, den habe ich zum Glück nicht mehr in Erinnerung.

Thomas: Aber ich weiß, ich hatte so Probleme wie, ich klappe die Kiste auf aus dem Standby

Thomas: und der Bildschirm bleibt schwarz oder so.

Thomas: Oder irgendwas mit WLAN, weiß ich auch noch.

Andrej: Das war vor zehn Jahren, by the way.

Thomas: Also da gab es Probleme und irgendwie dachte ich mir, boah, ich bin jetzt schon alt.

Thomas: Ich bin zu alt für diesen Scheiß.

Thomas: Und dann dachte ich mir, komm, ja, das ist schockierend genug.

Andrej: Das ist so alt, wie ich jetzt bin.

Thomas: Alleine schon das.

Andrej: Nicht ganz.

Thomas: Ja, und dann dachte ich mir jedenfalls, komm, versuchst du es nochmal mit einem Mac.

Thomas: Mit Windows kann ich ja gar nicht, aber eben dieser BSD-Unterbau von Mac

Thomas: und kombiniert mit absolut geiler Hardware, jetzt, damals nicht.

Thomas: Also der Mac, Katastrophe, ne?

Andrej: Warte mal, warte mal.

Andrej: Gar nicht.

Andrej: Also die Intels waren scheiße.

Thomas: Das war wirklich furchtbar.

Thomas: Diese Generation, also der, den ich 2010 hatte, mit dem war ich eigentlich sehr zufrieden.

Thomas: Der hatte eine schöne Build-Quality. Der war ja auch ein gutes Stück dicker als die 2017er, 2018er Modelle. Also 2017, 2018er Modelle. Und der hatte diese thermische Drossel nicht in dem Maße. Also mit dem konnte ich wirklich zufriedenstellend arbeiten. Es war halt nur kein Linux. Und deswegen bin ich irgendwann wieder zu Linux zurück und das Ding verkauft.

Thomas: Aber die 2017er, 18er Modelle, die so schön dünn gebaut haben, mit dem Intel drin, der dir deine Schenkel verbrät, nee, das war Katastrophe. Der hat dich ja die ganze Zeit angebrüllt. Da gehst du in ein Videomeeting und der brüllt dich die ganze Zeit an.

Thomas: Also da hast du dir, also ich weiß noch, ich habe dann irgendwann angefangen, mir einen Laptopständer hinzustellen, damit der von unten ein bisschen Luft zirkulieren kann. Am Ende Kopfhörer mit Noise Cancelling, damit dein Lüfter dich nicht nervt. Absurd. Naja, das war wirklich eine dunkle, dunkle Zeit von Apple, ja. Aber als dann natürlich die Apple Silicon Dinger rauskamen, Game Changer, total geil.

Andrej: Ja, ich glaube auch, wenn die nicht aus dem Alu-Block gefräst wären,

Andrej: wären die immer irgendwie linksdrahtig hochgegangen oder so

Andrej: oder weggeflogen vom Tisch.

Andrej: Weil, Alter, diese Lüfter, die waren ja konstant an dem Meeting.

Andrej: Konstant.

Andrej: It just works.

Thomas: Also ich bin, also ich habe jetzt hier so ein M4 Pro und bin vom Gerät her total verliebt da drin. Ich finde das wirklich von vorne bis hinten super sexy. Lässt eigentlich keine Wünsche offen, würde ich sagen. Fällt mir zumindest gerade nichts ein.

Andrej: Bis auf das Betriebssystem.

Thomas: Ja, genau. Ich verstehe auch nicht, wie die Leute arbeiten. Kürzlich noch ein Video gesehen von irgendjemandem auf YouTube, der jetzt nochmal macOS getestet hat mit 26 und meinte, mittlerweile kann man es wenigstens benutzen, weil die haben ja einiges auch mit Fenster, Tiling und so haben sie ja nachgerüstet jetzt. Es ist nicht auf dem Niveau von Windows und Linux, aber du brauchst kein Rectangle oder so mehr.

Andrej: Und das, sagen wir mal, in Klammern Fenstermanagement.

Andrej: Alles on.

Thomas: Also es geht auch ohne. Nur Rectangle bietet ja dann halt auch schöne Shortcuts an, damit die Fenster gleich auch noch richtig sind. Also das ist halt der Apple-Weg. Also auf der einen Seite können die sehr gut Shortcuts anbieten, das war früher so ein ganz elementares Thema für die. Auf der anderen Seite, für sowas Elementares bieten sie dann keine Shortcuts an.

Andrej: Okay.

Andrej: Und wie heißt dieses neue, in Klammern neue, Fenstermanagement von denen,

Thomas: Oder ein virtueller Desktop, also Space-Wechsel, dauert gefühlt zwei Sekunden, das kriege ich auch irgendwie die Pimpernellen bei. Also die Software ist es. Stage Manager? Nee, gar nicht.

Andrej: was eine absolute Vollkatastrophe ist, was man enablen muss, wenn man das startet?

Andrej: Ja, ja, oh mein Gott.

Andrej: Ich dachte so, cool, probiere ich mal aus.

Andrej: Vielleicht ist das ja besser als die Vollkatastrophe, die die vorher gemacht haben.

Andrej: Es ist einfach noch viel schlechter.

Andrej: Man findet gar nichts mehr wieder.

Thomas: Ich dachte am Anfang, die hätten das nur fürs iPad entwickelt und wäre gut dann, aber anscheinend kommt es ja auch auf dem macOS und ich kenne auch niemanden, der es benutzt, aber ich glaube, ich hoffe nicht schlagen, ich frage mich gerade, ob das beim iPad sogar default on war, bin mir nicht mehr ganz sicher, ich glaube, Roddy von der Freakshow war es, der gesagt hat, er findet das auf dem iPad eigentlich richtig gut, kann ich nicht nachvollziehen, ich mag das nirgendwo.

Andrej: Das ist, glaube ich, nicht ohne Grund Default Off.

Thomas: Naja, also Software und dieses ganze Gatekeeping, das für Einsteiger total sinnvoll ist, aber für Profis, also wenn ich halt, wie oft kriege ich einen Dialog von Copia, Copia läuft, es wird selten aktualisiert, es macht bei den Backups und wie oft kriege ich einen Dialog, ob das auf die Daten anderer Apps zugreifen darf.

Thomas: Ja natürlich, es ist meine Backup-Software. Natürlich darf die das. Im schlimmsten Fall würde ich das einmal bestätigen und nicht irgendwie nach jedem Update nochmal neu oder zwischendurch auch nochmal neu. Also solche Dinge treiben mich in den Wahnsinn. Du lädst irgendwo ein Binary runter, startest das, kriegst im Terminal gar kein ordentliches Feedback, warum es nicht startet. Ja, weil es halt irgendwie durch den, ich glaube es nennt sich Gatekeeper oder so, abgehalten wurde davon. Solche Dinge treiben mich in den Wahnsinn.

Andrej: Oh ja, dann musst du wieder in die Settings reingehen,

Thomas: Tja, ja, jetzt habe ich geklickt und will wieder Linux testen. Wieder mal zurück. Ich weiß nicht, ob das eine gute Idee ist, muss ich sagen. Also mal gucken, weil ich bin ja immer noch, also ich bin ja noch zehn Jahre älter, wie wir gerade festgestellt haben.

Andrej: dann diese eine Binary separat enablen und bla, bla, bla, bla, bla.

Andrej: Vielleicht musst du sogar noch rebooten, weil es noch nicht Applied wird.

Andrej: Oh mein Gott.

Thomas: Also eigentlich könnte man meinen, ich hätte noch weniger Bock auf den Scheiß, aber auf der anderen Seite, gewisse Dinge finde ich gerade auch geil. Ich tauche gerade wieder in Neovim ein. Also Vim als Editor ist eigentlich normal und die letzten Jahre habe ich Zed verwendet, dieses Zed, diese neumodische Entwicklungsumgebung, die ich auch sehr, sehr geil finde und die auch einen Vim-Mode hat und wirklich vieles sehr richtig macht.

Andrej: Das ist schon ein Neovim auf dem Mac installieren.

Thomas: Aber es ist halt immer noch ein Fenster.

Thomas: Und gewisse Dinge haben entweder kein Kürzel,

Thomas: wobei das gibt, glaube ich, wenige, die kein Kürzel haben.

Andrej: Also das wollen wir jetzt hier nicht.

Thomas: Habe ich, habe ich, habe ich.

Andrej: Okay.

Thomas: Genau, das habe ich nämlich erst die Tage wieder gemacht.

Thomas: Und diesmal, also damals hat es,

Thomas: irgendwann hat es nicht Klick gemacht bei mir.

Thomas: Aber da habe ich, glaube ich, nur Neovim installiert

Thomas: und versucht es händisch so ein bisschen zu konfigurieren.

Thomas: Jetzt habe ich einfach mal LazyVim verwendet.

Thomas: Und das Ding startet, rödelt ein bisschen

Andrej: Ja, ja.

Thomas: und auf einmal hast du eine richtig geile Entwicklungsumgebung,

Thomas: mit der du vor allem, du hast nicht diese Shortcuts mit drei Modifiern,

Thomas: wo du dir Finger brichst, sondern du drückst einfach Vim-typisch mehrere Tasten hintereinander

Thomas: und damit komme ich halt einfach viel besser klar.

Thomas: Also ich verliebe mich gerade wieder in Neovim und alles, was so auf Text ist

Andrej: Uh, hast du gar keinen Bock auf Linux?

Thomas: und ich freue mich einfach nochmal auf Linux.

Thomas: Und ich glaube, ich werde tatsächlich anfangen mal, ich werde mit Omarchy anfangen.

Thomas: Ich will einfach mal so ein richtig...

Thomas: Mal gucken.

Andrej: Weil Desktop-Umgebung gibt es halt nicht da, ne?

Andrej: Also eine klassische.

Thomas: Genau, ja, richtig. Also deswegen, das wird eine harte Umstellung sein, aber mir gefällt einiges von dem Ansatz. Ich muss aber auch dazu sagen, früher konnte ich mich an Tiling Manager nicht gut gewöhnen. Ich habe es mehrmals probiert, ich weiß aber auch nicht mehr, was ich damals getestet habe.

Thomas: Ich habe auch einen auf dem Mac mal getestet, diesen Amethyst oder so, der hat mich auch nicht begeistert, aber das ist ja auch so ein bisschen das Mac-Problem, also gewisse Dinge kann die Software ja nicht beeinflussen und das ist immer so ein limitierender Faktor bei allem, was Mac ist.

Thomas: Tja, naja, mal gucken, wie es mit der Linux-Welt so ist. Angefixt bin ich, wie gesagt, hardware-technisch auch total gespannt, also da hat mich, ich glaube am Ende, ich habe lange überlegt, ob ich klicken soll und am Ende war es irgendein Blogpost von den Framework-Jungs, wo über die SSD-Verfügbarkeit informiert wurde und das auf einmal für die Leute, die PCIe 5. Generation haben wollen,

Thomas: also eine SSD für PCIe 5, die hatten irgendwie nur folgende Modelle zur Verfügung und die waren verdammt teuer und jetzt haben sie einen neuen Lieferanten gefunden, trotz der Situation, wo irgendwie für dasselbe Geld doppelt so viel Kapazität und ich glaube sogar noch günstiger, da gab es so einen Blogpost vor ein paar Wochen und dann haben sie quasi das automatisch gemacht, adaptiert und auch noch den Preis gesenkt.

Thomas: Da dachte ich mir, Leute, wie geil ist das?

Thomas: Was für ein Hersteller macht sowas?

Thomas: Findet neue Lösungen und senkt dabei auch noch den Preis für Order,

Thomas: die schon, na gut, die sind nicht bezahlt.

Thomas: Die haben ein Deposit hinterlegt.

Thomas: Bezahlt sind die noch nicht, weil das sind alles Pre-Orders.

Thomas: Gut, also vielleicht sehen sie da auch die Gefahr,

Thomas: dann könnte ja jemand, wenn die Konfiguration sich ändert,

Thomas: eine Order droppen, wie auch immer, ist egal.

Thomas: Aber ich finde das trotzdem von der Firma her einen coolen Move.

Andrej: Ja, und jedes Teil hat einen QR-Code.

Thomas: Und habe mir dann gedacht, komm, jetzt klickst du.

Thomas: Das war komisch, weil du hast ein Framework 13.

Thomas: Ich habe mir jetzt das 13 Pro geklickt.

Thomas: Dieses hat halt so einen MacBook-Formfaktor.

Thomas: Gehen wir nochmal einen Schritt zurück.

Thomas: Für alle, die sich damit nicht auseinandergesetzt haben.

Thomas: Was macht ein Framework aus?

Thomas: Es ist wirklich total auf Repairability getrimmt.

Thomas: Du kannst es auseinanderbauen.

Thomas: Du kannst es sogar in Teilen kaufen und dir zusammenschrauben.

Thomas: Dann hast du halt dein Chassis,

Thomas: kriegst du deine Tastatur, kriegst du deine SSD,

Thomas: WLAN-Adapter oder was weiß ich.

Thomas: Und dann stöpselst du sie zusammen und dann kannst du die Kiste so benutzen.

Thomas: Oder eben, du musst was tauschen, Batterie neu, kostet 'nen Hunni oder sowas, kannst du einbauen, kein Problem.

Thomas: Geil, ne?

Andrej: Also du machst, ich glaube, ich muss nur vier Schrauben öffnen unten.

Andrej: Dann kannst du die Tastatur anheben.

Andrej: Und das ist nicht nur so reparierbar,

Andrej: sondern das Kabel für die Tastaturanheberei ist lang genug,

Andrej: dass du es nicht aus Versehen abreißt.

Andrej: Also sowas im Design ist halt auch drin, ne?

Thomas: Stimmt, preislich ist das ein ganz schöner Klopper.

Andrej: Ja, bin ich gespannt, was du davon hältst.

Andrej: Reparability ist natürlich ein großer Faktor.

Andrej: Dafür sind sie leider echt ein bisschen teuer für das, was sie bieten.

Andrej: Also im Vergleich zu Dell und Lenovo mit den ThinkPads.

Thomas: Die haben ja ein bisschen günstiger angefangen, als sie angekündigt wurden.

Andrej: Au, für die Workload ist ja was anderes.

Thomas: Da war der Markt ja auch schon in den Fritten, aber noch nicht so sehr.

Thomas: Ich habe das Teil jetzt bestellt für rund 2370 oder so.

Thomas: Ja, also mein MacBook war günstiger bei Amazon damals, war glaube ich ein paar Euro günstiger und von den Benchmarks her circa ein Drittel schneller, aber ob die Benchmarks aussagekräftig sind, weiß ich nicht.

Thomas: Ja, genau, das sagen die Benchmarks. Tatsächlich, das war's. Ja gut, da habe ich wirklich eigentlich keine Ahnung von. Ich habe nur gesehen, von der Teraflop-Geschichten her, hätte die Intel-Plattform vom Framework sogar bessere Zahlen, aber müsste man mal unter der realen Bedingung testen.

Andrej: Es wird definitiv besser sein für KI-Kram, dein MacBook.

Andrej: Da haben die nicht ansatzweise eine Chance gegen die.

Andrej: Was auch immer für ein Chip du nimmst, ob Intel oder AMD.

Thomas: Ja, okay, also geklickt für viel Geld und es war sehr komisch, weil du hast dein Framework 13 Jahre vor einem Jahr oder so gekauft und hast mir damals schon erzählt, ja, du kannst dir das halt fertig kaufen, pre-assembled, pre-built nennen sie es glaube ich, oder du kaufst dir das in der Do-it-yourself-Variante, dann kriegst du die ganzen Komponenten, du hast die ja sogar selber, um ein bisschen Knete zu sparen und war ja auch signifikant.

Andrej: Ich glaube, letztes Jahr im Mai oder so, in einem Dreh.

Thomas: Uiuiui, das ist, ja, irgendwo, das war noch eine Zeit, hör mal. Ja, kommen wir gleich zu. Kannst damit jetzt eine Reihe machen vielleicht. Also, ja, also wie gesagt, damals war es halt so, die Pre-Build-Variante ist teurer und du kannst ja was sparen, wenn du Do-It-Yourself machst.

Andrej: Bisschen, ich glaube 250 Euro oder so, habe ich mir gespart,

Andrej: weil ich meine SSD und RAM selber gekauft habe damals.

Andrej: Ich habe ja 48 GB da drin, dafür habe ich 90 Euro bezahlt.

Andrej: Und 2 TB SSD auch, ich glaube, 110 Euro waren das.

Andrej: Ich glaube, das ist jetzt alles so um die 300 bis 400 Euro wert.

Andrej: Willst du einen Fan verkaufen?

Andrej: Aber mir hat das damals auch schon keinen Sinn gemacht,

Thomas: Zu dem Zeitpunkt, wo ich dann geschaut habe, das war jetzt so vor rund zwei Wochen, war es plötzlich alles umgekehrt. Oder drei Wochen, weiß ich nicht. Also wenn die das wirklich tun, bin ich ganz bei dir. Das ist wirklich eine gute Frage. Ergibt auch dann gar keinen Sinn.

Andrej: weil die DIY-Variante, die wird zusammengebaut,

Andrej: getestet vor Ort in deren Lab

Andrej: und dann wieder auseinandergebaut.

Andrej: Das heißt, die hat ja einen Schritt mehr.

Andrej: Warum ist die günstiger?

Andrej: Das tun die, das ist deren Production-Prozess.

Andrej: Ich habe da so ein Interview gesehen,

Andrej: da sind die durch die Hallen gegangen

Andrej: und haben dann erklärt,

Andrej: der Gründer hat das so erklärt,

Andrej: wie die das machen.

Andrej: Warum ist das günstiger?

Thomas: Oder die testen die Komponenten nicht alle immer im Zusammenhang.

Andrej: Wenn du Produkte herstellst

Andrej: und verschiedene SKUs hast,

Andrej: also eine 2 GB, eine 8 GB,

Andrej: wenn du verschiedene Linien hast,

Andrej: Das ist immer teuer, weil das Lagerplatz

Andrej: ist. Aber die können ja einfach nur

Andrej: sagen, ja komm, wir bestellen einfach

Andrej: einen Sack von den grauen Panels, einen Sack von

Andrej: den deutschen Tastaturen, einen Sack von den

Andrej: englischen Tastaturen. Und die bedienen

Andrej: sich davon einfach sowieso. Vielleicht ist das

Andrej: keine Ahnung, ist nur Spekuliererei.

Thomas: Also deine Komponenten.

Andrej: Doch, die bauen den zusammen,

Thomas: Echt? Okay.

Andrej: machen auch RAM und SSD rein,

Thomas: Ich kenne das jetzt so von unserem Arbeitgeber und so, der hat halt Teststationen.

Andrej: weil sonst kannst du ja nicht testen. 400 Euro.

Thomas: Das sind dann riesige Teststationen für RAM-Module oder für SSDs oder sowas.

Thomas: Und dann kann das alles ganz gezielt getestet werden.

Thomas: Und wenn alle Komponenten einzeln funktionieren, müsste ja auch die Gesamtkombination stimmen.

Thomas: Ja, das war auf jeden Fall dann plötzlich, vor drei Wochen war das umgekehrt.

Thomas: Da war diese Konfiguration, von der ich gesprochen habe, 2370 oder so, das war die Pre-Build-Geschichte.

Thomas: Und klickst du dir die exakt selbe Konfiguration Do-It-Yourself zusammen, bist du 400 Euro teurer unterwegs.

Thomas: 350, meine ich, waren es.

Thomas: Ja, war komisch, ne? Ich habe darüber nachgedacht, hat für mich keinen Sinn ergeben, dachte mir dann, vielleicht ist die Pre-Build-Variante, haben sie vielleicht in genau diese Konfiguration durchgerechnet schon eine große Order bestellt für genau das und reserviert. Und wenn du Do-It-Yourself machst, kriegst du schon die aktuellen Konditionen. Das hatte ich mir mal so hergeleitet.

Andrej: Wow. Das ist viel.

Andrej: Also ein Fufi würde ich jetzt noch verstehen oder so,

Andrej: aber das kann sein.

Thomas: Ich habe es bestellt irgendwann und war total happy, also ich habe halt mit mir gerungen, willst du wirklich den Schritt gehen, also hast du nicht schon genug Probleme in deinem Leben, dass du jetzt auch noch funktionierende Dinge ersetzt aus Gründen mit neuen Problemen, die auf dich zukommen.

Andrej: Der Spieltrieb. Okay.

Thomas: Naja, der hat das Interesse oder die, die, die, ähm, genau, der hat gewonnen, ich habe geklickt, alles gut.

Thomas: Zwei, drei Tage später gucke ich in den Shop, wir sind irgendwie, ähm, zwei Batches schon weiter, ich bin Batch 16, jetzt mal bei Batch 18 und denke mir, hä, was ist denn da mit den Preisen passiert?

Thomas: Ähm, das Interessante ist, die Order ist wieder hergestellt.

Thomas: Do-it-yourself ist wieder günstiger.

Thomas: Aber frag nicht nach den Preisen.

Thomas: Es gibt einen Blogpost dazu, der das Ganze erklärt.

Thomas: Der halt erklärt, dass einfach mit dieser Art von Anstieg für die DDR5-Preise,

Thomas: oder diese LPCAMM2-Preise, damit haben sie nicht kalkuliert.

Thomas: Die Konfiguration, die ich bestellt habe, kostet jetzt 900 Euro mehr.

Andrej: Wow, 900?

Thomas: Krank, oder?

Andrej: Ja, das Problem ist halt auch,

Thomas: Ja, LPCAMM2, ja, das Ding kostet jetzt 3200 irgendwas Euro in der Pre-Build-Variante und es ist 3100 irgendwas Euro in der Do-It-Yourself-Variante, du kannst wieder ein bisschen sparen, aber da muss man sich schon, nee, 32, 32 mit einer 1TB SSD, das ist eine von den Pre-Build-Konfigurationen zum Glück gewesen,

Andrej: der Framework-Laptop ist der einzige Laptop

Andrej: und der erste Laptop, der dieses neue RAM-Modul hat.

Andrej: Wie heißt das?

Andrej: LP, wie auch so?

Andrej: LP-Cam, okay.

Andrej: Das heißt, das ist noch kein...

Andrej: Das nenne ich nicht sparen, du.

Andrej: Wie viel RAM hast du bestellt?

Thomas: Die haben zwei verfügbar gehabt, den Ultra 5 und den Ultra X7.

Thomas: Der Ultra 5 war dann 16 GB und 512 SSD und der Ultra X7 32 GB, 1 TB SSD.

Thomas: Zufällig genau das, was ich eh genommen hätte.

Andrej: Mich ärgert es so, dass sie den RAM geändert haben.

Thomas: Aber ja, haben Leute auch teilweise auf YouTube alles schon mal durchgespielt,

Andrej: Sonst würde ich mir nur das neue...

Andrej: Also ich würde einfach nur das neue Chassis,

Andrej: die neuen Lautsprecher und alles bestellen

Andrej: und einfach umbauen.

Thomas: tatsächlich ein komplettes Upgrade davon zu machen.

Thomas: Aber ja, der RAM ist natürlich ein Bestandteil der Platine und dementsprechend müsstest du da auch löten.

Andrej: Jep, lohnt nicht.

Thomas: Also ich bin aus allen Wolken gefallen und die haben es erklärt.

Thomas: Und die haben auch erklärt, dass eben aufgrund der Tatsache, dass die Preise so stark gestiegen sind, haben sie jetzt auch ein Problem.

Thomas: Die hatten nämlich schon eine gewisse Menge an 64-Gig-Modulen gekauft.

Thomas: Die reicht aber nur bis Batch 4, wenn du Do-It-Yourself bestellt hast.

Thomas: Und wenn du nur das Mainboard bestellt hast, bis Batch 7 oder irgendwie sowas.

Thomas: Und das Problem ist halt, für Do-It-Yourself und Mainboard-Bestellung, also Einzelkomponente, also nur Mainboard anscheinend,

Thomas: haben sie jetzt gesagt, die haben da jetzt 32 Gig-Module reingepackt statt 64,

Thomas: berechnen dir allerdings auch nur das 32 Gig-Modul zu dem damaligen Preis.

Thomas: Also das ist schon, sagen wir mal, fair, aber ist halt krass,

Thomas: weil du hast im Grunde deine 64 Gig-Konfiguration kannst du jetzt nicht kriegen.

Thomas: Und ich habe mich dann auch persönlich gefragt, weil da stand irgendwie so ein Satz drin wie,

Thomas: ja, für die Pre-Build-Systeme mit 32 Gig machen wir den Schritt nicht,

Thomas: da gibt es nämlich auch überhaupt noch gar keine 16 Gig-Version, die kommt später noch.

Thomas: Dann dachte ich mir, schreibst du sie mal an, ob man sich jetzt darauf einstellen kann, ob die so kommt wie bestellt oder ob wir dann später noch das Downgrade kriegen.

Thomas: Da haben sie auch reagiert und meinten, nee, nee, das wird dann schon so ausgeliefert werden mit den 32 Gig.

Andrej: Das ist krass, ne?

Thomas: Es ist unglaublich, wie der Markt gerade kaputt geht.

Andrej: Der Markt ist so richtig kaputt.

Thomas: Ist echt traurig.

Thomas: Also es ist wirklich traurig, gerade auch für so ein Unternehmen, was mit guten Werten an den Start geht.

Thomas: Wir haben es ja auch schon mal damals mit Samuel auf der Handyseite gehabt.

Thomas: Und haben jetzt wirklich ein Produkt rausgebracht, wo ich glaube, dass viele Entwickler da richtig Bock drauf haben, weil eben MacBook-Formfaktor, also großes Touchpad, das Design sehr ähnlich.

Thomas: Also vieles geht in die Richtung, mal gucken, wie die Verarbeitungsqualität nachher wirklich ist.

Thomas: Lautstärke könnte auch ein Thema sein, weil das hat halt immer noch nur eine Lüfterstruktur.

Thomas: Also es gibt halt nur einen Lüfter, nicht zwei wie bei Mac.

Andrej: Ja, das macht finanziell aber keinen Sinn.

Thomas: Das ist noch nicht so ideal.

Thomas: Aber dafür ist es halt upgradbar.

Thomas: Du könntest deins wirklich vollständig upgraden auf die neue Kiste.

Thomas: Nee, jetzt gerade jetzt nicht.

Andrej: Also aktuell nicht und es hat auch nie Sinn gemacht.

Andrej: Es macht mehr Sinn, den kompletten Laptop zu verkaufen,

Andrej: den neuen zu holen.

Thomas: Ja, ich denke auch.

Andrej: Weil willst du bei Ebay dir gebraucht

Andrej: jedes Einzelteil für den blöden Laptop kaufen?

Thomas: Das ist der Nachteil, du müsstest dann halt das Gerät auch alle Einzelkomponenten später so verkaufen, richtig.

Thomas: Und die müsstest du an den Mann bringen.

Andrej: Eben.

Andrej: Was ich machen würde oder was eine Überlegung wert wäre,

Andrej: ist natürlich nur das Mainboard zu tauschen.

Thomas: Für die Rechenleistung, ja.

Andrej: Dann kriegst du halt nicht das neue Chassis.

Andrej: Gut, dann hast du immer noch den Lautsprecher nicht

Thomas: Stimmt, das haben Leute tatsächlich einfach eigene Gehäuse irgendwie gebaut, gedruckt oder sonst was, ne?

Andrej: und dann kannst du den internen Kram von Framework

Andrej: halt für den Server benutzen.

Andrej: Weil dafür reicht die CPU ja dicke aus.

Andrej: Die Framework-Leute haben ja auch ein CAD-File aufgelegt

Andrej: für die ganzen Maße.

Andrej: Da gibt es, glaube ich, auch von bestimmten Herstellern

Thomas: Mhm, nice.

Andrej: auch fertige Gehäuse, die du kaufen kannst.

Andrej: Brauchst du gar nicht drucken.

Andrej: Sondern hast du so ein...

Andrej: Also gibt es alles, ne?

Thomas: Das ist ein interessantes Ökosystem, weil es ja auch, es gibt ja sogar ein RISC-V-Mainboard und ein ARM-Mainboard,

Thomas: nicht von Framework selbst, einfach

Thomas: diesen Formfaktor eingehalten und dann kannst

Thomas: du es dir da einbauen, wenn du möchtest. Nur den

Andrej: Ja, und deswegen macht es halt null Sinn in meinen Augen.

Thomas: Akku, den könntest du bei dir nicht einbauen, weil der ist

Thomas: dicker. Der ist ja ganz mehr

Thomas: Kapazität, aber der hat leider auch eine andere

Thomas: Form. Ja, Speaker vielleicht.

Thomas: Die Investition könnte klein genug sein, wenn die

Thomas: dich nerven, weil du meintest mal, die klingen so

Thomas: wie Dose. Das wäre vielleicht was.

Andrej: wie eine Alu-Dose. Nichts zu essen.

Thomas: Das ist doch, ja.

Thomas: Tja, interessant. Total verrückt.

Thomas: Ich habe mir dann überlegt,

Thomas: was kommt denn jetzt alles auf mich zu?

Thomas: Also vielleicht, Distribution, das ganze Thema Distribution.

Thomas: Also ich bin jetzt quasi, die letzten Tage tendiere ich zu Omarchy,

Thomas: einfach weil ich diese tastaturgetriebene Bedienung gerne mal ins Extreme treiben wollen würde.

Andrej: Da gibt es aber geile Tools für.

Thomas: Bis dahin war ich aber sehr unentschlossen, sollte es ein KDE sein, sollte es ein GNOME sein,

Thomas: sollte es ein COSMIC oder sowas sein, ja, nein, keine Ahnung.

Thomas: Ich habe mich so ein bisschen damit beschäftigt und da gibt es, also du hast halt auf einmal viele neue Herausforderungen, die du zu lösen hast, neben der einfachen Umgebung, die sich ändert.

Thomas: Du hast auf einmal so, was sind denn die Probleme? Naja, wenn du halt immer noch ein iPhone hast zumindest, so mal eben Dinge airdroppen geht halt nicht mehr.

Andrej: LocalSend zum Beispiel oder solchen.

Thomas: LocalSend, coole Lösung. Ja, habe ich auch mal getestet jetzt, also ohne Linux, einfach nur mal für die Leute, die vielleicht noch keine Lösung haben zwischen Geräten irgendwas oder vielleicht ein Linux und ein iPhone oder sowas.

Andrej: Da gibt es auch viele andere. LocalSend ist nur eine von,

Andrej: ich habe schon tausende solcher gesehen.

Thomas: Also LocalSend funktioniert halt irgendwie einfach nur, du musst halt im LAN sein und dann nutzt das hier dieses MDNS-Announcement und du siehst dich dann gegenseitig und dann kannst du sagen, alles klar, ich schicke da mal eine Datei rüber oder mein Clipboard oder so.

Thomas: Kannst du einfach ganz normal im Browser machen, kannst du aber auch die App installieren.

Thomas: Ziemlich cool.

Andrej: So habe ich zum Beispiel meine WireGuard-Dateien verteilt

Andrej: an die Geräte von meiner Freundin.

Thomas: Okay, nett.

Thomas: Aber du musst im selben LAN sein.

Thomas: Das ist die Hürde, glaube ich.

Thomas: Das heißt, wenn du dir irgendwo auf der Party bist oder so, Festival, Fete, irgendwas, willst du was austauschen, dann würde LocalSend wahrscheinlich nicht funktionieren.

Andrej: Es weiß ich noch, ja. Da gibt es aber auch

Andrej: Methoden, also es gibt auch so ein Tool,

Andrej: ich glaube, die kommen nicht auf den Namen,

Andrej: aber es gibt ganz viele solcher Send-Tools,

Andrej: die dann auch übers Internet funktionieren.

Andrej: Ohne Account, free und so.

Thomas: Ja, genau, übers Internet, aber wenn du halt lokal über Bluetooth quasi oder hier direktes WLAN oder sowas, dann wird es schon wieder schwieriger.

Andrej: Muss man ein bisschen aufpassen, was man schickt.

Andrej: nutze ich.

Thomas: Ja, ich habe KDE Connect gefunden.

Thomas: Mit sowas habe ich gar nicht gerechnet.

Thomas: Nutzt du?

Thomas: Okay, für dein Android und Linux und verbindest die.

Thomas: Was machst du da alles mit, Robert?

Andrej: Ich sehe gerade, ich habe es auf dem Desktop gar nicht installiert,

Andrej: aber auf dem Framework habe ich das drauf und da

Andrej: ich sehe die Notifications,

Andrej: was mehr oder weniger nervig sein kann.

Thomas: Das ist cool.

Andrej: Kannst aber ausmachen. Du kannst da

Andrej: glaube ich Dateien hinterschieben.

Andrej: Du siehst einen Anruf ankommen,

Andrej: falls du das stumm hast.

Andrej: Also ganz nett.

Thomas: Genau diese Integration, die man eigentlich nur innerhalb des eigenen Ökosystems erwartet.

Andrej: Meistens nur Apple. Microsoft kriegt das glaube ich auch nicht hin.

Thomas: Ich bin mal gespannt.

Thomas: Ich habe irgendwas gelesen beim iPhone gegen gewisse, manche Dinge nicht, die bei Android gehen.

Andrej: Gibt es das nicht im Web?

Thomas: Klar, wieder irgendwie abgesandboxed oder sowas.

Thomas: Aber ja, dann Apple Music ist bei mir noch ein Thema.

Thomas: Ja, das gibt es im Web.

Andrej: Gut, dann machst du dir so einen Chrome-Tab hier.

Thomas: Da habe ich nur wenig Bock drauf.

Thomas: Aber gibt es im Web.

Thomas: Wäre vielleicht eine Option.

Andrej: Wer ist das? Speicher als Seite

Andrej: oder so. Und dann hast du das auch als

Thomas: Auf dem Arbeitsrechner hatte ich damit Probleme, da sind die Streams immer wieder abgebrochen, aber vielleicht ist das ja auch ein Thema, was gelöst ist, das könnte natürlich sein. Ich habe sonst gefunden, gibt es eine freie Software, nein, die freie ist die glaube ich tatsächlich nicht. Es gibt eine Multi-Plattform-Software namens Cider, Cider Collective, die haben wohl ein Interface gecodet, Vibe-Coded wahrscheinlich und, ja, ich suche es gerade.

Andrej: App, in Klammern.

Andrej: Das Logo ist ja geil.

Andrej: Wenn du eine Hand in eine Ciderflasche hält,

Andrej: dann fällt eine Note raus in so ein Bierglas.

Andrej: Ist im Readme oben.

Thomas: Ah, okay. Ja, das könnte eine Lösung sein.

Thomas: Airpods weiß ich nicht, was mich erwartet.

Thomas: Also ich denke, verbinden sollte klappen, wie mit dem Arbeitsrechner.

Thomas: Du musst es halt nur explizit machen.

Thomas: Also es switcht dann halt nicht mehr.

Thomas: Es ist ja kein Multipoint, kein Bluetooth-Multipoint,

Thomas: sondern es switcht ja irgendwie mit irgendeinem Apple-Proprietär-Kram

Thomas: normalerweise zwischen den Geräten hin und her.

Thomas: Das wird natürlich mit dem Linux-Ding nicht mehr funktionieren.

Thomas: Da dachte ich mir schon, es gibt vielleicht auch andere Multipoint-Lösungen,

Thomas: Aber da hast du dann auch schon wieder, es gibt halt eigentlich immer nur so zweifaches Multipoint, also dreifach, ich glaube, ich habe einen Kopfhörer oder so gefunden, der das unterstützt und der dann aber auch nur degradierte Audioqualität anbietet.

Andrej: Also meine Bose, die

Andrej: urmelalten Dinger, die verbinden sich immer mit Handy.

Andrej: Die können sich mit zwei gleichzeitig verbinden.

Andrej: Das hat ein altes Gerät.

Andrej: Und wenn du auf dem Handy was spielst,

Andrej: dann Pause machst, dann auf dem MacBook weitermachst,

Thomas: Ja, das mit dem zweifaches scheint nicht nur wegen altes Gerät zu sein, das scheint immer noch ein Ding, eine Limitierung zu sein bei den, ich wechsle halt in der Regel ganz gerne mal zwischen drei Geräten hin und her, deswegen ist das relevant.

Andrej: oder egal was für ein Gerät, dann geht das.

Andrej: Und ist auch immer High-Quality.

Andrej: Ja gut, dann wird es vielleicht schwieriger.

Thomas: Aber mal gucken, da bin ich noch gespannt, das könnte auf jeden Fall noch ein bisschen Schmerzen bereiten, auch Schmerzen bereiten könnte die Verfügbarkeit hier so von Videoeditoren zum Beispiel, das ist aber eigentlich ein Thema, das haben wir immer noch nicht besprochen, nämlich Podsync quasi.

Thomas: Also ich habe halt Anfang des Jahres viele Monate quasi da reingeballert, eine Podcasting-Aufnahmeplattform zu bauen, weil mich die, mit der wir gearbeitet haben, ein bisschen genervt hat und dazu gehört natürlich auch testen, testen von vielen Editoren und die Verfügbarkeit von Editoren wie Final Cut oder, wie hieß das Adobe-Ding noch gleich, ich verdränge das immer, das gibt es zum Glück auch auf Linux.

Andrej: Ich kenne nur DaVinci Resolve.

Andrej: Das, ja.

Thomas: Es hat wohl Einschränkungen wegen Hardware-Beschleunigung und so, aber genau, das gibt es.

Thomas: Aber Final Cut natürlich nicht, das kriegst du wahrscheinlich sogar nur auf dem Mac, denke ich mal.

Andrej: Und ganz simpel halt das KDE-Tool.

Andrej: Das nutze ich auch oftmals so.

Thomas: Kdenlive oder so, ne?

Andrej: Kdenlive.

Andrej: Kdenlive, ja.

Thomas: Ja, das sind auf jeden Fall Dinge, wo man sich die letzten Jahre keine Gedanken machen musste,

Andrej: Das ist sehr rudimentär, aber funktioniert.

Thomas: weil du effektiv mit einem Mac halt die, in vielerlei Hinsicht ja die Vorteile von einem Unix-basierten System hast,

Thomas: die Kommandozeile und so.

Thomas: Und auf der anderen Seite aber auch nahezu

Thomas: alles, was kommerziell benötigt

Thomas: wird, funktioniert.

Thomas: Ob es halt irgendwie, keine Ahnung, die,

Thomas: wenn du dann doch mal irgendwie was mit der Webcam

Thomas: einstellen musst und Webcam

Thomas: Programmen da installieren

Thomas: musst, Treiber und Programmen, damit du die Einstellung

Thomas: vornehmen kannst, das geht halt einfach immer.

Thomas: Bei meiner Frau ist es halt so, bei Andrea, dass

Thomas: sie tatsächlich noch eine Hebammensoftware

Thomas: hat, weil sie ist jetzt gerade auf Apple Silicon

Thomas: gewechselt und sie hat eine Hebammensoftware, mit

Thomas: der sie ihre Abrechnung macht.

Thomas: Das ist wirklich noch eine Windows-only-Software.

Thomas: Die haben zwar jetzt auch eine SaaS-Lösung,

Thomas: aber da müsste man halt hinmigrieren.

Thomas: Aktuell ist es noch Windows-only.

Andrej: Ja.

Thomas: Und Windows-only, das ist gar nicht mehr so...

Thomas: Also ich hätte gedacht, du kannst einfach diese Parallels-VM nehmen

Thomas: und du startest die jetzt halt auf einem aktuellen Parallels,

Thomas: auf einem Apple Silicon.

Thomas: Nope, weil der Ansatz ist wirklich,

Thomas: du installierst ein ARM-basiertes Windows

Thomas: und das ARM-basierte Windows wiederum hat dann den Translation-Layer drin,

Thomas: um x86 drauf auszuführen.

Andrej: Oh, böse Kombi, ey.

Andrej: Das ist ja eine Kette.

Thomas: Naja, da hast du einige Komponenten

Thomas: drin, brauchst wieder eine Windows-Lizenz und

Thomas: heieiei. So,

Thomas: vorhin brannte mir eine Frage

Thomas: Dingens, und jetzt haben wir das Linux-Thema

Thomas: und wie gesagt, also es dauert jetzt noch ewig,

Thomas: wenn es sich nicht

Thomas: noch weiter verschiebt, dann irgendwann im Oktober,

Thomas: aber ich sehe gerade,

Thomas: Batch 18 ist schon für Dezember angekündigt,

Thomas: also kann halt auch sein, dass es

Thomas: sich wieder verschoben hat,

Thomas: wer weiß das schon. Warte, das

Thomas: gucke ich jetzt schnell, das dürfte

Thomas: easy gehen. Ich glaube, du musst nur in den Konfigurator

Thomas: klickst halt irgendeine Konfiguration an, siehst,

Thomas: dass sie in welchem Batch sie drin ist

Thomas: und dann klickst du auf den Batch und dann zeigen

Thomas: sie dir an, wie das komplette, die gesamte

Thomas: Timeline ist.

Thomas: Nö, ist tatsächlich noch

Thomas: für Oktober expected. Na gut.

Thomas: Du hast vorhin

Thomas: das Stichwort TPM

Thomas: erwähnt. Dinge, mit denen ich

Thomas: mich, glaube ich, noch nie auseinandergesetzt

Thomas: habe in der PC-Welt.

Andrej: Ich nehme Unsecure Boot.

Thomas: Ja, vielleicht

Thomas: Vielleicht auch, aber was ich ja sehr charmant finde in der Apple-Welt ist, dass sie gewisse Dinge eben über dieses Secure Enclave gelöst haben.

Thomas: Das ist ja im Grunde wie ein zweiter kleiner Rechner im Rechner ist, mit fest definierten Schnittstellen und dadurch wird halt diese Kapselung realisiert.

Thomas: Kriegt man das mit TPM auch so hin und gibt es da auch so Linux-Integration, dass so zum Beispiel sowas wie Fingerprint-Sensor-Informationen, diese biometrischen Dinge, dass die halt in TPM gespeichert werden? Ist das das Pendant oder ist das was komplett anderes?

Andrej: Nee, also das ist jetzt mein Wissen vor vielen Jahren.

Andrej: Vor drei, vier, fünf Jahren oder so.

Andrej: Fingerprint ist entweder ein Binary-Blob-Geschichtchen,

Andrej: was dein Fingerprint-Reader macht.

Andrej: Und dein Fingerprint liegt auf dem Gerät selbst.

Thomas: Okay, okay, okay, okay. Das hatten wir mal bei dir mit dem Dashboard, mit dem Kiosk, das Thema. Wenn du TPM benutzt, dann löst das nicht das Problem, wenn das gesamte Gerät geklaut wird, weil der Schlüssel ja quasi mitgeklaut ist.

Andrej: Oder es ist diese Lib.

Andrej: Und wer ist die Lib?

Andrej: Irgendeine Lib ist das, die alle Fingerprint-Reader kann.

Andrej: Und dann ist das irgendwo lokal.

Andrej: Und dann läuft da...

Andrej: Da bin ich ganz, ganz, ganz froh.

Andrej: Das ist nicht ansatzweise so wie bei Mac oder Windows.

Andrej: Bei Windows hast du ja auch dieses Windows Hello,

Andrej: glaube ich, heißt es ja.

Andrej: Was mit biometrischen Faktoren wie Gesichtserkennung

Andrej: vielleicht auch Fingerprint, das weiß ich gerade gar nicht,

Andrej: dein Account entsperrt

Andrej: und das hast du nicht so.

Andrej: Du kannst den Fingerprint benutzen,

Andrej: kannst ihn für dein Login benutzen,

Andrej: du kannst ihn auch für SSH benutzen, das geht,

Andrej: aber wie sicher das ist, kann ich dir

Andrej: nicht gerade sagen.

Andrej: Und Verschlüsselung ist ja nochmal ein separates Thema.

Andrej: TPM an sich bringt dir gar nichts, weil

Andrej: dann ist dein Laptop geklaut,

Andrej: ist ja zwar verschlüsselt, aber

Andrej: wenn er dann startet, ist er halt trotzdem

Andrej: am, müsst ihr halt die SSD klauen.

Andrej: Nur dafür schützt es.

Andrej: Genau, und da sind dann diese Shamir-Secrets halt interessant,

Andrej: die dann mit Tang und Clevis kommen können.

Andrej: Dann hast du Clevis als einen Teil,

Andrej: TPM als zweiten und die beiden dürfen zusammen entschlüsseln.

Andrej: Das heißt, dein Threat-Faktor ist dann,

Andrej: solange die zu Hause sind, kriegen die meinen Laptop entschlüsselt.

Andrej: Hey, whatever, wenn es geklaut ist, dann halt nicht.

Andrej: Das heißt aber auch, wenn es geklaut ist, dass man es eintippen muss.

Thomas: Okay. Wie war denn dein Umstieg damals? Wenn du dich da noch dran erinnerst, das ist ja jetzt auch schon ein Jährchen her. Auf Linux. Genau. Du hattest vorher auch schon mal Linux, ne? Das stimmt. Aber dann warst du ja doch ein paar Jahre primär auf dem Mac unterwegs, oder? Von der Arbeit her? Und, ja.

Andrej: Auf Linux oder auf Mac?

Andrej: Weil ich bin ja auf Mac bei der Arbeit gewechselt.

Andrej: Meinst du, also ja, ich mache das ja auch irgendwie 2016, ne, 2015 habe ich das klar.

Andrej: Ne, von der Arbeit her ja, bin ich ja jetzt auch immer noch.

Thomas: Hm. Ja, das ist ein guter Faktor, ja. Stimmt. Ja. Mhm. Ja. Ja. Ja. Das muss man dann wieder machen. Stimmt. Ja. Hast du mir gerade kurz Angst gemacht? Dafür so ein Roadcaster-Duo. Und. Mhm. Ja. Okay. Stimmt, es gab auch ein Android-App-Ausführ-Layer, oder? Außerhalb von dem SDK. Okay. Na gut. Wir werden sehen. Ich bin total gespannt. Rollig. Alles.

Andrej: Also ich bin, wie gesagt, immer noch ein großer Fan von dem.

Andrej: Ich habe keinen Bock auf das Mac-User-Interface, das finde ich einfach, liegt mir nicht.

Andrej: Ich finde das nicht logisch.

Andrej: Und hast natürlich die ganzen Vorteile mit Docker-Nativ.

Andrej: Keine VM, ich bin, also ich weiß auch, welche Tools ich immer nutze.

Andrej: Also wenn man mal zoomen und so läuft alles, wenn man Teams benutzt, Teams for Linux, nicht das offizielle Teams benutzen, das ist Müll, einfach das Teams for Linux Ding nutzen, wenn man es dann darf, installieren darf.

Andrej: Für meinen persönlichen Use Case habe ich ja wenig gefunden oder eigentlich gar nichts gefunden, was ich damit nicht machen kann.

Andrej: Aber es liegt auch stark daran, dass wenn ich irgendwas kaufe, irgendwelche Hardware, dann recherchiere ich auch im Info hinein.

Andrej: Audio Interface ist zum Beispiel so ein Thema, das ist nicht so easy dann.

Andrej: Du kannst jetzt nicht einfach so sagen,

Andrej: okay, ich mache jetzt Linux, ich möchte jetzt

Andrej: diese Streamdecks haben

Andrej: oder sowas. Ich glaube, es gibt da

Andrej: oder GoXLR, diese

Andrej: bekannten Teile. Ich glaube, es gibt für bestimmte

Andrej: Themen, irgendwer hat auch irgendwo im YouTube-Video

Andrej: mal erwähnt, dass GoXLR sogar besser

Andrej: auf Linux gerade läuft, weil die die alte Software

Andrej: nicht mehr supporten oder so ein Quatsch.

Andrej: Und da ist die Community natürlich dann wieder dran.

Andrej: Aber muss man ein bisschen

Andrej: mehr schauen. Es gibt so ein,

Andrej: ich habe vergessen, wie das heißt, so ein Standard,

Andrej: in dem alle Audio-Interfaces

Andrej: mit drin sind. Und wenn

Andrej: das Audio-Interface

Andrej: diesen Standard unterstützt, dann kannst du es

Andrej: damit halt benutzen. Das heißt aber

Andrej: nicht, dass du es damit einstellen kannst. Mein Yamaha

Andrej: AG03, was ich hier habe zum Aufnehmen,

Andrej: das kann ich perfekt nutzen.

Andrej: Alle Knöpfchen drücken und so weiter.

Andrej: Das ist gut. Aber die

Andrej: Konfiguration muss ich über so eine komische App machen.

Andrej: Und diese App muss sich dann in Wine laufen

Andrej: lassen auf meinem Laptop. Die Konfiguration

Andrej: kann ich aber auch mit meinem Handy machen. Da gibt es

Andrej: eine Handy-App zu. Weil im Endeffekt ist die Wine-App

Andrej: nichts anderes als eine Android-App, die

Andrej: oder was auch immer für eine App halt gepackagt ist.

Andrej: Uh, da musst du, ne,

Andrej: also, ich weiß, dass Chrome, Chrome

Andrej: OS hat das, aber hab ich mich noch

Andrej: nicht mit beschäftigt. Ja, frag.

Thomas: Dann jetzt du und auch mit dem Nix mit dabei.

Thomas: Ist alles nochmal so ein bisschen aufgewühlt.

Thomas: Mal gucken, mal gucken.

Thomas: Du hattest, ich weiß nicht, das nächste Thema kommt ja jetzt wieder, ne?

Thomas: Ich hatte nämlich noch ein...

Thomas: Komm, fangen wir mit dem nächsten Thema an.

Andrej: Okay. Genau.

Thomas: Ich bring das gleich mal rein.

Andrej: Wir haben ja noch nicht genug geredet mit einer Stunde

Thomas: Plus den ersten Teil der Aufnahmen.

Andrej: 58. Oh, stimmt.

Andrej: Mist. Ähm, naja.

Andrej: Wird auch nicht so mega lang.

Andrej: Ich hab ja dieses 10-Zoll

Andrej: Rack hier rumstehen, was ich ja

Andrej: auf Meetups mitnehme und so. Und

Andrej: wir haben ja auch mal von TouchKio gesprochen.

Andrej: Diese Software, die dir erlaubt,

Andrej: ein Touchscreen mit Home Assistant zu steuern,

Andrej: mit dimmbaren, also das Licht dann zu steuern,

Andrej: an- und auszuschalten, das Dashboard.

Andrej: Mir war das zu komplex und dann habe ich die Idee gehabt,

Andrej: ich baue jetzt ein Betriebssystem, was ja nicht komplexer ist.

Thomas: Von Home Assistant?

Andrej: Nein, mein Ziel war, oder anders,

Andrej: bei TouchKio muss man halt ein Betriebssystem installieren,

Andrej: ein bestimmtes und auch ein bestimmtes Desktop,

Andrej: weil sonst funktioniert das Licht nicht und so weiter.

Andrej: Und dann muss man ein TouchKio installieren.

Andrej: Das fand ich waren schon sehr viele nervige Schritte.

Andrej: Nichts gegen das Tool, das ist super, aber es sind halt viele nervige Schritte, die viele Leute, glaube ich, scheuen.

Andrej: Und ich dachte, wie cool das einfach wäre, wenn du einfach was flashen kannst und dann hast du so ein Betriebssystem, was genau das eine macht, und zwar die Dashboard-Anzeigen mit Home Assistant.

Andrej: Und klar, es gibt die iPads, es gibt auch die Android-Version und ich habe gelernt, es gibt einen Kiosk-Modus von Home Assistant für iOS und für Android, wusste ich gar nicht.

Andrej: Ja, also die Companion-App. Es gibt einen iOS-Kiosk-Modus und es gibt einen Android-Kiosk-Modus.

Thomas: Okay, stimmt.

Andrej: Musst du mal in die Doku gucken.

Andrej: Du kannst zum Beispiel bei Android auch den Home Assistant als Launcher auswählen.

Andrej: Das heißt, das bootet direkt in Home Assistant rein.

Andrej: Ja, gibt so ein paar Sachen.

Andrej: Ich bin kein Fan von diesen, so weder iPads noch Android-Tablets an die Wand zu hängen,

Andrej: weil irgendwann sind die halt out of date und dann funktioniert die App vielleicht irgendwann nicht mehr.

Andrej: die ist das jenes. Da bin ich halt irgendwie kein Fan von.

Andrej: Und ich bin aber ein Fan von

Andrej: einem gut maintainter Hardware,

Andrej: irgendeiner x86 oder Raspberry Pi

Andrej: auch, meinetwegen.

Andrej: Und da halt dann erst drauf zu bauen, was

Andrej: dann halt geupdatet wird. Das ist aber auch der

Andrej: Nachteil bei dem TouchKio, ist halt

Andrej: Debian drunter. So, nach fünf Jahren

Andrej: musst du halt, oder wann auch immer der Zeitpunkt ist

Andrej: und nachdem du es installiert hast, musst du halt ein Major-Upgrade

Andrej: machen. So, und das machst du nicht

Andrej: per Klick. Und ich hatte mir

Andrej: die Zielstellung gesetzt, ich möchte ein

Andrej: OS bauen, was easy

Andrej: integriert, aber halt auch

Andrej: eine Update-Entity hat in Home Assistant,

Andrej: wo man sagt, Update, Update, Update und

Andrej: muss sich gar nicht drum kümmern. Du musst nicht

Andrej: verstehen, du brauchst kein SSH,

Andrej: um die Kiste zu verwalten.

Andrej: Das ist gerade mein Ziel. Und ursprünglich wollte ich das

Andrej: mit Yocto machen, weil ich Bock auf Yocto lernen hatte.

Andrej: Aber dann habe ich gemerkt, boah, das ist ja voll kompliziert.

Andrej: Und dann meinte ein Kollege von mir, mit dem ich hier die

Andrej: Nix-Installationsparty gemacht habe, mach das mal

Andrej: mit NixOS und probier mal aus. Und dann hat er mich gefixt

Andrej: und dann habe ich das jetzt mal gemacht.

Andrej: Und ich habe jetzt wahnsinnig viel Zeit darin investiert und bin auch schon verdammt weit gekommen, also krass.

Thomas: So hat es also angefangen, ja?

Andrej: Ich kann jetzt x86-Images bauen und Raspberry Pi 4, das ist das Einzige, was ich gerade hier habe.

Andrej: Ich kann Displays erkennen, ob das ein internes Display oder ein externes ist, weil das macht einen Unterschied zwischen Dim-Layern, das sind unterschiedliche Tools, die das Dimming dann machen.

Andrej: also wirklich Hardware-Dimming, die sprechen dann

Andrej: mit meinem Monitor und haben

Andrej: dann eine bidirektionale

Thomas: Ja, vor allem, wenn du einen Browser orchestrieren musst.

Andrej: Kommunikation. Wenn das nicht funktioniert,

Andrej: geht es immer noch auf Gamma-Werte

Andrej: runter, Rechnungen runter. Das heißt, du kannst immer

Andrej: noch dimmen. So doof, dann verbraucht der

Andrej: Monitor immer noch viel Strom in der Theorie, weil

Andrej: die Brightness nicht ganz so angepasst wird

Andrej: wie mit Hardware dann. Genau.

Andrej: MQTT habe ich entwickelt,

Andrej: dass der sich automatisch meldet bei Home Assistant.

Andrej: Ich habe so ein Seed-File, das

Andrej: du populierst mit MQTT und

Andrej: einen Home Assistant-Token, damit

Andrej: der User sich direkt anmeldet und du das

Andrej: Dashboard hast und nicht über ein Touchscreen dein

Andrej: Username und Passwort eintippen musst, weil das ist Horror.

Andrej: Das habe ich auch echt hacky gemacht,

Andrej: weil es gibt keinen offiziellen Weg von Home Assistant.

Andrej: Ich nehme mir einen User-Token,

Andrej: speichere den, starte Chromium

Andrej: im Developer-Modus

Andrej: mit dem Token.

Andrej: Wie war das nochmal?

Andrej: Ich glaube, ich speichere den Token

Andrej: in den Local Storage vom Chromium.

Andrej: Er startet einmal,

Andrej: dadurch meldet er sich an.

Andrej: Davon nehme ich dann den Cookie.

Andrej: schließe Chromium wieder

Andrej: und starte dann wieder.

Andrej: Irgendwie so war das. Ich habe es nicht mehr in die Details im Kopf.

Andrej: Es gibt ja keinen offiziellen Mechanismus, um sich

Andrej: im User Interface einzuloggen.

Andrej: Das heißt, du musst halt über die Low Level gehen.

Andrej: Das war geil. Das hat Spaß gemacht,

Andrej: das rauszufinden.

Andrej: Ja, und ich möchte nicht,

Andrej: dass man da, ich habe ein Touchscreen Keyboard

Andrej: reingebaut, das war auch richtig kompliziert,

Andrej: aber ich habe ja keinen Bock,

Andrej: ein Passwort da einzutippen. Das macht halt gar keinen Spaß.

Thomas: Da müsste es so einen QR-Code einloggen geben.

Andrej: Ja, aber wie?

Thomas: QR-Code scannen und dann auf dem Handy einloggen oder sowas.

Thomas: Aber dann auch natürlich nicht einloggen mit dem User,

Andrej: Ja, aber eben.

Thomas: mit dem du auf dem Handy eingeloggt bist,

Thomas: weil der darf ja zu viel.

Thomas: Ei, ei, ei.

Andrej: Genau. Und dann habe ich mir auch gesagt, okay, jetzt schreibe ich mal die ganze Doku dafür, wie viel notwendig ist. Habe ich das gemacht mit Screenshots und so. Ich habe das dann fertig gemacht und habe gesehen, das sind ganz schön viele Schritte. Du musst in Home Assistant gehen, du musst einen neuen User erstellen, den Kiosk-User oder wie auch immer du ihn nennen möchtest.

Thomas: Okay.

Andrej: dann musst du dich als der User einloggen,

Andrej: weil du kannst keinen Token erstellen

Andrej: für einen anderen User. Das ist

Andrej: total doof. Das heißt, du

Andrej: erzeugst immer nur Tokens für den User, der du

Andrej: aktuell bist. Genau, ohne einen Token kann

Thomas: Und ohne einen Token kannst du auch nicht mit der API reden wahrscheinlich.

Andrej: ich das Seed-File nicht populieren

Andrej: und dann halt das Dashboard

Andrej: Assistant starten. Nun ja,

Andrej: Claude hat mir unfassbar dabei geholfen, aber man muss

Andrej: dann leider auch viel selber machen und dann

Andrej: und Basis NixOS halt.

Andrej: Jetzt bin ich mir überlegen,

Andrej: vielleicht sollte ich es doch anders machen.

Andrej: vielleicht doch die Integration schreiben.

Andrej: Und die Integration kümmert sich dann um alles.

Thomas: Okay.

Andrej: Da kann ich dann auch Zugriff,

Andrej: habe ich dann halt über die internen Tools

Andrej: auf den Auth-Provider von Home Assistant Zugriff

Andrej: und kann das dann erzeugen.

Andrej: Muss es nicht selber machen.

Thomas: Das heißt, du kannst über eine Integration

Thomas: auch User in Home Assistant erstellen und alles, was dazu gehört.

Andrej: Ja, eine Integration hat voll Zugriff.

Thomas: Okay.

Thomas: Was natürlich auch immer die Gefahr mit sich bringt.

Thomas: Also an der Stelle für alle HACS-Integrationen.

Andrej: Ja, das ist halt HACS, ne?

Andrej: Das ist, ja, genau.

Thomas: Was ist denn da?

Andrej: Und dann dachte ich, okay, vielleicht mache ich das.

Andrej: Ich glaube, das schreibe ich mir mal am Wochenende.

Andrej: Und was war noch?

Andrej: Ach ja, und dann sitzt da ja noch so ein Token auf dem Gerät,

Andrej: wenn das Gerät geklaut ist.

Andrej: Hm, dann, äh, ja, kannst halt token revoken, na klar.

Thomas: Token revoken.

Thomas: Ja.

Andrej: Aber sieht halt trotzdem deine Sachen, dein WiFi eventuell, ne?

Andrej: Und dann dachte ich, das passt ja perfekt mit diesen Tang & Clevis.

Andrej: Oder nee, Tang & Clev...

Andrej: Mein Gott, wie heißt das?

Andrej: Ähm...

Andrej: Tang & Clevis, genau.

Thomas: Ja.

Andrej: Dann dachte ich, okay, vielleicht schreibe ich ein Home Assistant Add-on,

Andrej: was den Tang halt laufen lässt.

Thomas: Was ja auch nicht so verkehrt wäre eigentlich.

Andrej: Home Assistant muss online sein, und solange der online...

Thomas: Also wenn so ein Home Assistant laufen muss,

Thomas: dass die, wenn du so eine Art Recovery-Mechanismus bringst,

Andrej: Ja, genau.

Thomas: dass, keine Ahnung, zwei Minuten lang keine Eingabe

Thomas: oder fünf Minuten lang dein Rebooter einfach nochmal

Thomas: mit der Hoffnung, dass sich das Problem gelöst hat.

Thomas: Ja, interessant.

Andrej: Und das Coole ist, du kannst Tang auch,

Andrej: du kannst mehrere Tangs benutzen.

Andrej: Also du kannst halt mehrfach diesen Server laufen lassen

Andrej: und einfach mehrere Key Slots machen.

Andrej: Das heißt, du kannst einen auf deinem Raspberry Pi packen,

Andrej: völlig unabhängig von dem Add-on.

Andrej: Und dann kannst du einen im Home Assistant Add-on laufen lassen.

Andrej: Genau, da bin ich gerade so am Spinnen,

Andrej: worauf ich da Bock drauf habe.

Thomas: Klingt komplex, aber auf jeden Fall auch gut.

Thomas: Ich meine, was bedeutet das?

Thomas: So ein Tang-Server für Tang und Clevis.

Andrej: Tang und Clevis.

Thomas: Achso, was ist das denn?

Andrej: Tang und Clevis ist wohl ein,

Andrej: wenn du das mal googlest,

Andrej: dann siehst du ein Bild für einen Mechanismus,

Andrej: wie man Physiker, ah hier,

Andrej: Tang, Clevis,

Andrej: das ist so ein Latch-Mechanismus, heißt das, glaube ich,

Andrej: auf Englisch, weiß nicht, was auf Deutsch ist.

Andrej: So wie so ein Kettenglied kann man sich das vorstellen.

Andrej: So fast. Ja, ja, ja.

Thomas: Okay, na gut, Clevis und Tang.

Thomas: Man kriegt auch viele Personenbilder in dem Suchergebnis.

Thomas: Okay, genau.

Thomas: Ich überlege gerade, was sind die operativen Hürden von sowas?

Thomas: Also wenn du sowas in den Betrieb nehmen wollen würdest, hat das natürlich eine gewisse Komplexität, du musst es erstmal in deiner Integration alles orchestrieren und in dem Betriebssystem von dem Gerät, aber es kann natürlich auch operativ immer so ein bisschen was mit sich bringen, wie zum Beispiel, was ist, wenn der Home Assistant nicht im selben Netzsegment steht.

Andrej: Jep.

Thomas: Wie reden die miteinander? Ist das überhaupt Broadcast? Wird einfach ins Netz posaunt, ich suche hier einen Tang, mit irgendeinem Clevis, aber Clevis war doch der Client.

Andrej: Clevis. Genau. Aber du sagst immer

Thomas: Okay, ja, ich weiß nicht, ob sich das jemals ändern wird. Tang und Clevis. Also geht der Client hin und sagt hier, Server, ich such dich, Server mit irgendeiner ID vielleicht, mit irgendeiner Kennung und der muss sich dann melden und dazu muss das vielleicht irgendwie MDNS reden können.

Andrej: Tang und Clevis.

Andrej: Denke, das ist die IP.

Thomas: Ist das eine Einschränkung oder ist das quasi hart kodiert die URL, die IP oder IP-Port-Kombination?

Andrej: Denke, das ist die IP. Du kannst ja auch mehrere

Thomas: Okay, das heißt, das sollte dann kein Problem sein, selbst wenn dein Home Assistant in einem anderen Netzsegment steht.

Andrej: angeben, deswegen ist das auch nicht so wild.

Andrej: Ja, theoretisch nicht.

Andrej: Ja, genau. WiFi-Token oder Ethernet?

Thomas: Was musst du zum Orchestrieren sonst noch mit drauf tun?

Thomas: Also wenn du quasi sagst, ja, das ist eigentlich auch mein Vorgehen.

Andrej: Also Ethernet ja nicht, aber eventuell

Andrej: dann Static-Configuration.

Andrej: wenn da jemand Bock drauf hat.

Andrej: Also ich mache ja immer DHCP

Andrej: und pin die IP einfach am Router.

Andrej: Das ist mir viel einfacher als Static, weil dann kannst du auch mal

Andrej: das Netz ändern. Es gibt noch...

Thomas: Das ist natürlich für viele mit Router gucken und dann da raussuchen, welches Device hat sich hier angemeldet, damit ich die MAC-Adresse finde.

Andrej: Ja, aber wer statisch

Thomas: Ja, ja, ja. Das sind ein paar Schritte. Wie ist denn sonst der Provisionierungsprozess? Sagen wir mal, du hast jetzt hier irgendein Tablet oder ein Pi oder sowas und wie kriegst du das Betriebssystem aufgespielt?

Andrej: konfiguriert, der kann auch Router gucken.

Andrej: Da habe ich auch ein Problem gefunden.

Andrej: Da kommen wir gleich drauf. Erstmal baue

Andrej: ich mir ein Disk-Image. Das Disk-Image

Andrej: kannst du einfach flashen.

Andrej: Raspberry Pi 4 bootet auch schon, funktioniert.

Andrej: Ich habe hier so ein Odroid,

Andrej: so ein Intel-Chip hat der.

Andrej: Funktioniert auch. Dann ist mir eingefallen,

Andrej: Also du bootest, flasht und wenn du geflasht hast, ist die SD-Karte oder deine SSD oder was auch immer du an deinem Rechner gehangen hast, da gibt es eine FAT-Partition, die kann jeder lesen, also Windows, Mac, Linux, mit FAT ist ja easy und da musst du dann eine Datei hinlegen, in der das WiFi der MQTT, aktuell noch MQTT, ich möchte ja noch migrieren und dein Token von Home Assistant drin liegen und die URL von Home Assistant.

Andrej: Und beim Boot von dieser Datei kopiert er das lokal weg, löscht die Datei von der FAT-Partition, weil die ja easy lesbar ist, und legt dann dann irgendwo ums Deutsch rum.

Thomas: Okay, das ist doch kaputt. Oh, ja, also man hat ja früher für sowas auch gerne mal einen Pixie-Boot genommen, also PXE, aus dem Netzwerk booten, irgendwo einen Server bereitstellen, der muss natürlich dann auch, boah, das ist lange her, ich glaube, der muss, könnte im Addon liegen, ich glaube, der DHCP muss gewisse Optionen gesetzt haben, damit der Pixie-Boot greift, damit der connectet, das könnte eine Hürde sein.

Andrej: Ich habe auch einen Mechanismus, wo man einfach einen USB-Stick hinzufügen kann und der die gleiche Datei im Endeffekt reinlegen kann.

Andrej: Also USB-Stick oder direkt auf die FAT-Partition des geflashten Devices.

Andrej: Dann ist mir eingefallen, ich will das auf meinem Microsoft Surface testen und du kannst ja die SSD gar nicht ausbauen.

Andrej: Ist ja geklebt. Das ist ja voll doof.

Andrej: Und jetzt bin ich, dann dachte ich, ja gut,

Andrej: vielleicht gibt es ja mehr so Geräte, die sowas haben.

Andrej: Jetzt bin ich dabei, ein zweiter Art Image

Andrej: zu machen, wo ein Installer dabei ist.

Andrej: Und der könnte ja natürlich auch im Add-on liegen.

Andrej: Aber macht der nicht der ACP?

Andrej: Naja. Und Pixieboot kann

Thomas: Und Pixiboot? Ja, Client-Hardware vielleicht nicht, das könnte sein, ja.

Andrej: nicht jede Hardware. Musst du auch

Andrej: im BIOS konfigurieren. Ich glaube, das ist zu komplex.

Thomas: Dann bist du dann wahrscheinlich doch wieder auf so ein Medium angewiesen, was du reinsteckst, ne, um davon mal zu booten.

Andrej: Es gibt wohl, wir haben ja vorhin über

Andrej: Disko geredet, es gibt wohl auch

Andrej: ein Kommandozeilen

Andrej: oder so ein ncurses oder so klein.

Andrej: Ich habe es noch nicht probiert, wo du halt auch so einen Installer machen kannst.

Andrej: Dann kann ich ja diesen Installer, kann ich ja flashen auf USB.

Andrej: Vielleicht lege ich da auch direkt die Datei mit rein.

Andrej: Du flashst und dann erzeugst du die Datei.

Andrej: Und dann liest der Installer einfach direkt davon und macht dann einfach rüttel, rüttel, fertig ist.

Andrej: Hat den Vorteil, falls du keinen SATAC.

Andrej: Ich hatte zum Beispiel, ich habe hier so einen Odroid mit einer eMMC.

Andrej: Dann habe ich mir blinderweise einen eMMC-Adapter bei Amazon geklickt für 5 Mark.

Andrej: Ja, es gibt mehrere eMMC-Standards.

Andrej: Es gibt MMCs mit zwei PIN-Leisten und es gibt einen mit einer.

Thomas: Was?

Thomas: Muss mal gucken, was ich hier habe. Das müsste ich jetzt suchen.

Andrej: Das wusste ich nicht.

Andrej: Jetzt musste ich mir einen richtig teuren von Hardkernel kaufen,

Andrej: weil ich habe nur den gefunden.

Andrej: Der hat mich 20 Euro gekostet plus Versand.

Andrej: Und den Schmerz, dachte ich mir,

Andrej: spare ich den Usern vielleicht einfach mal.

Thomas: Ich habe eigentlich auch nur eine EMMC-Karte im Einsatz jemals gehabt und das war so ein Odroid.

Andrej: Blue, ja, der Home Assistant Blue.

Thomas: Ah, dann sind es zwei. Ne, ich hatte noch vorher einen C2 oder sowas hieß das Ding, glaube ich.

Andrej: Ah, okay.

Andrej: Ah ja, der war auch sehr bekannt.

Thomas: Das war auch so eine ARM-Plattform.

Thomas: War ganz cool.

Thomas: Früher mal Kodi drauflaufen lassen.

Thomas: Vor langer Zeit.

Thomas: Und genau, damit man eher mit dem C schreiben konnte,

Thomas: musstest du dieses kleine Ding auf den Adapter aufklipsen.

Thomas: Den konntest du dann per...

Thomas: Was war es?

Andrej: USB.

Thomas: Ich glaube, bei mir war es SD-Karte oder so.

Andrej: Ah ja, das gibt es auch, ja.

Thomas: Das war dann so ein SD-Adapter.

Thomas: Reinstöpseln.

Thomas: Und okay, den habe ich mir wahrscheinlich damals zusammen

Thomas: mit dem Odroid-Ding bei Reichelt oder so geklickt.

Andrej: Aber es wäre doch cool, wenn du das nicht brauchst,

Andrej: dass du dir nicht extra Hafe holen musst.

Thomas: Ja, ja, absolut.

Thomas: Absolut.

Andrej: Und deswegen bin ich halt dann in diese Richtung gegangen.

Andrej: Genau, jetzt heißt es, mein Plan ist aktuell.

Andrej: Erst mal, wenn wir d'accord werden,

Andrej: wenn ich diese Verschlüsselung mache mit Tang

Thomas: Ist natürlich auch die Frage...

Andrej: und Clevis,

Andrej: dann ist der Server halt Voraussetzung.

Andrej: Ohne geht's nicht.

Thomas: Und also jetzt mal von der Provisionierung abgesehen, weil du vorhin auch anbrachtest, was ist, wenn das Ding geklaut wird, WLAN, Schlüssel und so weiter. Was sind die Anforderungen von einem normalen Endverbraucher? Ich nehme mal an, der wird sich da nicht viele Gedanken machen, wenn das Ding irgendwo in der Wand gehangen wird oder sogar vielleicht in die Wand oder Plan installiert wird.

Andrej: Ja, möglicherweise.

Thomas: Wenn jemand einbricht, hat er wahrscheinlich interessantere Ziele. Aber wenn du natürlich denkst, ja, das könnte auch irgendwo in einem Betrieb eingesetzt werden, als Dashboard irgendwo an der Wand, ja, sowas, da will man die Zugangsdaten natürlich nicht zugänglich haben.

Andrej: Kein X-Integratoren, ne?

Thomas: Vor allem, weil die ja eben, es kann jetzt ein Home Assistant sein, es kann aber auch sein, dass du irgendwie Zugriff auf irgendeinen, keine Ahnung, mir fällt auch so das Stichwort NOC ein, also Network Operation Center, je nach Unternehmen, wenn du halt Netzwerke hast, die in einem Raum sitzen, hast du üblicherweise Latte an Paneelen irgendwo, wo die unterschiedlichsten Dashboards gezeigt werden und diese Dashboards, die sind vielleicht schon etwas unternehmenskritischer, sicherheitskritischer.

Andrej: Ja.

Andrej: Ja, und was ich, ich mache ja nicht nur Home Assistant.

Andrej: Du kannst ja, vielen Dank,

Andrej: jetzt klingelt es viermal, um dann fünfmal zu klingeln.

Andrej: Ich mache mal das Fenster zu.

Andrej: Du kannst ja nicht nur das Home-Assistant-Dashboard bei mir anzeigen,

Andrej: sondern per MQTT kannst du aktuell bis zu zehn Seiten,

Thomas: Kalender von Google ist auch schon wieder so ein Kandidat, ne?

Andrej: also irgendwelche URL-Seiten festlegen.

Andrej: Du kannst deinen Grafana anzeigen,

Andrej: du kannst deinen Stundenplan anzeigen,

Andrej: deinen Kalender von Google, whatever.

Andrej: Du musst dich da einloggen.

Andrej: Das kann ich nicht übernehmen,

Andrej: aber das liegt ja potenziell.

Thomas: Gibt es bestimmt Lese-Read-Only-Zugriff, aber trotzdem.

Andrej: Ja, das stimmt, das kannst du mit einer URL machen,

Andrej: Aber potenziell hast du da Logins drauf, die du vielleicht nicht einfach geklaut haben wollen würdest.

Andrej: Wenn einer das jetzt zu Hause bootet und dann, ja, hast du halt da ein Login drauf.

Andrej: Deswegen wäre es vielleicht sinnvoll, die Home-Partition, also es muss nicht das ganze Root verschlüsselt sein,

Andrej: aber zumindest die Home-Partition und vielleicht auch der Part, wo dann die Keys drauf liegen.

Andrej: Wahrscheinlich dann im Home, aber...

Thomas: Ja, okay, sehe ich.

Andrej: Oder zwei Versionen, eine unverschlüsselt, eine verschlüsselt.

Andrej: Das ist das Coole mit Nix, du kannst Module bauen, weil es ja eine Programmiersprache ist.

Andrej: Und den Raspberry Pi Teil, da habe ich nicht so viel geändert, muss ich sagen.

Thomas: Ja, du kannst es templaten, ne?

Thomas: Dachte ich mir jetzt auch gerade.

Andrej: Ja, ich habe den gesamten Teil, der das Dashboard macht,

Andrej: das so Essence, den Chromium-Kram, das konnte ich ja einfach so lassen.

Andrej: Dann habe ich das so umgebaut mit Imports und so,

Andrej: dass ich nur, anstatt Systemd-Boot, Raspberry Pi,

Andrej: habe ich dann U-Boot genommen als Bootloader, weil der supported ist.

Andrej: Und was muss ich noch machen?

Andrej: Ja, das war es im Endeffekt.

Andrej: Ich glaube, der U-Boot, Bootloader.

Andrej: Ah, und ein bisschen anderen Kernel.

Andrej: Ein paar Sachen beim Kernel ausmachen,

Andrej: weil es gab Probleme mit dem Unstable-Branch,

Andrej: den ich aktuell benutze.

Andrej: Musste ich ein paar Kernel-Module ignorieren,

Andrej: solche Sachen, damit der überhaupt baut,

Thomas: Du baust, also du kannst dann direkt ein Installationsmedium bauen,

Andrej: weil irgendwie wurden die verlangt,

Andrej: obwohl die gar nicht hart verlangt werden von Raspberry Pi.

Andrej: Da gab es einen Bug.

Andrej: Das kann man schon machen.

Andrej: Und so ein Live-Installer war auch nur ein Modul.

Andrej: Wiederschreiben, nimmst die gleichen Sachen

Andrej: und das muss ich jetzt noch testen.

Andrej: Noch nicht getestet, noch nicht live gebootet, nur gebaut.

Thomas: was auch schon, wo schon alles drin ist.

Andrej: Genau.

Thomas: Also du kannst quasi eine Nix-Konfiguration nehmen,

Thomas: bauen lassen und es purzelt ein Image raus,

Thomas: was du dann auf eine Platte schreiben kannst

Thomas: Und dann ist dein System einsatzbereit. Es kann starten, es hat alles drin. Ja, ich denke mir auch gerade, bei klassischen Linux-Distributionen waren das alles isolierte Probleme, die du gelöst hast. Bei Docker-Containern hattest du dein Docker-File, das hat nicht deklarativ, aber, oder halb deklarativ, halb imperativ, hat das halt Docker-Container erstellt.

Andrej: In der Flake-Datei definiere ich mehrere, ich nenne es jetzt mal Ziele.

Andrej: Ich nenne x86-Image oder ISO.

Andrej: Dann führe ich den Befehl aus und er baut das ISO.

Andrej: Kann ich aber auch genauso gut x86-Live-Installer.

Andrej: Dann muss ich nur die Pakete dementsprechend und die Dateien, die das beeinflussen, anpassen und die richtigen Module laden.

Andrej: Das ist halt eine fette Programmiersprache im Endeffekt.

Andrej: Ja, komplett.

Thomas: Installern für das Linux selber gab es

Thomas: ja auch unattended Installer, die das

Thomas: irgendwie gemacht haben. Aber das ist dann schon wieder was

Thomas: distributionsspezifisches und was genau

Thomas: diesen einen Use Case bedient, nämlich

Thomas: installieren. Nichts

Thomas: generisches. Das klingt so, als

Thomas: wenn Nix eben eine Sprache

Thomas: wäre, mit der man generisch

Thomas: sowas abbilden kann. Die muss

Thomas: natürlich in der Übersetzung, gibt's

Thomas: natürlich dann immer Schichten, die

Thomas: genau das Spezielle machen, nämlich zum Beispiel

Thomas: installieren von auf

Andrej: Im Build-Prozess zumindest.

Thomas: einem Medium oder sonst was oder erstellen

Thomas: von einem OCI-Image.

Thomas: Haha, spannend. Und damit ist

Thomas: natürlich auch interessant, dass du eben

Thomas: gewisse Dinge konditionell machen

Thomas: kannst. Sagen kannst, okay, wenn das jetzt

Thomas: diese Plattform ist, genau.

Andrej: In der Theorie, ja. Aber du brauchst es gar nicht.

Thomas: Also ob das jetzt im einfachsten Fall

Thomas: selbst, könntest du es selbst mit einem Template

Thomas: machen. Selbst wenn die Sprache keine

Thomas: Konditionen vorsehen würde, sowas wie, wenn der

Thomas: Wert x ist, dann mach das, wenn y dann das.

Thomas: Oder nur das setzen, wenn x.

Thomas: Dann könntest du ja trotzdem das

Thomas: Nix-File templaten.

Thomas: Rendern und dann brauchst du gar nicht.

Thomas: Noch besser.

Andrej: Du könntest theoretisch auch sagen,

Andrej: ich nehme jetzt das, was ich gebaut

Andrej: habe und dann mache ich eine Enterprise-Version,

Andrej: packe die in einen privaten Repo,

Andrej: importiere alles, was ich habe und packe

Andrej: darauf meine Enterprise-Sachen. Whatever.

Andrej: Das geht. Weil das ist nur ein

Andrej: Import. Das ist halt nur ein Import.

Andrej: So wie jede andere

Andrej: Programmiersprache, die stdlib,

Andrej: stdin, die Standard Library,

Andrej: stdlib importiert und

Andrej: dann eine andere und diese und

Andrej: Das funktioniert halt so, das ist total crazy.

Thomas: Ich bin gerade gedanklich zurück bei dem Schritt, wo du meintest, wie mache ich das mit dem Login?

Andrej: Das ist auch einer der Gründe,

Andrej: warum ich jetzt nichts so erst genommen habe.

Andrej: Ich wusste gar nicht, dass das was kann.

Andrej: Das habe ich erst jetzt gelernt über das Machen.

Andrej: Aber weil ich das für den Desktop gemacht habe,

Andrej: dachte ich, komm, probiere ich es mal aus.

Andrej: Was kriege ich mir denn da so hin?

Thomas: Es ist natürlich total gut, das für Home Assistant möglichst einfach zu machen und im Idealfall komplett durchzuautomatisieren.

Thomas: Erster Gedanke, der aufkam, ist, wird man nicht hin und wieder doch noch ausgeloggt bei Home Assistant?

Thomas: Bin mir nicht sicher, ehrlich gesagt.

Thomas: Ich glaube, meine Sessions halten nahezu ewig.

Andrej: Der Long-Lived-Token hält für 10 Jahre.

Thomas: Okay, gut, das ist kein Problem.

Thomas: Aber was dir natürlich passieren kann,

Thomas: ist, dass wenn jemand da eine Google-Kalender-Seite oder sowas,

Thomas: also irgendwas, wo ein Kalender angezeigt wird,

Andrej: Ich habe überlegt,

Thomas: dass man sich da initial einmal einloggen muss.

Thomas: Hast du da schon was vorgesehen?

Thomas: Irgendwie so ein Remote-Desktop oder sowas?

Andrej: ob ich VNC enablen kann.

Thomas: Ja.

Andrej: Also ich würde VNC jetzt nicht laufen lassen,

Andrej: durchgehen, sondern einfach zum Beispiel

Andrej: ich würde das mit installieren.

Andrej: Das ist eine Überlegung.

Andrej: installiere es mit, Default ist aus,

Thomas: Hm.

Andrej: du kannst aber über eine Home Assistant-Entität

Andrej: oder über MQTT, das

Andrej: steht ja noch aus, kannst es einmal

Thomas: Ja.

Andrej: enablen, wenn die Laufzeit

Andrej: und dann dich vielleicht mit VNC drauf connecten, machst

Andrej: sie eben klick, klick und dann

Andrej: das war eine Überlegung wert.

Andrej: Was natürlich auch geht, aber das möchte

Andrej: ich nicht, das mache ich nur bei der Entwicklung,

Andrej: du kannst Chrome im Development-Modus starten,

Andrej: dann öffnet der ein Port und du machst

Andrej: einen SSH-Tunnel dahin, das mache ich aktuell

Andrej: so, aber das ist nichts Gutes

Andrej: für die Produktion in meinen Augen.

Andrej: Für den Nerd zu Hause, okay.

Thomas: Was brauchst du denn auf Client-Seite,

Thomas: um dann auf den Browser quasi zuzugreifen?

Andrej: Du brauchst halt den Key auf dem Image.

Thomas: Was ist denn das?

Andrej: Das kann ich ja nicht machen.

Thomas: Nee, ich meine, wenn du den Chrome im Developer-Mode laufen lässt

Thomas: und der macht einen Port auf,

Thomas: dann musst du ihn ja, du willst ihn ja fernsteuern, ne?

Thomas: Womit machst du das?

Andrej: Ja, danke.

Thomas: Also auf der Seite von, du bist am Rechner.

Andrej: Ach so, Localhost und dann den Port.

Thomas: Was machst du, um den dann fernzusteuern?

Thomas: Was nutzt du für eine App?

Thomas: Ist das auch Chrome?

Thomas: Ja, aber was für ein Protokoll?

Andrej: Der öffnet einfach nur...

Andrej: Also du, ich habe den Chrome-Developer-Port auf,

Andrej: auf 8000, was auch immer.

Thomas: Ja.

Andrej: Dann mache ich ihn...

Andrej: Und Chrome erlaubt dir,

Andrej: zumindest habe ich es so konfiguriert,

Andrej: auf Localhost darfst du zugreifen, nicht von außen.

Thomas: Ja.

Andrej: Deswegen habe ich den SSH-Tunnel,

Thomas: Ja.

Andrej: um dann halt in meinem Browser, auf meinem Rechner,

Thomas: Ach, in deinem Browser.

Andrej: den Chrome zu steuern.

Andrej: Also nicht den Chrome, sondern die Webseite,

Andrej: die ich gerade, ja.

Thomas: Okay, das heißt, Chrome kann quasi als Client für ein Development Chrome fungieren.

Andrej: Nee, das nicht. Ich kann halt nur die Chrome-Seite,

Andrej: die Developer-Docs,

Andrej: die Developer-Seite halt öffnen.

Thomas: Ach so, das ist einfach nur eine Webseite dann?

Andrej: Dort läuft halt meine Applikation

Andrej: gerade drauf. Ja. Nee, das

Thomas: Die öffnest du?

Thomas: Und, ah, okay, okay.

Thomas: Jetzt, so langsam.

Thomas: Ja, dann löst das vielleicht das Problem nicht komplett, ne?

Thomas: Weil du müsstest ja den Browser steuern können, um sich irgendwo einzuloggen.

Andrej: löst es nicht. Vielleicht geht das auch. Das kann ich

Thomas: Also so VNC, RDP, ja, gibt genug Clients, auch Leichtgewichtige, teilweise aber auch Klobige, also die, ich habe kürzlich wieder auf ein Linux-System zugreifen müssen, Remote und ich glaube, ich hatte damals die Wahl zwischen VNC und RDP zu konfigurieren auf einem GNOME und irgendwas war mit VNC, entweder ging es aus Gründen nicht mehr oder es war irgendwie eingeschränkt, Protokoll, irgendwas, ich weiß es nicht mehr, ist schon ein paar Jahre her, ich weiß nur, ich musste dann irgendwie auf RDP wechseln.

Andrej: auch mal gucken. Ja, von C ist halt

Andrej: meh, aber funktioniert halt für so einen Use Case

Andrej: okay, ne? Ja, aber die gibt es ja für alle

Andrej: Systeme. Das ist schon mal easy. Und dann

Andrej: da kommt jeder, glaube ich, mir klar, mal eben was einzutippen.

Andrej: Und ich glaube, die meisten können auch Copy-Paste.

Andrej: Da musst du halt nicht.

Thomas: Wenn du vom Mac aus RDP reden willst, das ist ja integriert in eine Mac-App, aber aus Gründen funktioniert das irgendwie nie.

Thomas: Du musst dann, Microsoft hat es ja wirklich Windows-App genannt, also du musst dir die Windows-App installieren und das ist nichts weiter als ein Remote-Desktop-Client.

Andrej: Ernsthaft?

Andrej: Ach nee.

Thomas: Wie kommt man auf die Idee? Google da mal nach Problemen, das ist so ein bisschen wie nach Nix-Language irgendwas googeln oder so.

Andrej: Ja genau, jetzt bin ich im Designprozess

Thomas: Ja, gut, aber lass uns nicht zu viel über Windows reden, da kriege ich wieder Gänsehaut.

Thomas: Negativ.

Andrej: und überlege, soll ich einfach eine

Andrej: unverschlüsselte und verschlüsselte Version anbieten?

Thomas: Man kann ja immer erstmal klein anfangen und unverschlüsselt.

Andrej: Ich finde, das Problem ist, Migration geht halt dann nicht.

Thomas: Das finde ich ja so für den allerersten Schritt, um mal was zu haben, was man schon mal shippen kann, ist ja schon mal viel wert.

Andrej: Du kommst nicht drum rum.

Thomas: Nö, das stimmt.

Thomas: Also wenn du wirklich ein Use Case hast, wo du verschlüsselt brauchst, dann musst du halt from scratch starten.

Thomas: Aber was heißt from scratch zu starten?

Andrej: Also für mich ist das keine Arbeit, aber

Thomas: Das ist ja am Ende alles irgendwie deklarativ, ne?

Andrej: du musst halt dann dein Tablet

Andrej: von der Wand nehmen im Notfall.

Thomas: Hm, das stimmt wohl.

Andrej: Du musst das flashen.

Andrej: Aber das ist auch easy. Download, Flash,

Andrej: Textdatei für den Token, fertig.

Andrej: Und in Theorie bräuchst du die Textdatei

Andrej: dann gar nicht mehr, wenn du VNC enablest. Doch,

Andrej: brauchst du, weil du kannst ja nicht VNC enablen

Andrej: oder ich lasse es enabled

Andrej: beim ersten Boot für x Minuten

Andrej: oder sowas. Also ein VNC

Andrej: oder RDP aufzulassen, ist halt nicht so geil eigentlich.

Andrej: Und den kann man

Andrej: beim ersten Boot vielleicht enablen, dass er dann startet,

Andrej: aber beim zweiten kannst du

Thomas: Oder so lange, bis der irgendwie mit einem MQTT konfiguriert wurde

Andrej: ihn dann halt, ja.

Thomas: oder mit einem Home Assistant direkt sich verbunden hat,

Thomas: bis du dann einmal das Signal hast, alles klar.

Thomas: Da ist eine Verbindung.

Thomas: Ab da kann es gesteuert werden per Flag.

Thomas: Das finde ich eine super Idee.

Andrej: Das auf jeden Fall, das baue ich. Ja, das ist

Thomas: VNC on off per Flag zu setzen, um darauf zugreifen zu können, ist total gut.

Andrej: auch nicht schwer. Und der andere,

Andrej: die Home-Assistant-Integration hat natürlich auch den

Andrej: Vorteil, muss ich halt über HACS machen,

Andrej: weil ich keinen Bock auf das Release von Home Assistant habe.

Andrej: Und wer weiß, ob die das mergen.

Andrej: Du hast halt den Config-Flow.

Andrej: Du flashst es

Andrej: und dann meldet sich das Gerät

Andrej: ja einfach an. Und du musst nichts mit

Andrej: Token und so machen. Du musst halt höchstens WiFi

Andrej: konfigurieren. Und WiFi kann man

Andrej: immer noch, das habe ich auch schon ausprobiert, das funktioniert.

Andrej: Dieses, hey, hier ist so ein

Andrej: wie heißt das, so ein Direct-Connect-WiFi,

Andrej: dann connectst du dich eben, machst nur eben das

Andrej: Improv Wi-Fi, tippst eben

Andrej: die SSID und das Passwort ein

Andrej: und dann startet es neu und geht dann

Andrej: in dein WiFi rein. Das typische von

Andrej: smarteren Geräten halt. Kann man auch mit

Andrej: so einem Dashboard machen. Das kennt halt jeder eigentlich

Thomas: Ja, genau, das kennt jeder.

Andrej: heutzutage, ne? Wi-Fi Improv heißt

Thomas: So ein Gedanke kam mir auch auf.

Andrej: das, glaube ich. Ja, ich denke, wenn du so

Thomas: Es ist halt die Frage, ob du das mit allen Devices machen könntest.

Thomas: Weil jetzt so ein Pi, es ist ein nerviger Prozess.

Andrej: wenn du eins machst, fair,

Andrej: wenn du aber mehrere Devices, dann hast du

Andrej: keinen Bock da jedes Mal zu scannen und zu tun.

Andrej: Keine Ahnung, wie viel. Ja, auch die Frage.

Thomas: Ich würde lieber einen Stick reinstecken, das Ding soll sich irgendwie provisionieren

Thomas: und sagen, ich bin erreichbar unter XY und ich halte, ich mache dann irgendwas an und

Thomas: gehe dann so drauf.

Thomas: Das wäre mir lieber persönlich.

Thomas: Und nicht jedes Device hat vielleicht Wi-Fi.

Thomas: Also, du hast vorhin von einem Pi gesprochen.

Thomas: Die neuen, haben Pis mittlerweile Onboard-Wi-Fi?

Andrej: Ja, schon lange, seit dem 3er schon.

Thomas: Ja.

Andrej: Alle.

Thomas: Jetzt wurde es das?

Thomas: Jetzt muss ich drüber nachdenken.

Thomas: Haben sie das wohl?

Thomas: Okay.

Thomas: Vergiss das.

Andrej: Ja,

Thomas: Na gut.

Andrej: muss man sich schon viele Gedanken für machen, ne?

Andrej: Das ist aber, vor allem habe ich jetzt schon so viel

Andrej: programmiert mit Claude und mir zusammen, dass

Andrej: das ist geil. Du kannst halt Sachen

Andrej: probierst es aus, machst mal den Flow

Andrej: und sagst so, ist gut,

Andrej: aber geht besser. Dann musst du halt die

Thomas: Ja, das ist wirklich einer der netten Aspekte von Vibe-Coding, so grundsätzlich.

Andrej: Integration schreiben.

Andrej: Ja, zum Beispiel, was habe ich

Thomas: Du kannst Dinge mal schnell prototypen und bei manchen Entwicklern ist das ein Problem.

Thomas: Du hast auch keine emotionale Bindung, du hast keinen Invest darin sozusagen.

Thomas: Du denkst dir vielleicht nicht, ach guck mal, das ist aber so technisch so geil, was ich hier gerade gebaut habe.

Thomas: allein schon deswegen möchte ich das behalten,

Thomas: sondern es ist ein separates Thema,

Thomas: was wir vielleicht mal aufmachen können und sollen,

Thomas: aber das ist für heute ein bisschen zu viel.

Thomas: Grundsätzlich, ne, Vibe-Coding,

Thomas: also ich meine, ich hatte ja mal gesagt,

Thomas: KI-Themen, die nerven mich,

Thomas: die sind eigentlich überall omnipräsent,

Thomas: aber auf der anderen Seite,

Thomas: gerade wird das wieder so thematisiert,

Thomas: zum Beispiel, dass eben Flathub jetzt eine neue Policy hat

Thomas: und im Grunde alle AI-Contributions,

Thomas: also auch wenn du nur AI benutzt hast als Assistent für Software,

Thomas: dass das denied, also nicht erlaubt wird.

Thomas: Und es sei denn, das Projekt ist schon irgendwie ein etabliertes Projekt,

Thomas: ich weiß nicht, wie genau sie es formuliert haben,

Thomas: aber sowas wie ein Firefox, der halt auch teils mit KI entwickelt wird,

Thomas: da ist es okay.

Thomas: Guck dir Ghostty an zum Beispiel von Hashimoto Mitchell,

Thomas: Mitchell Hashimoto, so rum, ist halt auch mit KI,

Thomas: also vieles wird halt mit KI entwickelt und finde ich,

Thomas: aber wie gesagt, anderes Thema. Wir sollten uns vielleicht mal

Thomas: unterhalten, was denkst du darüber

Thomas: und blablabla. Lass uns das beim nächsten Mal

Thomas: vielleicht aufmachen.

Thomas: Genau. Und du kannst auf jeden Fall mit den

Thomas: Tools natürlich ziemlich einfach

Thomas: Dinge testen, prototypen, validieren.

Thomas: Auch in die Reife

Thomas: treiben. Also

Thomas: im Fall

Andrej: jetzt rausgefunden? Das war für das Dashboard, also für mein

Andrej: NixOS Desktop interessant.

Andrej: Ich habe gesehen, dass

Andrej: in KDE kannst du eine Helligkeit ändern

Andrej: vom Bildschirm. Super praktisch.

Andrej: Und ich habe das geändert.

Andrej: Beim Bildschirm ging hoch und runter von der Helligkeit.

Andrej: Dann habe ich das Onscreen-Display

Andrej: absolut durch Zufall einfach mal geöffnet und wollte

Andrej: irgendwas nachgucken oder so. Ach, HDMI

Andrej: wollte ich wechseln, bin ins falsche Menü gegangen. Da sehe ich

Andrej: Brightness ist 44%. Ich so, hä?

Andrej: Ich hatte die doch auf 100,

Andrej: weil es war super sonnig hier in dem Raum.

Andrej: Kurz mal recherchiert. Ja, das

Andrej: NixOS Desktop-Version hat

Andrej: im Default fehlendem Dinge

Andrej: um mit diesem

Andrej: DDC-Util, ist das glaube ich,

Andrej: DDC-CI oder so heißt das Protokoll,

Andrej: mit dem Display zu sprechen. Und das heißt,

Andrej: der MG fällt dann weg auf Software,

Andrej: Gamma-basiertes Hoch- und Runtermachen

Andrej: der Helligkeit. Kurz installiert,

Andrej: Claude gefragt, kurz installiert,

Andrej: fünf Zeilen später lief alles perfekt.

Andrej: Und das brauchte ich fürs Dashboard

Andrej: als auch für den Desktop.

Andrej: Und dann kannst du das da durchgucken und du

Andrej: verstehst halt exakt, was das System macht.

Andrej: Es fehlt ein I2C-

Andrej: Paket irgendwie so. Du musst

Andrej: in einer bestimmten Gruppe sein. Das war super deklarativ

Andrej: und voll cool.

Andrej: Jetzt hätte ich es verstanden.

Andrej: Das merke ich mir jetzt auch, weil das hat ein echtes Problem

Andrej: von mich gelöst hat. Und das

Andrej: selber rauszufinden, weil das, das wirst du

Andrej: meistens gar nicht, weil entweder das ist drin oder du merkst es nicht.

Thomas: hartes Googeln,

Thomas: irgendwelche Community-Foren oder so

Andrej: Boah. Jetzt habe ich auf jeden Fall

Thomas: durchgucken und überhaupt, bis du es irgendwann hast.

Thomas: Ja, ja.

Thomas: Ja, ja. Großes,

Andrej: viele, viele Abende mit

Thomas: Große Dose. Interessant, das wusste

Andrej: Claude verbracht und

Andrej: habe jetzt Features von dem Ding.

Andrej: Flashen für Raspberry Pi als auch

Andrej: x86 mit hier Seed-File.

Andrej: Dann Dark-Mode kann ich enablen.

Andrej: Fun Fact, wenn du den

Andrej: Dark-Mode enablest für den User,

Andrej: wird das auf allen Geräten, wo der User ist,

Andrej: enabelt. Auch auf deinem Handy.

Andrej: Wusste ich gar nicht. Deswegen schon

Thomas: ich auch nicht. Aber ich wusste es

Andrej: Ich glaube, ich nutze auch das Theme

Thomas: tatsächlich beim Theme. Also

Thomas: es liegt schon nah. So ist es

Thomas: nicht.

Andrej: und da ein bisschen CSS, um das halt

Andrej: umzutütteln. Kann sein, dass es das

Andrej: gleiche ist, der gleiche Mechanismus.

Andrej: Dann konnte ich dann ausprobieren, kann ich

Andrej: das Display an- und ausschalten, cool, funktioniert.

Andrej: Kann ich das Display per Touch auch wieder wecken?

Andrej: Musste ich auch wieder was

Andrej: konfigurieren, dass das geht?

Andrej: Dann diese Geschichte, mit welchen Seiten

Andrej: ich konfigurieren kann, URLs,

Andrej: dann kann ich die weiterklicken

Andrej: im MQTT, also über Home Assistant,

Andrej: aber auch am Display selber. Da habe ich dann so eine

Andrej: kleine Taskbar gemacht. Reboot

Andrej: kann ich steuern. Shutdown kann ich

Andrej: steuern. System-Update habe ich auch

Andrej: schon ausprobiert. Ich habe mal ein Paket released und dann wieder

Andrej: gelöscht, um zu gucken, ob das Update poppt.

Thomas: Moment, ob das Update poppt? Ob

Andrej: Das funktioniert auch gut. Dann ein cooles Feature.

Andrej: Screenshot machen von dem

Andrej: aktuellen Bildschirm, einfach um zu gucken, was da drauf ist.

Thomas: sich das dann in Home Assistant sogar meldet

Andrej: Yeah, natürlich.

Thomas: mit Update? Oh nein, wie geil.

Andrej: Das ist ja der Clou. Ich will nicht,

Andrej: dass du da per SSH drauf gehst und irgendwie was

Andrej: installierst oder so. Einfach Appliance.

Thomas: Was ist denn das für eine Schnittstelle?

Thomas: Lass uns mal da ein bisschen eintauchen.

Thomas: Wie wird das? Nutzen ja auch viele.

Andrej: Das ist eine

Andrej: offizielle

Andrej: wie heißt das?

Andrej: Wahrscheinlich eine offizielle API von Home Assistant, die dann

Andrej: über MQTT halt angesprochen wird.

Andrej: Genau, das ist genau die gleiche.

Thomas: Ich meine, alles mögliche ist

Thomas: da ja schon drin. Selbst, keine Ahnung,

Thomas: hier, Matter-Geräte und weiß ich nicht was

Thomas: alles. Okay, das heißt, du hast

Andrej: Auch ESPHome nutzt exakt die gleiche.

Andrej: Update-Entity heißt das Ding einfach.

Thomas: dann einfach, okay.

Thomas: Aber wie hast du es jetzt

Thomas: exposed? Wie hast du es angeschlossen da dran?

Andrej: Genau, MQTT,

Thomas: Läuft das über deine MQTT-Anbindung,

Thomas: die du ja momentan schon hast?

Andrej: ich habe einen Ghost, einen Go-Daemon

Andrej: laufen, der macht die ganze

Andrej: Konfiguration und so und

Andrej: der nimmt die Sachen entgegen.

Andrej: So, wenn ich einen Reboot mache, dann

Andrej: geht er aufs OS runter und macht die Befehle.

Andrej: Und genau das gleiche mache ich mit der Update-Entity.

Andrej: Die Update-Entity hat ein bisschen Go-Code, die guckt

Andrej: nach einem GitHub-Release und

Andrej: guckt dann, existiert das?

Andrej: lädt dann auch das Changelog und alles

Andrej: runter. Da sind so Felder drin für die

Andrej: Update-Entity, die du ausfüllen kannst

Andrej: für das, was angezeigt wird in dem kleinen

Andrej: Fenster. Und dann kannst du Update drücken

Andrej: und dann passiert genau das, was du machen möchtest.

Andrej: Und wenn ich dann Update drücke, kann ich halt wieder

Andrej: den Go-Daemon benutzen, um

Andrej: Nix, OS, Rebuild, Switch, was auch immer

Andrej: irgendwelche Commandos zu zeigen,

Andrej: zu machen. Ja, das ist eigentlich

Thomas: Ja, ich hätte jetzt nicht gedacht,

Andrej: ziemlich geil von Home Assistant, dass die das alles

Andrej: so integriert haben, dass es so seamless ist,

Andrej: muss ich echt sagen. Das ist schon lange so.

Thomas: dass du das, also die haben das jetzt wirklich

Thomas: in dem, es gibt ja diese,

Thomas: dieses MQTT

Thomas: mittlerweile de facto Standard.

Thomas: Der ist ja eigentlich, das ist ja

Thomas: homisch, das ist nicht spezifisch, aber mittlerweile haben sich ja

Thomas: sehr viele Leute für Unternehmen

Andrej: Diese Discovery. Alles drin.

Thomas: angedingen und die machen genau diese Discovery.

Thomas: Und das ist Teil von der Discovery schon,

Thomas: von der Spezifikation? Mega.

Andrej: Ich weiß nicht, ob es der Discovery-Part ist.

Andrej: Müsste aber sein, weil die Discovery,

Thomas: Sonst müsstest du ja auf Home Assistant Seite

Thomas: irgendwas haben, was das interpretiert,

Andrej: das ist eine gute Frage, das kann ich dir gar nicht mal nennen.

Thomas: was geliefert wird und die Update

Thomas: Entity triggert, ne? Mega.

Andrej: Also es gibt eine Update-Entity definitiv,

Andrej: die auch mehrere Sachen kann.

Andrej: Install, Progress, Backup und so weiter.

Andrej: Release Notes, Release URL

Andrej: und zeigt dir auch die Percentage an, wie lange das dauert.

Andrej: Und dieser MQTT-Mechanismus funktioniert ja über das Topic.

Andrej: Wenn du das Home Assistant,

Andrej: ich glaube Home-Assistant ist, glaube ich, das Standard-Topic.

Andrej: Wenn du das hast,

Andrej: dann und diese bestimmten Entitäten in Home Assistant replizierst,

Andrej: Also die Felder ausfüllt, Licht, Display, Button, whatever, oder auch Update-Entity, dann werden die im Endeffekt zu den Entitäten gemerkt, die Home Assistant schon hat. Also, ja, es ist nur die spezifische MQTT-Implementierung. Genau, das heißt, man macht einfach nur das nach, was in der API spezifiziert ist im Endeffekt.

Thomas: Ja stimmt, du kannst ja dynamisch

Thomas: über dieses

Thomas: Discovery, über das Protokoll

Thomas: kannst du ja Entitäten definieren. Und wahrscheinlich

Thomas: kannst du dann einfach eine Update Entität

Thomas: definieren an der Stelle. Und dann

Thomas: setzt du einfach den Status der Entität auf

Thomas: updatable oder was weiß ich was.

Thomas: Ah, okay. Nicht drüber nachgedacht.

Thomas: Aber mega gut, weil das ist halt so ein wertvoller Mechanismus, die Updates zentral angezeigt zu bekommen.

Andrej: Und der Vorteil bei NixOS ist ja, ich habe das so konfiguriert, bei SystemD zumindest, bei Raspberry Pi mit U-Boot geht das nicht, wenn es bootet in eine neue Version und es kommt ein Kernel-Panic oder whatever und ich kann dann so einen Boot-Counter machen, nach dreimal fehlgeschlagenem Reboot bitte auf die letzte Generation wechseln, automatisch.

Thomas: Und dass das so einfach steuerbar ist am Ende.

Thomas: Ja, du hast mich auf jeden Fall auch mit dem ganzen Nix-Thema angefixt.

Andrej: Und ich denke mir so, wie geil ist das denn?

Andrej: Sieht sexy aus, kann man nicht kennen.

Thomas: Ich wollte ja Omarchy installieren, habe ich gesagt.

Thomas: Wegen Hyprland und Gedöns.

Thomas: Und aber auch wegen so ein bisschen dem Theming, was DHH da gemacht hat.

Thomas: Also das ist ja wirklich, es ist halt eine sehr tolle Experience, die er da gebaut hat.

Thomas: mit, du wechselst das Theme, es geht

Thomas: bis in die Applikationen runter und so weiter.

Thomas: Das sind ja so ein bisschen

Thomas: auch die Schwachstellen von Linux sonst.

Andrej: Das funktioniert aber auch nur mit seinen Applikationen.

Thomas: Das ist sehr

Thomas: viel. Ja, ja, natürlich.

Andrej: Also das wird schnell breaken, du.

Thomas: Ja, ist ja auch nicht alles

Thomas: rosig. Ich meine, der kommt da ja, keine Ahnung,

Thomas: mit Spotify vorinstalliert und so daher.

Thomas: Das heißt, du musst dann nach der Installation

Andrej: Ja, gucken kann man ja trotzdem mal, wie es so ist.

Thomas: erstmal aufräumen, aber

Thomas: ich bin total gespannt, aber irgendwie

Thomas: würde ich ja jetzt am liebsten irgendwas mit Nix

Thomas: machen. Mal gucken.

Thomas: Vielleicht gibt es ja auch einen Omarchy-Nix-Pendant oder so.

Thomas: Bestimmt.

Thomas: Gibt sehr viele alternative Dinge.

Thomas: Und wenn nicht, vielleicht mal Omarchy anschauen,

Thomas: kurz inspirieren lassen und dann

Thomas: vom Scratch starten. Genau.

Andrej: Eine Frage habe ich noch.

Thomas: Die Skripte sind ja auch alle verfügbar. Das heißt, du kannst ja

Thomas: im Grunde auch nachträglich alles

Thomas: dir zurecht

Thomas: schrauben.

Andrej: Da habe ich nämlich gestern drüber nachgedacht, habe noch keine Lösung für.

Andrej: Wie zum Geier kriege ich Infos, wenn mal was nicht funktioniert, aus Logs und so.

Andrej: Bei so einem geschlossenen System.

Thomas: Also wenns.

Andrej: Am liebsten würde ich die Logs auch in den RAM packen,

Thomas: Ja. Okay.

Andrej: damit die SD-Karte von Raspberry Pi und so nicht vollgeschrieben werden.

Andrej: aber das ist nebenbei. Ich kann

Thomas: Gute Frage. Lass mal überlegen.

Andrej: die natürlich auf dem Screen,

Andrej: ich nutze eine ziemlich coole

Andrej: Library Datastar, um

Andrej: das Frontend-Live-Reloading,

Andrej: also das ist halt, wie heißt das?

Andrej: Server-Side-Rendering?

Andrej: Nee, Server-Side-Rendering?

Andrej: Nee, das haben wir doch letztens.

Thomas: SSE – Server-Sent Events.

Andrej: SSE, Events, ja, Server-Sent Events, ja.

Andrej: Die Server-Side-Events sind ganz sehr

Thomas: Okay.

Andrej: push, das heißt, ich kann dem Stream auch folgen,

Andrej: aber es bringt mir nichts, wenn der User

Andrej: ein Foto von den blöden

Andrej: Logs macht oder Debugs

Andrej: oder so. Das ist ja auch kacke, ne?

Thomas: Ja. Schwierig.

Thomas: Also, das eine, was einem einfällt, ist ja, du könntest natürlich auch, keine Ahnung, einen Vector oder so installieren und Logstream, aber das Problem ist natürlich, die meisten Leute haben keinen Log-Server bei sich laufen, Loki, Victoria Metrics oder sonst was, ins Addon rein, einen Endpoint im Addon bereitstellen.

Andrej: Oh, das Add-on. Also da, wo ich meine

Andrej: potenzielle Verschlüsselung machen könnte,

Thomas: Ja, das würde ich nämlich eher sagen. Also ich fände es auch interessant, also ich finde es eine interessante Option zu sagen, ich aktiviere Log-Shipping grundsätzlich und lasse das automatisch irgendwo reinlaufen. Also das zu haben finde ich schon gut, genauso wie Metriken, irgendwie Prometheus oder so aktivieren und irgendwie konfigurierbar zu machen, dass du da rankommst, ist gut, aber das ist natürlich für Advanced-Use-Cases.

Andrej: könnte ich einfach auch ein Log-Sammeln

Andrej: machen. Kann ja auch ein On-Demand sein,

Andrej: Copy-Paste. Ja, ich habe

Thomas: Für den einfachen Fall von, irgendwas läuft nicht und ich brauche jetzt mal alle Logs vom aktuellen Boot oder von heute, das ist ja was anderes. Du hast gesagt, du hast einen Go-Daemon drauflaufen. Exposed hast du dich schon? Per Web? Ja, vielleicht auch da wieder? Togglebar oder so?

Andrej: ein Go-Daemon im Web-Server.

Andrej: Ich lasse den aktuell nur auf Local Host.

Andrej: Ich habe auch überlegt, soll ich den Exposen

Andrej: im LAN? Will ich das?

Andrej: Am Anfang hatte ich die Konfiguration

Andrej: auch theoretisch machbar über das Touchscreen. Das heißt,

Andrej: du konntest theoretisch WiFi

Andrej: und MQTT dort eintippen. Das habe ich alles wieder

Andrej: ausgebaut, weil wenn du das auf dem

Andrej: Lahnzugriff hast, dann kann halt

Andrej: irgendjemand in der Family, also das kann ja auch

Andrej: Kinder sein, kann das Ding einfach

Thomas: Genau. Du hast da ja Anwendungsfälle auch. Also du hast ja so ein Chaos-Äffchen im Haus sozusagen. Ja. Ja. Ja. Okay. Also Home Assistant als Relay ist ja eh schwierig. Also du kannst das nicht über MQTT machen, weil einfach zu viele Daten. Du willst ja nicht irgendwie den State einer Entity auf den Inhalt eines Logs setzen. Das kannst du knicken. Also das wird es nicht sein.

Andrej: glü, glü, glü, glü, man kennt das ja.

Andrej: Ich habe auch schon von vielen

Andrej: ein

Andrej: Kleinen, der die Welt

Andrej: brennen sehen möchte, genau. Oder

Andrej: wer war das denn? Oder bei YouTube

Andrej: oder so, wenn du, es gibt

Andrej: irgendjemand, der so Taster verbaut und wenn du

Andrej: die lang genug drückst, dann resetten die sich.

Andrej: Wie scheiße ist das denn?

Andrej: Sondern

Andrej: nee, das möchte ich halt verhindern.

Andrej: unabhängig von Security. Das ist einfach

Andrej: nur nervig. Auf keinen Fall. Und

Andrej: MQTT fliegt eh raus, weil

Thomas: Okay, okay. Das heißt, du brauchst irgendwas, um entweder über ein Interface, wie zum Beispiel ein Webinterface, was du auf Appseite hast, also die Integration alleine wird nicht reichen, das war mein Gedanke, weil die Integration integriert sich ja auch in Home Assistant, genau.

Andrej: anderes Thema. Ne, lass das mal

Andrej: Oxygen machen. Ne, die kann nur

Andrej: Home-Assistant-Entitäten, eine API sein

Thomas: Das heißt, du bräuchtest entweder eine App, die du laufen lässt, die ein eigenes Interface mitbringt, wo du dann vielleicht sagen kannst, hier requeste Logs von dem folgenden Device, die redet dann über was auch immer Schnittstelle mit dem Go-Daemon, der schickt, der öffnet vielleicht ein Port oder sonst was, das Ding holt sich das ab, irgendwie sowas.

Andrej: mit einem Token, ja. Also ein Add-on

Thomas: Genau, das wäre ja vielleicht ein Ansatz, aber da brauchst du auf jeden Fall noch eine App dazu, oder du? Ja, oder du könntest natürlich auch. Das Problem ist ja, was ist denn, ich meine, wann willst du debuggen, wenn vielleicht auch der Part nicht funktioniert, der Go-Daemon, ne?

Andrej: muss ich schreiben, damit es, also

Andrej: das Add-on müsste dann quasi nur für die

Andrej: Verschlüsselung sein und eventuell für

Andrej: Convenience. Genau.

Andrej: Ja. Das ist nicht doof.

Thomas: Da denke ich mir vielleicht gerade, wie wäre es denn, wenn du, also nur als Notfalllösung, weil die ist deutlich unbequemer, aber wie wäre es denn, wenn du zum Beispiel reagierst, wenn ein USB-Stick eingesteckt wird, mit einem gewissen Namen wird das Log einfach auf den Stick gedumpt und der wird danach gesynct und ejected und kannst rausziehen.

Andrej: Ich meine, ich habe den Mechanismus ja schon, indem ich diese Datei

Andrej: von dem USB-Stick nehme. Ich habe dem jetzt keinen Namen

Andrej: gegeben. Also man kann die C-Datei

Thomas: Und vielleicht könntest du sogar den Part von, der das triggert, irgendwo auf SystemD-Ebene ansiedeln, damit du halt quasi nicht die Notwendigkeit hast, dich darauf zu verlassen, dass dein Demon läuft, weil der ja eventuell das Problem ist gerade, kann ja sein.

Andrej: auf dem USB-Stick oder auf die SD-Karte

Andrej: oder auf das Speichermedium des

Andrej: Betriebssystems selber packen. Das geht beides.

Andrej: Also die Logik habe ich schon.

Andrej: Ja, das kann der udev-Rule sein.

Andrej: Das muss vielleicht sogar zweiseitig sein. Dann hast du

Thomas: Ja, genau. Damit hast du, glaube ich, alles abgedeckt. Außer vielleicht noch zusätzlich, wie gesagt, Log-Shipping im Sinne von streamen, einen Vector laufen lassen oder was auch immer. Ich meine, JournalD gibt es ja auch als, gibt es ja auch so einen Log-Shipping-Mechanismus, ich vergesse mal, wie der heißt, JournalD Remote oder sowas, aber ich hatte meine Schwierigkeiten, das ans Laufen zu kriegen.

Andrej: einmal die USB-Variante, dann kommst du halt zur Not

Andrej: noch dran, falls es nicht mehr geht.

Andrej: Und dann noch die Daemon-Variante,

Andrej: die mit dem Add-on spricht.

Andrej: Da kannst du einfach Klick machen.

Thomas: Ich glaube, du musst die Paare, du musst beide Seiten gegenseitig authentifizieren oder so.

Thomas: Das macht es ein bisschen komplex.

Andrej: Journal-DB-Mode, okay.

Thomas: Das ist mit Vector einfacher.

Thomas: Vector und Victoria Metrics oder was auch immer.

Andrej: Können wir mal recherchieren.

Thomas: Ja, wie gesagt, ich glaube, da standardmäßig zumindest musstest du die gegenseitig authentifizieren.

Andrej: Ja, einer muss auf jeden Fall akzeptieren.

Thomas: Und das war schwierig.

Thomas: Ne, Moment, wie war denn das?

Thomas: Gegenseitig bin ich mir nicht mehr sicher, aber da war eine Komplexität mit.

Thomas: Naja, es war also nicht so, dass du einfach nur einen HTTPS-Server angibst und alles funktioniert,

Andrej: Oder du musst...

Thomas: sondern du musstest irgendwas ganz Konkretes machen

Thomas: und das hatte mich für

Thomas: meinen Use Case gestört

Thomas: deswegen bin ich auf, weil es gibt halt

Thomas: auch ein, ich meine es gibt auch

Thomas: den dazugehörigen

Thomas: Input bei Victoria Metrics, das heißt

Thomas: es wäre eine Option gewesen einfach den

Thomas: Journal Deshipping Mechanismus zu verwenden, aber

Andrej: Ja, gar nicht so einfach, das Thema.

Thomas: der war irgendwie komplizierter und dann habe ich mir gedacht

Thomas: nee komm, dann mach lieber Vector

Thomas: ich erinnere mich nicht mehr an die Details

Thomas: aber das wäre natürlich die absolute

Thomas: Profilösung, Logs werden einfach

Thomas: eh immer dahin geschippt und dann

Thomas: dann ist gut. Ja, stimmt.

Andrej: Vor allem dann, wenn ich noch sage,

Andrej: die Logs liegen nur im RAM.

Andrej: Weil dann nach dem Reboot ist halt,

Andrej: der Reboot tut dann nicht mehr gut fürs Debugging.

Thomas: Ja, und auch beim RAM musst du natürlich schon wieder

Thomas: aufpassen. Also, JournalD

Thomas: lässt sich ja so konfigurieren, dass du sicherstellst,

Thomas: dass da nicht irgendwie

Thomas: der RAM vollgemüllt wird, komplett.

Andrej: Jaja, aber das System braucht nicht so viel.

Thomas: Aber du musst natürlich auch Limitierungen setzen, ne?

Thomas: Und alte Daten dann droppen, wenn er

Thomas: zu viel einnimmt.

Andrej: Also ich habe jetzt mal, das ist ein paar Tage gelaufen gelaufen,

Andrej: so 1,3 Gigabyte wegen dem Chrome halt.

Andrej: Davon weiß ich aber nicht,

Andrej: das Board hat 32 GB.

Andrej: Ich habe hier viel zu viel RAM rumliegen.

Andrej: Das sind die

Andrej: SO-DIMMs, diese Laptops-Rams.

Andrej: Ich weiß nicht, wie viel davon Cash ist und wie viel

Andrej: tatsächlich wirklich hart benötigt

Andrej: wird. Weil wenn du so viel RAM hast, dann nimmt sich das

Thomas: Zur Not kannst du noch auch nochmal, könntest du

Andrej: System natürlich auch dementsprechend viel.

Andrej: Aber mit einem 2 GB Pi sollte man

Andrej: damit klarkommen und einem 2 GB System.

Andrej: Das sieht völlig okay aus. Das geht nie höher

Andrej: als 1,7 aktuell.

Andrej: Update-Prozess noch nicht getestet.

Thomas: auch nochmal gucken, also zum einen gibt es hier noch Swap,

Thomas: so, aber das ist natürlich scheiße mit Systemen,

Andrej: Ich habe Z-RAM, also Compressed RAM.

Thomas: wo du, ja, okay, das wollte ich gerade ansprechen.

Andrej: Da muss ich vielleicht noch die Ratio erhöhen.

Thomas: Sehr gut.

Andrej: Aktuell ist die Default, glaube ich, 50%.

Andrej: Also der nimmt, wie war das nochmal?

Andrej: Wenn du 100% ein,

Andrej: wenn du sagst 100%,

Thomas: Ich habe es gestern erst gelesen tatsächlich, dass anscheinend die Prozentzahl, die du da angibst, ist der unkomprimierte Wert.

Andrej: dann nimmt er die Hälfte des RAMs.

Thomas: Das heißt, du kannst eventuell 200% angeben, wenn du halt eine Faktor-2-Kompression effektiv hinkriegst,

Thomas: dann hättest du bis zu 100%, die du effektiv belegst.

Thomas: Das ist natürlich schwierig, also ich finde das so rum zu definieren.

Andrej: Ja, das ist gar nicht so einfach, das Thema.

Thomas: Ich weiß ja nicht, wie die

Thomas: Kompressionsrate nachher ist. Das kann ich

Thomas: nicht beurteilen.

Thomas: Das war nämlich eines der Linux-Themen, die mir

Thomas: auf der, die mir irgendwie so im Hinterkopf waren.

Thomas: So von wegen wie, 32-Gig hast du

Thomas: genug RAM, so ist es nicht. Aber wie ist,

Thomas: wie wird das eigentlich unter Linux

Thomas: heutzutage gelöst, was MacOS

Thomas: ja so schön dynamisch mit

Thomas: Kompression und Unified Memory und alles so

Thomas: an Benefits gebracht hat.

Thomas: Ja, die IT-Distribution macht das natürlich anders,

Thomas: aber es gibt durchaus welche, die

Thomas: mit Z-RAM oder Z-Swap

Thomas: daherkommen.

Andrej: Ich meine, solange ich die Workload kontrolliere,

Andrej: ist das alles okay.

Andrej: Aber so ein Update kann halt auch mal

Andrej: vielleicht einen anderen Use Case haben,

Andrej: als so ein Standard-Betriebssystem,

Andrej: was einfach nur läuft und eine Webseite anzeigt.

Andrej: Und dann kommen da die Leute dazu,

Andrej: ich habe noch nicht getestet, was ein Webcam so zieht.

Andrej: Das müsste ich mal machen.

Andrej: Ich habe Gott sei Dank ja eine, eine kleine Reolink.

Thomas: Du hast ja noch ein paar Wochen Zeit, zwei oder so,

Andrej: Da haben wir viele Dinge zu tun, ne?

Andrej: Verdammt, ich dachte, ich wäre schon weit.

Thomas: bis du wieder auf Arbeit

Thomas: kommst. Oh Mann, oh Mann.

Andrej: Okay, war klar.

Thomas: Ich habe gerade meinen Browser gesehen, deswegen musste ich

Thomas: ein bisschen schmunzeln. Ich hatte ja vorhin nach

Thomas: Omarchy und NixOS

Thomas: kurzgesucht. Omnixi.

Thomas: Irgendjemand hat da was gebaut.

Thomas: Ob das nutzbar ist, man weiß das schon,

Thomas: aber lustig.

Thomas: Ja, das ist wirklich...

Andrej: Ja, ja.

Thomas: Das ist halt das Ding, wenn du ein Thema

Thomas: anfängst, isoliert

Thomas: das Problem betrachtet, ist

Thomas: Erstmal meistens gar nicht so groß.

Thomas: Aber wenn du das dann in eine Art Reife bringen möchtest, dann ändert sich das dann doch gleich.

Thomas: Für verschiedene Nutzergruppen und schön einfach und weiß ich nicht.

Andrej: Ich habe halt Bock, dass Leute das einfach flashen und nutzen.

Andrej: Ich will gar nicht wissen, wie viele Raspberry Pis und Raspberry Pi Touchscreens

Andrej: einfach nur in Schubladen rumliegen.

Andrej: Ich denke mir so, und ich verstehe das auch, warum,

Andrej: weil viele Sachen sind einfach ein bisschen Reibung.

Andrej: So wie du mit deinen Spaxschrauben.

Andrej: Jedes Mal die Spaxschrauben wegräumen, schockt halt nicht.

Andrej: Jedes Mal Linux zu installieren, User einzulegen, Passwort zu legen,

Andrej: SSH geht blablabla, das hört ja nicht auf.

Andrej: Aber wenn du sagst, ich flash einfach, genau, nix.

Thomas: Da hast du mich, weißt du?

Thomas: Genau diese Kombination.

Thomas: Irgendein kleines System läuft irgendwo in deinem Heimnetz oder sonst wo.

Thomas: Und du brauchst deinen User mit deinem SSH-Key drauf.

Thomas: Du brauchst deine Shell-Einstellung, deine Dot-Files, du brauchst gewisse Pakete einfach immer, weil htop will man halt haben oder btop. Genau. Und früher habe ich auch mal versucht, für diesen Scheiß Ansible anzufangen, aber das ist einfach nicht maintainbar.

Andrej: Sorry, vergiss es.

Thomas: Und vor allem, es ist halt, also allein schon aufgrund des Faktors, dass, wie nennt man das denn noch gleich, das mit den Zwischenschritten, das Problem, du hast halt deine Snowflakes, ne, und wenn du es anwendest auf einen bestehenden Zwischenstand, dann ist es halt nicht wie angewendet auf den Ursprungsstand.

Andrej: Nee, die sind so teuer.

Thomas: Und das ist alles eine Schweinerei.

Thomas: Und ich habe nämlich zum Beispiel im Heimkino, da ist, also ich bin in letzter Zeit mehrmals in der Situation gewesen, wo ich mir dachte, hm, da könnte ich so einen kleinen Pi brauchen.

Thomas: Habe ich vielleicht noch einen?

Thomas: Ja, ich habe noch einen.

Thomas: Total geil.

Thomas: Problem gelöst.

Thomas: War total happy, dass da noch eine Kiste rumlag, weil kaufen würde ich mir jetzt gerade keinen.

Andrej: Ich wollte mir ein 5er kaufen fürs Support, damit ich das testen kann.

Thomas: Ja.

Andrej: Vor allem, Raspberry Pi hat jetzt gestern ein neues Touchscreen rausgebracht, 10 Zoll.

Andrej: Mega geil.

Thomas: Oh, geil.

Andrej: Das Touchscreen, 80 Euro, mache ich,

Thomas: Na, verdammt.

Andrej: kaufe ich, das würde ich gerne supporten.

Andrej: Der Pi kostet halt

Andrej: 120 Euro. Das sind 200 Euro

Thomas: 200 Euro dafür.

Andrej: weg. Gut, ist immer noch okay für

Thomas: Das ist echt viel.

Andrej: ein Pi, ist das echt viel.

Andrej: Ich habe mir das,

Thomas: Ja, aber man muss dazu sagen, bis jetzt habe ich da noch kein Touchscreen gesehen,

Thomas: das, sagen wir mal, so richtig überzeugt hat.

Thomas: Das ist für gewisse Use Cases okay, aber ist halt nicht geil.

Andrej: bei Ebay habe ich mir eins für 30 Euro gekriegt,

Andrej: das 7 Zoll Raspberry Pi, das kam auch

Andrej: heute an. Das wird nachher getestet.

Thomas: Oh, okay. Berichten Sie.

Andrej: Ja, und das,

Andrej: vielleicht schreibe ich auch Raspberry Pi mal an und sage, hey,

Andrej: Leute, ich mache hier was Cooles, schickt

Andrej: mal bitte. Wird eh nicht passieren, aber

Andrej: ich habe hier noch 3 Einser rumliegen, boah,

Thomas: Ja, ich habe da auf jeden Fall wieder alte Pis in Einsatz gebracht.

Thomas: Und ich glaube teilweise, ich bin mir nicht sicher, ob das ein Einser sogar war.

Andrej: Die sind so langsam.

Thomas: Richtig.

Thomas: Allein schon deswegen werden die nie upgedatet, ne?

Thomas: Weil das Updaten dauert halt einfach ewig.

Andrej: Ja.

Andrej: Stunden.

Andrej: Allein den Cache abzudaten und nicht mal

Thomas: Ja, ja, Wahnsinn.

Andrej: die Pakete, sondern nur

Andrej: Update. Naja, ja, ja.

Thomas: Und diese Systeme, weißt du, die laufen da, keine Ahnung, was habe ich angeschlossen?

Thomas: Äh, ein Infrarot, nee, was habe ich da angeschlossen?

Thomas: Bluetooth, das Ding macht Bluetooth, meine Bluetooth-Fernbedienung, die ich selbst gebastelt, die ich irgendwann mal erwähnt habe.

Thomas: Demnächst soll dann auch Infrarot-Gedöns dazukommen, aber jetzt gerade ist halt nur Bluetooth.

Thomas: Und das Ding, sowas einzurichten, nervt, weil du immer vom Scratch startest, dann musst du die Pakete installieren, das dauert dann auf dem Pi ewig und du musst dich einloggen und es fehlt dieses, es fehlt jenes.

Thomas: Allein schon dafür hätte ich gerne

Thomas: einfach nur eine kleine

Andrej: NixOS.

Thomas: Config, die ich immer anwenden kann. Immer

Thomas: auf das Problem werfen. Als Basis

Thomas: allein schon. Aber vielleicht auch als mehr.

Andrej: Problem, NixOS

Andrej: wird supported auf

Andrej: Ab, warte, also 3, 4, 5

Andrej: auf jeden Fall, easy. Ich glaube,

Andrej: der 2er auch noch.

Andrej: Das Problem ist nämlich, es gibt den Binary Cache

Andrej: nicht für die

Andrej: alte Architektur, sondern nur für Arch

Thomas: Ja, okay. Aber an den,

Andrej: 64 und wenn du dann

Andrej: auf dem Pi

Andrej: warst, nee, vergiss es, das dauert

Andrej: Wochen. Der 3er ist,

Thomas: an den ich gerade denke, wer

Thomas: weiß, ich gucke gleich mal. Eventuell mit

Thomas: ein bisschen Glück ist das sogar ein Dreier.

Thomas: Und Dreier müsste unterstützt sein,

Thomas: hast du gesagt, ne? Okay. Ja,

Andrej: ja, das Problem ist nämlich,

Andrej: dass du AArch64 brauchst als Architektur,

Andrej: also die 64-Bit-Architektur.

Andrej: Den 3er kannst du auch in der ARM

Andrej: v7 machen, das ist glaube ich 32-Bit.

Andrej: Das ist nicht mehr im Cache drin,

Andrej: aber das heißt, die da drunter,

Andrej: also Pi 2 und Pi 1,

Andrej: die, also kannst du immer noch installieren,

Andrej: aber dauert eine Woche oder zwei,

Andrej: Das weiß man dann nicht.

Thomas: das lassen wir dann.

Andrej: Ich habe mal Chromium compiled.

Thomas: Ah, auf dem Framework.

Andrej: Das hat auch irgendwie zwei Tage gedauert.

Andrej: Auf meinem Framework.

Andrej: Das war krass.

Andrej: Oder anderthalb oder so.

Thomas: Ich war gerade, ich mache es noch nicht auf dem Pi.

Andrej: Nicht auf dem Desktop.

Andrej: Auf dem Desktop wäre es ein bisschen schneller gewesen.

Andrej: Auf dem Firebase, vergiss es dir bitte.

Andrej: Der hat gar nicht genug RAM.

Thomas: Ja. Wie finde ich denn jetzt raus,

Andrej: Das ist auch noch so ein Thema.

Thomas: was ich für ein Pi habe, weil LSHW

Thomas: ist nicht installiert und das zu installieren dauert

Andrej: Keine Ahnung.

Thomas: ja jetzt zu lange.

Thomas: Ich glaube, ich muss das installieren.

Andrej: Aber noch ein anderes Thema,

Thomas: Proc. Ja. Nö.

Andrej: weil wir noch nicht genug Nix gemacht haben.

Andrej: Der Nix Cache.

Andrej: Vielleicht muss ich auch einen eigenen hosten,

Andrej: falls ich dann tatsächlich doch mal

Andrej: irgendwie Sachen optimiere am Kernel,

Thomas: Ja. Das stimmt. Das ist gut.

Andrej: weil ich ein paar Module rausschmeiße.

Andrej: Und dann möchte ich natürlich nicht, dass die User

Andrej: den Piler

Andrej: zwei Wochen lang auf 100% laufen lassen

Andrej: und die SD-Karte geflasht wird.

Andrej: Dann möchte ich natürlich, dass sie...

Andrej: Das ist schon ein echt involviertes Projekt, aber ich habe da richtig

Andrej: Bock drauf. Das mache ich jetzt einfach.

Thomas: Ja, viele Teilprobleme.

Thomas: Das sind drei Pi 3B, aber das nur.

Thomas: Und Proc CPU Info. Da sieht man

Thomas: das. Egal. Das wollte ich

Andrej: Ah ja, da ist das Modell drin. Ja, gut.

Thomas: vorhin fragen und deswegen hatte ich den,

Thomas: meinte ich gerade noch so, noch eine

Thomas: Nix-Frage. Wenn jetzt

Thomas: Nix ja auf dem Dateisystem

Thomas: her schon jedes

Thomas: Paket, ist es der falsche

Thomas: Begriff, aber ich nenne es jetzt mal Sandboxed.

Thomas: Weil das halt alles isoliert

Thomas: installiert wird und dann nachher zusammengeklebt

Thomas: wird. Bringt NixOS

Thomas: auch noch andere Isolationsmechanismen

Andrej: Nicht, dass ich wüsste.

Thomas: mit? Also

Thomas: integriert in

Thomas: so von wegen, okay.

Andrej: Ich wüsste nichts von Sandboxing

Andrej: im Zuge von Security. Ich denke, da haben wir die

Andrej: Standard-Linux-Sachen. Weil im Endeffekt

Thomas: Okay, okay.

Andrej: ist...

Andrej: Du kannst da ja auch Container drauflaufen lassen,

Andrej: so wie alles andere auch.

Andrej: Anstatt, dann definierst du halt deine Container,

Andrej: machst die Port-Konfiguration, die ist das.

Andrej: Kannst du, glaube ich, auch Docker-Compose laufen lassen,

Andrej: das weiß ich gar nicht, habe ich noch nicht ausprobiert.

Andrej: Aber du kannst auch genauso gut System-D-Services

Andrej: einfach laufen lassen in ihren jeweiligen Usern.

Andrej: Postgres mit einem Postgres-User, MySQL.

Andrej: Dann wiederum hast du natürlich den Nachteil,

Andrej: wenn du einen Postgres hast und du folgst dem Channel,

Andrej: auch die Unstable ist ja egal,

Andrej: dann hast du halt die Version und updatet die sich,

Andrej: hast du das alte Problem,

Andrej: deine Applikation muss erst geupdatet werden,

Andrej: falls die mit der neuen Postgres-Version nicht klarkommt.

Thomas: Ja, okay. Ach, schön.

Andrej: Da hilft natürlich dann Docker oder

Andrej: Podman, ist ja egal, ne? Kannst dann

Andrej: irgendeinen Container nehmen und den

Andrej: dann in einer alten Version laufen lassen.

Andrej: Wir reden im Oktober, du hast da nichts drauf

Andrej: auf deinem Framework, ich sag's dir.

Thomas: Das wäre auf jeden Fall, also

Andrej: Und auf deinem Pi,

Thomas: von einem Extrem ins andere, ne?

Andrej: die breite Masse. Ja, aber ganz

Thomas: wäre das ja, also von einem extrem

Thomas: User-Friendly, ich nenne es jetzt mal

Thomas: User-Friendly, was ich aber damit meine ist

Thomas: auf den gemeinen End-User

Thomas: genau, gedingenste

Thomas: Plattform hin zu

Thomas: alles

Thomas: Text-Interface, alles deklarativ

Thomas: und ja.

Thomas: Ziehe ich mir eine Hacker-Kappe an

Thomas: und dann fühle ich mich nochmal richtig jung.

Andrej: ehrlich, für so ein Pi, also ich überlege

Andrej: mir, ob ich mir so einen Tang und Clevis

Andrej: Raspberry Pi 1 Server mache. Ich würde

Andrej: tatsächlich auch dann das compilen müssen, ne?

Andrej: Würde ich dann auf meinem Desktop mal

Andrej: laufen lassen. Dann würde ich das in meinen Nix-Cache packen.

Andrej: Würde mir so einen mit

Andrej: Cloudflare dreimal erstellen.

Andrej: Und ja, mal gucken, wie das so

Andrej: funktioniert, weil das wäre eigentlich geil. So ein Pi 1,

Andrej: die sind ja okay für so DNS,

Andrej: für so einen kleinen Client-Aufruf

Andrej: beim Boot. Bitte mal kurz

Andrej: hier Schlüssel geben. Völlig

Andrej: ausreichend. Du brauchst ja nicht viel. Die haben ja auch,

Andrej: was haben die, 500 MB RAM? Reicht

Andrej: für sowas. Völlig easy.

Andrej: Kannst du auch Pi-hole noch drauf? Na gut, das vielleicht ein bisschen.

Andrej: Na das, nee, es funktioniert auch noch. DNS ist auch

Andrej: schnell genug. Ja, aber das, ja gut,

Thomas: Ja, starten wird

Thomas: wahrscheinlich dauern, wenn es einmal läuft.

Andrej: das ist okay, aber das Problem ist, finde ich

Andrej: immer, du gehst dann da drauf, weißt nicht mehr, welche

Andrej: Konfigurierung liegt, was hast du da drauf installiert,

Andrej: wie genau und dann musst du noch updaten

Andrej: nach alle paar Jahre, weil Raspberry Pi

Thomas: Ja.

Andrej: OS ist ja auch nur Debian

Andrej: im Unterbau. Ich glaube,

Thomas: Ja, stimmt.

Andrej: genau, also wenn ihr mal Feedback habt

Andrej: zu dem Dashboard OS,

Andrej: wenn ihr es bis hierhin geschafft habt, Respekt,

Andrej: das war eine sehr lange Folge,

Andrej: aber wenn ihr dazu Feedback habt,

Andrej: nehme ich das gerne an. Ich bin da,

Andrej: ich bin noch hart am entwickeln, man kann es

Andrej: auch nicht ausprobieren, weil ich möchte nicht, dass

Andrej: jemand dann, ich möchte keine Migrationsfahne so

Andrej: früh haben. Ich möchte einfach ausprobieren und

Andrej: selber, und ich nutze das ja für mich, von daher.

Andrej: Es wird aber irgendwann öffentlich gemacht werden,

Andrej: dann könnt ihr das auch installieren. Oder gerne

Andrej: Feedback, falls ihr da sagt, nee, das ist total doof, wie du

Andrej: das denkst, oder. Mach aber

Thomas: Genau, den Use Case, mein Schild dann auch.

Thomas: Was macht man so damit?

Thomas: Und wie wird es eingebaut?

Thomas: Oder wie sollte es sein?

Thomas: Ganz kleines Minithema.

Thomas: 30 Sekunden, bevor wir...

Andrej: Kapitelmarke. No.

Thomas: Achso, ja, okay.

Thomas: Gut, genau.

Thomas: Ich bin zufällig auf eine Option gestoßen

Thomas: und habe mir gedacht, oh, wie geil.

Thomas: Das ist so harmlos, das ist so unwichtig.

Thomas: aber mein Arbeitsrechner, MacBook Pro und ein externes Trackpad, dieses Magic Trackpad.

Thomas: Und mir ist immer schon aufgefallen, dass das Magic Trackpad sich viel lauter anhört als das integrierte.

Thomas: Jetzt habe ich zufällig gesehen in den Settings, dass es eine Option gibt.

Thomas: Ich glaube, die ist neu. Ich weiß es nicht.

Thomas: Aber es gibt eine Option, die heißt Quiet Click.

Thomas: Wenn du das aktivierst, dann hast du immer noch das haptische Feedback, aber es knackt nicht so nervig.

Andrej: Moment mal, das Externe ist jetzt

Thomas: Ich bin total happy.

Andrej: leiser? Hä? Das heißt,

Thomas: Ja, genau, das ist eine Option fürs Externe, aber das Interne hat diese Option erst gar nicht, das ist einfach immer leiser.

Thomas: Aber das Externe, das hat immer so ein lautes Klacken gemacht.

Thomas: Es gab das haptische Feedback plus so ein lautes Klacken, also ein, wie so ein Mausklick-Klacken halt, ne?

Andrej: jaja, das heißt, die verballern

Thomas: Und da gibt es eine Quiet-Klick-Funktion und dann ist es einfach total leise.

Thomas: Warte, ich weiß nicht, ob man es hört. Das habe ich mir auch gedacht. Ob die Batterie jetzt länger hält. Wahnsinn, ne? Weil die Batterie hält ja insgesamt, also nicht wenig, aber alle paar Wochen musste ja schon mal ein Strom. So ist es nicht. Das frage ich mich auch, was das für eins ist. Ich habe keine Ahnung.

Andrej: Batterie, um es laut zu machen?

Andrej: Das ist, okay, witzig. Was für ein

Andrej: Magic, ach, wie viel gibt es denn von diesen Magic Trackpads?

Andrej: Version.

Andrej: Okay.

Thomas: Ich glaube, das ist, also ich weiß noch, dass damals, als mein erstes Arbeitsnotebook kam, also vom Arbeitgeber jetzt, das war ja 2018 und das war dieses Intel-Ding und da hatte ich noch eine Magic Mouse und diese Magic Mouse, die war noch extremer.

Thomas: die hat so laut geklickt, das ging mir

Andrej: Müssen wir übrigens auch machen.

Thomas: so auf die Nüsse. Das hat sich so

Thomas: beschissen angefühlt, muss ich sagen.

Thomas: Ansonsten fand ich die Maus ehrlich gesagt

Thomas: okay. Ich sehe auch, ich habe auch nicht die

Thomas: Beschwerde, die sich alle Leute irgendwie

Thomas: lustig machen, dass du die auf den Rücken legen musst, um sie

Thomas: zu laden, weil die meldet sich

Thomas: früh genug, dann lädt sie halt,

Thomas: wenn über Nacht. Was müssen wir auch

Andrej: Uns auf den Rücken legen. Schlafen.

Thomas: machen? Achso, genau.

Thomas: Ja, und dann habe ich

Thomas: irgendwann die Maus durch ein Trackpad getauscht

Thomas: und das ist jetzt aber auch schon mindestens vier Jahre

Thomas: her, dementsprechend ist es mit Sicherheit nicht

Thomas: das aktuelle Modell, aber

Thomas: ja, Quiet Click.

Thomas: Wer hätte das gedacht? Habe ich zufällig gesehen, als ich mich

Thomas: durch die Option... Ne, ich wollte gucken,

Thomas: ob man es schneller einstellen kann, als ich es eh schon eingestellt

Thomas: hatte. Ging nicht. Und dann sehe ich

Andrej: Das war lang. Du würdest ja jetzt schon

Thomas: Quiet Click, klicke drauf und denke mir, oh, wie geil.

Thomas: Endlich mal Ruhe hier.

Thomas: Ruhe im Karton.

Thomas: Schön. Na gut.

Thomas: Packen wir es, oder? Ja, aber schön.

Thomas: Das Nix-Thema hat mich total gefreut.

Thomas: Und ich musste meinem Framework-Ding auch

Thomas: einfach mal Luft lassen und diesen

Thomas: ganzen Preisgedöns und doch finde ich

Thomas: das, wenn ich am Anfang sehr unsicher war. Ich freue mich

Thomas: halt einfach tierisch auf die Linux-Kiste.

Thomas: Bin gespannt, was am Ende bleiben wird.

Thomas: Also ob ich eines der Geräte verkaufe, aber beim

Thomas: jetzigen Markt dürfte das

Thomas: funktionieren zu wahrscheinlich.

Andrej: Gewinn machen, weil das ja 900 Euro

Andrej: teurer ist.

Thomas: Ob man das will, ist dann eine andere Frage,

Andrej: Du bist dann einer dieser Scalper.

Thomas: aber ja, genau.

Thomas: Ach, nee, das ist...

Thomas: Wollte ich immer schon mal sein, nicht?

Thomas: Nee, auf jeden Fall, es fühlt

Thomas: sich ganz blöd an, heutzutage

Thomas: Hardware zu brauchen, also echt eine verrückte

Thomas: Situation. Naja, lass uns

Andrej: Nicht schlecht. Ich glaube es aber erst, wenn der Kabel

Thomas: irgendwie mit schönen Gedanken enden.

Thomas: Fällt jetzt gerade keiner ein.

Thomas: Doch, das wollte ich anbringen. Werden wir jetzt heute

Thomas: aber nicht mehr einsteigen. Hier wird Glasfaser

Thomas: ausgebaut. Tada. Schöner

Thomas: Gedanke. Jaja. Und man

Andrej: drin liegt. Tarif.

Thomas: muss auch mal checken, was die Konditionen sind.

Thomas: Also Konditionen im Sinne von

Thomas: Anbieterbindung und

Thomas: Open Roaming. Oder wie das

Andrej: Oder weitersagen.

Thomas: heißt. Oder Open Access heißt das, glaube ich.

Thomas: Anyway. Na dann.

Thomas: Schön war's. Hoffen, euch hat's

Thomas: auch gefallen. Wir hören immer wieder

Thomas: gerne von euch, auch wenn das

Thomas: Facepalm auslöst, wie

Thomas: Infrarotsensoren, die bei

Thomas: 39 Grad oder 35 nicht mehr so richtig

Thomas: funktionieren. Das könnt ihr gerne

Thomas: tun, podcast-at-smarthütte.de per E-Mail

Thomas: oder unter podcast-social,

Thomas: da ist unser Handel

Thomas: smarthütte.at-smarthütte. Genau.

Thomas: Beim Podcatcher eurer Wahl umso besser,

Thomas: weil das hat, glaube ich, einfach

Thomas: immer noch gewisse Reichweite.

Thomas: Das hilft vielleicht irgendwo,

Thomas: eventuell irgendeinem Algorithmus,

Thomas: der meint, dass

Thomas: Weitersagen ist auch gut.

Thomas: Ja, ich meine, ja.

Thomas: Der Name ist ja bei uns Programm.

Thomas: Smart Hütte, wir reden über NixOS, wir reden über Framework, wir reden über alles Mögliche.

Thomas: Nein, Quatsch. Also, alles dabei.

Andrej: Dashboards. Macht's gut. Ciao.

Thomas: Nerd-Thema. Nerd-Hütte hätten wir es vielleicht nennen sollen oder so.

Thomas: Wie auch immer, bis zum nächsten Mal.

Thomas: Mach's gut. Ciao.