Nix mit NixOS

  Ralf Hersel   Lesezeit: 5 Minuten  🗪 10 Kommentare

Ich habe es geahnt, dass ich zu jung oder alt für NixOS bin. Ein dokumentiertes Scheitern.

nix mit nixos

Am Freitag habe ich den Podcast Linux Matters gehört, in dem Martin Wimpress (Wimpy) seinen NixOS-Flake vorgestellt hat. Beim Ausprobieren bin ich nicht über Schritt Null hinweg gekommen, da ich es nicht einmal geschafft habe, die ISO-Datei zu erzeugen. Um diese Blamage zu vollenden, habe ich die aktuelle Originalversion von NixOS 23.05 heruntergeladen und mich an einer Installation versucht.

Im Dezember 2021 gab es bei uns schon einmal einen Artikel, der die Installation von NixOS beschrieben hat. In der Rückschau beurteile ich diese Anleitung als ziemlich kompliziert. Deshalb versuche ich es zwei Jahre später noch einmal.

Nach dem Download der ISO-Datei habe ich die Distribution in GNOME-Boxes gestartet.

Dort meldet sich der NixOS-Installer (ich vermute, es ist Calamares):

Im Gegensatz zu vielen anderen Installationsprogrammen, wird hier ein sicheres Passwort verlangt, bevor man in der Installation fortschreiten kann. Danach gilt es, zwischen den Desktop-Umgebungen: GNOME, Plasma, Xfce, Pantheon, Cinnamon, MATE, Enlightment, LXQt, Budgie oder keinem Desktop auszuwählen. Ich habe (wie immer GNOME) gewählt. Der weitere Installationsverlauf ist unspektakulär; als Massenspeicher-Format wird ext4 standardmässig verwendet.

Während die Installation andauert, möchte ich die Besonderheiten von NixOS, bzw. des Paketmanagers Nix,  hervorheben:

Reproduzierbar: Nix baut Pakete isoliert voneinander. Dies stellt sicher, dass sie reproduzierbar sind und keine nicht deklarierten Abhängigkeiten haben. Wenn also ein Paket auf einem Rechner funktioniert, wird es auch auf einem anderen funktionieren.

Deklarativ: Nix macht es trivial, Entwicklungs- und Build-Umgebungen für Ihre Projekte gemeinsam zu nutzen, unabhängig davon, welche Programmiersprachen und Tools du verwendest.

Zuverlässig: Nix stellt sicher, dass die Installation oder Aktualisierung eines Pakets keine anderen Pakete beschädigt. Es erlaubt dir, zu früheren Versionen zurückzukehren, und stellt sicher, dass kein Paket während eines Upgrades in einem inkonsistenten Zustand ist.

Im Vergleich zu anderen Installation von GNU/Linux-Distributionen dauert der NixOS-Install relativ lange, ca. 5 Minuten. Nach dem obligatorischen Neustart präsentiert sich NixOS mit dem GNOME-Desktop in einer Vanilla-Konfiguration. Die Eingabe von 'neofetch' im Terminal enttäuscht. Ich bin es gewohnt, dass die Shell ein Installationsangebot für fehlende Anwendungen bietet. Nicht so bei NixOS:

Als einzige Besonderheit findet sich unter den vorinstallierten Anwendungen ein Link auf das NixOS-Handbuch:

Da ich weiss, dass NixOS ganz anderes funktioniert als die üblichen GNU/Linux-Distributionen, lese ich dieses Handbuch. Als Erstes lerne ich, dass man NixOS mit diesem Befehl upgraded:

nixos-rebuild switch --upgrade

Nun gut; ich probiere es aus und es funktioniert nicht:

Als Nächstes versuche ich ein Paket (Thunderbird) zu installieren, und zwar mit diesem Befehl:

environment.systemPackages = [ pkgs.thunderbird ];
nixos-rebuild switch

Auch dieser Versuch scheitert:

An dieser Stelle gebe ich meinen Versuch mit NixOS auf. Ich muss noch viel lernen, wenn ich das Konzept und die Bedienung von dieser speziellen Distribution verstehen möchte. Vielleicht gibt es in unserer Community einen Autor oder eine Autorin, die den Umgang mit NixOS für Normalsterbliche vermitteln kann.

Quelle: https://nixos.org/

Tags

Nix, NixOS, Scheitern, Fehlversuch, Ausprobiert

lutz
Geschrieben von lutz am 17. Juli 2023 um 09:16

Ohne NixOS je benutzt zu haben...

Zum Scheitern der Aktualisierung: Im Handbuch steht: " # nixos-rebuild switch --upgrade" Das # (Hashzeichen) steht idR für "als root auszuführen", deswegen auch das "permission denied".

Zum Scheitern der Thunderbird-Installation: Im Handbuch steht "For instance, adding the following line to configuration.nix enables the Mozilla Thunderbird email application: "

"environment.systemPackages = [ pkgs.thunderbird ];" ist also eine Zeile, die der configuration.nix zugefügt wird und KEIN Konsolenbefehl. Deswegen auch "not found"

Naja
Geschrieben von Naja am 17. Juli 2023 um 10:29

Muss wohl an der Sommerhitze liegen, dass du daran hängen bliebst :-)

"Permission denied" deutet ziemlich eindeutig darauf hin, dass der Befehl mit höheren Rechten, also vermutl. root, ausgeführt werden muss.

Ralf Hersel
Geschrieben von Ralf Hersel am 17. Juli 2023 um 11:36

Ups, das 'permission denied' habe ich tatsächlich übersehen. Ich werde in den nächsten Tagen einen neuen Versuch starten. Danke für den Hinweis.

tux0r
Geschrieben von tux0r am 17. Juli 2023 um 12:13

> Ich bin es gewohnt, dass die Shell ein Installationsangebot für fehlende Anwendungen bietet.

Das ist ja nun nicht unbedingt die Aufgabe einer Shell. ;-)

Patrick
Geschrieben von Patrick am 17. Juli 2023 um 12:15

Es ist irgendwie beruhigend, das auch den Autoren von gnulinux.ch nicht alles gleich auf Anhieb gelingt... ;-)

janov
Geschrieben von janov am 17. Juli 2023 um 16:43

'environment.systemPackages = [ pkgs.thunderbird ]

Dieser "befehl" ist für die /etc/nixos/configuration.nix

Nixos baut das System auf mit alles was in dieser Datei beschrieben (declared) wird.

Nachdem einmahl ‘nixos-rebuild switch' ausführen und dann hat mann Firefix Installiert

tuxnix
Geschrieben von tuxnix am 17. Juli 2023 um 23:35

Toller Artikel. Es gibt viel zu wenig Beschreibungen über das Scheitern. Das meine ich sehr ernst. Die meisten Leute reden ja nur darüber, was sie alles können und was ihnen alles so gelingt. Und ich dachte ja schon, dass es nur mir so geht und ich der einzige bin der erst einmal alles falsch machen muss bis er sich mit einer Sache ein wenig auskennt. Ehe ich laufen lernte, bin ich ganz schön oft auf die Fresse geflogen. Erst viel später beim Singen ist es mir dann so richtig bewusst geworden, dass die Schönheit und die Peinlichkeit Zwillinge sind und das eine ohne das andere nicht zu haben ist.. Aber das ist ja auch gerade das schöne an der Musik und sie bewegt die Menschen dann am meisten, wenn jemand den Mut hat etwas von sich preis zu geben.

Vieta
Geschrieben von Vieta am 19. Juli 2023 um 19:53

NixOS funktioniert ganz anders andere GNU/Linux Distros die aus deren Natur imperaitv sind. Bei NixOS sind die Pakete in /nix/store die gesymlinked mit den gewöhnlichen files wie /usr/bin /bin etc. sind. Du kannst via nix-shell -p "Paket Name" temporär Pakete installieren die entfernt werden sobald dein Garbage collector (zB. nix-collect-garbage -d) durchläuft. Wenn du es fest installieren willst kannst du via eines texteditors (in dem Falle nano, da es vorinstalliert ist). mit root-rechten: "sudo nano /etc/nixos/configuration.nix" Der/n Stelle/n "packages" Die Pakete einfügen die du haben willst. Nicht erschrecken. Nix ist sowohl ein OS als auch Paketmanger als auch eine pur funktionale Programmiersprache.
Für mehr Infos haben wir einige Wikis (https://nixos.wiki/ ) von Nutzern als auch eine Offizielle, die demnächst geupdated wird um es Nutzerfreundlicher zugestallten. Bei weiteren Fragen und Problemen haben wir Community Foren (https://discourse.nixos.org/) und Chatgruppen. Ich hoffe, dass du Spaß bei Nix haben wirst ;D, denn es hat so seine Stärken, die kein anderes (außer GNU Guix ;D) hat.

,8,1
Geschrieben von ,8,1 am 31. Juli 2023 um 23:49

zl;ng Debian (stable) & nix = best combo

NixOS = Masochismus Debian & Nix = Traumteam. NixOS ist behindert - bzw. verunmöglicht es jedem DE seine Stärken auszuspielen. Muss man sich nicht schön reden. Das Konzept selbst ist absolut smart aber jeder kann sein eigenes Süppchen kochen - plötzlich sind Pakete = Funktionen/Optionen und der Nutzer soll selbst dahinter steigen. NixOS könnte so vieles richtig machen - aber es scheint Methode zu haben. Brotipp: Erstellt mit ChatGPT eine >configuration.nix [aufpassen das die Versionen passen] Und jetzt denkt bitte mal darüber nach warum das heute noch kein Thema ist.

@OP Danke für die Perspektive. "MX" ist jetzt auf Bücherwurm (12.1). "electricsheep & pinta" bekommste mit

$ sudo install -d -m755 -o $(id -u) -g $(id -g) /nix $ curl -L https://nixos.org/nix/install | sh

und ist echter Gewinn. NixOS ist nur interessant wenn du Alles™ konfigurieren willst (und am Ende bemerkst, dass eben doch nicht Alles gespeichert wurde). Potential ist vorhanden ... . Selbstverständlich wird diese Kritik auch an die richtige Adresse gesendet ... darum: Bitte Ergänzen, korrigieren oder so,

Junicast
Geschrieben von Junicast am 15. August 2023 um 16:57

Dieser Artikel beschreibt leider ausschließlich dein Scheitern und zwar eine ziemlich peinliche Variante davon. Du hast wohl übersehen, dass environment.systemPackages kein Befehl ist. Also der Domainname wird diesem Artikel NICHT gerecht. RTFM