NixOS - die überraschend andere Linuxdistribution
Meine Reise zu NixOS
Ich bin schon seit längerem immer wieder mit einem Zweitgerät auf Linux unterwegs - um genau zu sein mit Linux Mint. Aber nach einem sehr inspirierenden YouTube-Video von Linux Guides bin ich auf NixOS gestoßen - ich denke meine vorerst letzte Linux Distro... 😇
Grundsätzlich liebe ich die Einfachheit von Linux Mint und auch, das viele Dinge einfach out of the box funktionieren. Natürlich ist auch nicht immer alles Gold was glänzt, aber nachdem Windows immer mehr aufgeblasen wird, immer mehr mit Bloatware überschüttet wird und auch die Updatepolitik mit den vielen Updates in letzter Zeit sehr zu wünschen übrig lässt, war für mich jetzt einfach der Zeitpunkt da für den Switch meines Hauptgerätes zu Linux - um genau zu sein zu NixOS.
Aber fangen wir bei meiner Reise einmal ganz von vorne an...
Vor knappen 3 Jahren (zum Zeitpunkt dieses Posts) bin ich über die Server meiner Firma das erste Mal überhaupt direkt mit Linux in Berührung gekommen. Die Commandline und alles was mit Linux zu tun hatte warten für mich bis dahin ein rotes Tuch.
Nachdem ich aber sehr wissbegierig war (und immer noch bin! 😊), habe ich mir erst einmal einen Raspberry Pi 4 zugelegt mit dem Ziel - ich will darauf einen Webserver (mit eigener Webseite) und auch einen eigenen Mailserver darauf laufen lassen. Mit der Hilfe von meinem Systemadministrator und vielen schlaflosen Nächten ist es mir dann schließlich und endlich gelungen, dass ich zumindest den Mailserver zum Laufen bekommen habe. Bis heute weiß ich nicht wie ich das angestellt habe, denn das war mehr ein Frankenstein-Pi als sonst was, aber he, er hat immerhin funktioniert. Zusätzlich dazu habe ich auch noch ein paar andere wichtige Dinge gelernt - wie man grundsätzlich in der Commandline unterwegs ist, wie man Dinge installiert/konfiguriert/anpasst und vor allem die mit unter wichtigste Lehre..."read the f*** documents" 😅
Nachdem ich nun Erfahrungen im Bereich Linux Server sammeln konnte, kam dann eigentlich der nächste logische Schritt, indem ich mir Virtualbox auf meinen, damals noch, Windows Rechner installiert habe und angefangen habe diverse Linux Distributionen als PC Betriebssystem zu testen. Und natürlich habe ich hier - durch den Rat der Community - gleich einmal als erstes Linux Mint vorgenommen. Ich war regelrecht überrascht davon wie einfach es zu bedienen ist und auch wie intuitiv alles war, nachdem es ja doch sehr an Windows angelehnt ist. Was diese Distribution aber auch besonders für Anfänger attraktiv macht ist die Tatsache, dass man nahezu alles ohne das Terminal und über die grafische Desktop-Oberfläche machen kann.
Die logische Konsequenz war dann aus der Vitualbox rauszukommen, und das ganze wirklich als Hauptbetriebssystem auf einem Laptop zu installieren. Gesagt - getan. Also kam ein refurbed Laptop ins Haus. Einen bootfähiger USB-Stick war dann auch ganz schnell mit balenaEtcher erstellt und schon ging's los mit der Installation von Linux Mint auf meinem ersten Notebook.
Nach erfolgreicher Installation ging es dann auch schon ans Einrichten und ans Konfigurieren/Anpassen/Individualisieren. Und da liegt dann am Anfang auch der Hunde begraben, denn man installiert einfach fröhlich drauflos. Doch was macht man, wenn einmal etwas kaputtgeht oder man ein Programm vielleicht nicht mehr will. Da wird es dann knifflig, denn es ist grundsätzlich nicht so einfach ein Programm vollständig vom System zu entfernen und es bleiben immer ein paar Libraries im System zurück und vielleicht auch manchmal ein paar Abhängigkeiten, die dann ein anderes Programm beeinflussen können. Grundsätzlich löst das Linux Mint (mit der Ubuntu Basis) relativ elegant, denn mit dem kann man Programme einfach per Rechtsklick im Kontextmenü deinstallieren.
Bei anderen Distributionen ist das nicht so "einfach" gelöst und man kommt, um einen Besuch im Terminal nicht herum um alles so weit wie möglich restlos zu entfernen.
Genau das ist aber auch der Grund warum man sich, wenn man fröhlich und wahllos irgendwas installiert, auch schnell mal das komplette System zerschießen kann... 🤪
Mir selber ist das einmal passiert, als ich mich mit Wine herum gespielt habe, um auch ein paar Windowsprogramme auf meinem Linux Mint Laptop zum laufen zu bekommen. Und wie sich dann im Nachhinein herausgestellt hat - leider war das ein Fehler, den ich nicht mehr so einfach beheben konnte.
Nachdem es den Rest des Systems nicht beeinträchtigt hat und ich lediglich beim obligatorischen sudo apt update && sudo apt update (um das System zu aktualisieren) eine Fehlermeldung bekommen habe, war es dann aber auch nicht allzu schlimm und es hat mich in meinem täglichen Arbeiten nicht allzu stark beeinträchtigt (auch wenn die Fehlermeldungen wirklich lästig waren).
Während meiner Linux Mint Zeit habe ich auch wieder einiges gelernt und habe natürlich auch da nicht aufgehört andere Distributionen zu testen wobei ich immer wieder bei Linux Mint als meine Main Distro zurückgekommen bin - gerade aufgrund der einfachen Handhabe a la plug-and-play.
Aber jetzt dann doch die entscheidende Frage - wie bin ich dann überhaupt zu NixOS gekommen?
Nun ja - ich schaue mir auch sehr gerne Technik/Linux Youtube Videos an und bin, wie gesagt, ein Fan von den Videos von Linux Guides. Und so kam es dann auch, dass vor ca. 2 Monaten (stand der Veröffentlichung dieses Blogbeitrags) von denen ein Video über NixOS herausgekommen ist. Natürlich habe ich mir das bei der Veröffentlichung auch gleich rein gezogen und war sofort gehyped von der Distribution. Das ging dann so weit, dass ich mir am nächsten Tag gleich einen anderen alten Laptop geschnappt habe und NixOS mit der XFCE Desktopumgebung darauf installiert habe - ganz getreu dem Video von den Jungs von Linux Guides. Aber das hatte auch noch den Hintergrund, dass der ausgewählte Laptop wirklich schon ein älteres Modell und dementsprechend auch ein bisschen schwächer auf der Brust war.
Mit der Anleitung (und natürlich auch ein bisschen Internetrecherche) war ich dann auch schon relativ schnell an dem Punkt, dass ich mit dem alten Laptop produktiv habe arbeiten können.
Natürlich möchte ich euch das Video, dass mich inspiriert hat, nicht vorenthalten daher habe ich es euch hier auch noch in den Blogeintrag eingebettet. In diesem werden auch die Unterschiede zu "herkömmlichen" Linux Distributionen erklärt - viel besser als ich es je könnte 😅 Nur soviel sei verraten - der Vorteil der Distribution ist, dass das gesamte System über ein (oder ein paar mehr, je nachdem wie man es aufbaut oder will) config File configuration.nix aufgebaut wird. Das macht es sehr einfach auf eine andere Maschine umzuziehen, weil man im Prinzip nur ein File braucht. Das kopiert man auf die neue Maschine, dann kommt das obligatorische sudo nixos-rebuild switch und schon wird das System neu gebaut, wie man das auf einer anderen Maschine hatte. Wenn man das System dann auch noch komplett deklarativ aufgebaut hat, braucht man sich nicht mit anderen config Files herumschlagen, sondern alles läuft wie gewohnt. Aber Näheres entnehmt bitte direkt dem Video.
Natürlich ist die XFCE Oberfläche ein bisschen gewöhnungsbedürftig, weil sie optisch schon ein wenig altbacken wirkt. Aber ich habe das Ding zum Laufen bekommen und ich war auch begeistert von der Schnelligkeit von des alten ThinkPads. Aber so gut es dann auch war bin ich mit einer relativ minimalistischen Notebookkonfiguration unterwegs gewesen und wie wir alle wissen, sind 256 GB SSD Festplattenspeicher jetzt auch nichts mehr womit man sich brüsten kann und auch nicht weit kommt. Zudem habe ich bei der Installation von NixOS leider den Fehler gemacht, dass ich keine eigene Swap-Partition erstellt habe, was mich bei einigen System Rebuilds schon an das RAM-Limit gebracht hat.
Also kamen dann weitere Überlegungen meinen Windows Hauptrechner wieder fit zu machen, ihn mit einer neuen 2 TB SSD aufzurüsten, Windows endgültig aus meinem Arbeitsalltag zu verbannen (zumindest auf meiner Hauptarbeitsmaschine) und mit NixOS nochmal ganz von vorne anzufangen... 🤓
Gesagt-getan! Die neue Festplatte bestellt, in den Laptop eingebaut und mit einem Bootstick NixOS installiert. Aber nachdem der Laptop ein neueres Modell ist wollte ich diesmal nicht die minimalistische XFCE Desktopumgebung, sondern etwas Moderneres - also fiel die Wahl diesmal auf KDE Plasma mit Wayland als Display-Server-Protokoll. Dann noch schnell den Swap definiert, einen User angelegt und schon konnte die Installation beginnen. Als ich dann alles installiert hatte, ging es wieder ans Werk, denn ein paar Konfigurationen musste ich noch umschreiben, weil ich jetzt mit einer anderen Desktopumgebung unterwegs war und da die Befehle ein bisschen anders definiert sind. Zusätzlich habe ich an der ein oder anderen Sache auch noch schrauben müssen, da der Laptop einer der neueren Generation ist und somit waren auch noch andere Pakete zu installieren und einzurichten, damit alles schön so funktioniert, wie es sein soll. Und nach einigen Stunden der Recherche und des Bastelns bin ich nun so weit und kann meinen Laptop nun endlich so nutzen, wie zuvor unter Windows. Die größte Freude habe ich eigentlich damit, dass ich nun endlich wieder mein ThinkPad-Dock, welches schon ein wenig Staub angesetzt hat, plug-and-play verwenden kann.
Fazit
So begeistert ich von NixOS bin, ist natürlich nicht alles Gold was glänzt...!
-
Man muss sich schon ein bisschen auskennen und sollte als kompletter "Rookie" nicht einfach NixOS als seine erste Linux Distribution hernehmen.
-
Die config-Files sind alle
.nixFiles und auch in der Sprachenixgeschrieben, die man sich auch ein bisschen aneignen muss. -
NixOS hat eigene Paketquellen Link zur NixOS Paketsuche - es sind zwar mehr als doppelt so viele als die
aptPaketquellen (von Debian/Ubuntu), aber wenn man da nicht fündig wird ist es manchmal ein bisschen umständlicher neue Software zu installieren und man muss ein bisschen an der Konfiguration herumbasteln. -
Nachdem bei jedem
sudo nixos-rebuild switchdas komplette System neu gebaut wird hat man zwar den Vorteil, dass man bei einem Reboot schnell auf die vorhergehende Version zurückspringen kann, aber natürlich brauchen die vorhergehenden Versionen auch entsprechenden Speicherplatz. Daher muss man auch einen sogenannten Garbage-Collector mit in dieconfiguration.nixmit einbauen um die Festplatte nicht zu zu müllen. (wie man die Garbage Collection ausführt bzw. diese in derconfiguration.nixals Automatismus einbaut, erfahrt ihr hier) -
Wenn ein Nix-Paket beschädigt ist, ist es nicht so einfach es zu reparieren, aber im Zweifelsfall kann man aber auf die vorherige Systemversion zurückspringen und kann wieder dort weiter arbeiten, wo man aufgehört hat.
-
Im Internet findet sich haufenweise Dokumentation, diese ist aber hauptsächlich auf das traditionelle (imperative) Dateisystem ausgelegt. Die Doku kann man aber für NixOS nicht verwenden, weil das Dateisystem deklarativ ist und die Pfade so im System anders hinterlegt sind.
Natürlich klingt das Fazit jetzt sehr abschreckend, weil ich hier hauptsächlich die Punkte aufgezählt habe, die eher negativ sind und gegen NixOS sprechen. Aber für mich überwiegen die positiven Aspekte von NixOS wie zB. auch die Nix-Shell mit der ich zB. Programme in einem eigenen abgegrenzten Container temporär installieren kann, um sie zu testen, ohne sie gleich direkt im System zu installieren - um nur noch ein Beispiel zu nennen.
Aber genau deshalb ist für mich
die vorerst letzte Linux Distribution - mal schauen, ob es mich künftig doch noch gelüstet wieder auf eine andere Distribution umzusteigen... 😇
Und zu guter Letzt findet ihr hier auch nochmal ein obligatorisches fastfetch von meinem neuen NixOS Laptop: