Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe
allgemeine Kategorie => Allgemeine Diskussionen => Thema von: Sebastian am 26. März 2025, 18:10:31

Titel: Nix / Nix Package Manager / NixOS
Beitrag von: Sebastian am 26. März 2025, 18:10:31

Hallo Suletuxe,

Durch Podcast und einigen Github Repos bin ich auf Nix (https://nixos.org/) gestoßen. Nur kurze Erklärung.

  • Nix ist ein Package Manager (Für systemd Distros)
  • NixOS ist eine Distribution die rund um den Nix Package Manager aufgebaut ist,
  • Und Nix ist eine Sprache für den Package Manager bzw. für NixOS um diesen zu konfigurieren.


  • Im Sprachgebrauch ist meistens Nix der Package Manager oder NixOS gemeint, seltener die Sprache.

    Ich wollte von euch wissen, ob jemand damit schon Erfahrungen gemacht hat?

    für mich hört sich Nix als Package Manager gut an:

    • Das Nix die sogenannte Abhängigkeits-Hölle überwunden hat. Bei Nix ist es möglich das gleiche Programm bzw. Bibliothek in verschiedenen Versionen parallel auf dem System zu haben.
    • Nix verspricht Reproducible Builds. So das, wenn ein Programm kompiliert, das auf jedem System kompiliert.
    • Nix führt automatische Snapshots so das ein Rollback zu ältere Versionsstände immer möglich ist.
    • Durch die Nix Sprache können Konfigurationen erstellt werden, das der Package Manager ein Reproduzierbares Environment aufbaut. Es werden z.b. zu installierbare Pakete angegeben und es können diese auch darüber konfiguriert werden. So das wenn man die Konfiguration auf einen anderen System verwendet, man genau das gleiche Environment bekommt.


    • NixOS ist das ganze dann noch eine Ebene höher getrieben, indem selbst das Betriebssystem über eine Konfigurationsdatei reproduziert oder im laufenden Betrieb umgeändert werden kann. So gibt man in seiner Konfiguration an man möchte den Bootloader x,y nutzen mit den und den Einstellungen. Dies und jenes Packet mit den und den Einstellungen lässt den Nix Builder die Konfiguration neu einlesen und das Betriebssystem baut sich um. Zudem kann diese Konfiguration auch wieder genutzt werden, um sein Betriebssystem auf einem ganz anderen System in dieser Konfiguration wieder neu aufzubauen. Grade dieser Ansatz hört sich für mich sehr interessant an, wenn man mehrere Systeme pflegen muss. Somit brauch man nur ein Master System und alle anderen können auf diesen leicht neu gebaut werden.

      Selbst Docker bzw. Podman Container können von Nix gleich mit konfiguriert werden, alles verwaltbar über seine Nix Konfiguration.

      Anderes Anwendungsbeispiel:

      Kunde hat selbst ein NixOS und hat ein Problem. Kunde schickt seine Nix Konfigurationsdatei/Dateien (können auch gesplittet werden) einen Helfenden. Dieser kann in einer VM diese Nix Konfiguration laden und bekommt genau dasselbe System wie der Kunde und kann auf Fehlersuche gehen.

      Auch von der Anzahl der Pakete übertrifft Nix selbst AUR mit 120 000. Und wir sprechen hier nicht von veralteten Paketen, selbst eher unbekannte wie navi (https://search.nixos.org/packages?channel=unstable&type=packages&query=navi) liegen im unstable channel in der aktuellen Version vor.

      Apropo Stable/unstable Channel

      NixOS bringt alle 6 Monate ein neues Release raus. Mit einem neuen Release kann es zu Neuerungen, Änderungen in der Nix Sprache kommen, so das man eventuell seine Konfiguration anpassen muss. Also es ist eher damit gemeint das in Stable keine Veränderungen in der Sprache gemacht werden.

      Hat jemand von euch damit schon Erfahrung gemacht?

      Bzw. wer selbst jetzt interessiert ist, hier ein paar Quellen:

      https://nixos.org/
      Ein Linux-System aus einer einzigen Datei bauen! - NixOS (https://www.youtube.com/watch?v=cQRGBxhY0co)
      Wongress / KampHack - Einführung in NixOS (https://www.youtube.com/watch?v=rUjMNM3lSZo)

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Andreas am 26. März 2025, 18:24:40

Das kannte ich noch nicht. Ich habe es mal eben überflogen. So wie ich das sehe ist das wieder eine Release mit "Versionssprüngen", keine Rolling Release...

Da nicht alle Programme zur gleichen Zeit "einen Sprung machen" bin ich ja zum Rolling Release Konzept gekommen, und ich kann mir auch nicht vorstellen, dass so etwas bei einem nicht-rollenden System auch funktionieren kann...

LG
Andreas

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Sebastian am 27. März 2025, 12:26:57

Also so wie ich das verstanden habe, hat NixOS wohl beides.

Wenn man auf dem Stable Branch/Channel (im Nix Umfeld Channel genannt) bleibt, aktualisieren sich die Pakete im 6 Monate takt (außer Security Updates die kommen sofort). Wechselt man auf den Unstable Channel so hat man dann Rolling. Dabei soll man wohl auch hin und her wechseln können so lange nichts Gravierendes sich an Nix Paket Datenbank geändert hat im Unstable/Rolling. Ansonsten müsste man wohl wieder durch einen Snapshot zurück Rollen das der Nix Paketmanager immer automatisch mitmacht und auch im Boot Menü ausgewählt werden kann. Aber wie gesagt, selbst bin ich noch nicht zum Ausprobieren gekommen.

Quellen:
Zitat:
Unstable channels (nixos-unstable, nixpkgs-unstable) follow the master branch of Nixpkgs, delivering the latest tested updates on a rolling basis.

https://wiki.nixos.org/wiki/Channel_branches
https://youtu.be/cQRGBxhY0co?si=K9edNkaEov6DS1K1&t=306

Und unabhängig von NixOS so kann man auch den Nix Packge Manager auch auf einen Arch System nutzen (link (https://wiki.archlinux.org/title/Nix)). Und die Nix Packages sollen mit den eigenen Systempaketen durch den Nix Store (So nennen die den lokalen Speicherort der Pakete) nicht in Konflikt kommen. Der Vorteil ist nur der wenn man NixOS verwendet dann kann man seine ganze Distribution über die Nix Config verwalten und umbauen lassen. So das das ganze Betriebssystem Reproduzierbar ist. Verwendet man nur den Nix Paketmanager so begrenzt sich die Repoduzibarkeit auf den Bau der Pakete.

Das ist etwas, was ich in meinen nächsten Urlaub vielleicht mir mal genauer anschaue. Ob es sich lohnt für mich ein neues Ökosystem und Sprache zu lernen (Nix). Für mich sehe ich Privat den Vorteil, das ich meine Geräte so alle auf den gleichen Stand halten könnte (Von der Konfiguartion und von den Installierten Paketen her). Beruflich erhoffe ich mir da auch von das ich eine Flotte so einfacher Verwalten kann. Indem ich ein Master System Konfiguriere und die anderen Geräte sich nach diesem selbst aufbauen/Konfigurieren.

@Andreas
Damit du Rolling hast müsstest du Quasi einfach auf den Unstable Channel wechseln.



LG
Sebastian

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Andreas am 27. März 2025, 13:26:30

Danke - die Stelle hatte ich noch nicht gefunden... Das klingt ja seeehr interessant! Damit werde ich mich auch beschäftigen - und zwar recht zeitnah (Osterferien...) Da ich auf meinem Mastergerät aufgehört habe, LMDE zu pflegen, wäre Platz für ein weiteres neues System :D

LG
Andreas

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Andreas am 28. März 2025, 08:18:26

Der Installer von Nixos scheint einige Macken zu haben. Ich habe ein nixos installiert und die Festplattenzuordnung so gemacht, dass meine Homepartition benutzt werden sollte. Auch habe ich das Passwort so gesetzt, dass User und root das gleiche Passwort nutzen.

Nach dem Booten des installierten Systems konnte ich mich nicht einloggen, weder als root noch als User. Ich habe das gelöst, indem ich in /etc/shadow mir bekannte Hashes für das User- und root-Passwort gesetzt habe - dort waren keinerlei Hashes eingetragen. Nun konnte ich mich einloggen. ABER: Meine Einstellung, das Home-Verzeichnis auf meine Home-Partition zu mounten wurde ignoriert: /home liegt im Wurzelverzeichnis. Auch nicht schwierig, aber: Mein Lieblingstool "mc" ist nicht standardmäßig installiert (um die fstab zu ändern), und mein Lieblingseditor vi ebenfalls nicht!!!

An der Stelle habe ich erstmal wieder runtergefahen, da ich im Moment keine Zeit mehr habe. Das erste, was ich machen will, ist nämlich, das System auf die "unstable"-Quellen umzustellen, damit ich als ersten Befehl eine rolling daraus machen kann, und erst wenn es eine rolling ist möchte ich weiter installieren...

Mein erster Eindruck:
Sehr, sehr vieles ist gesymlinkt auf /nixos/... - Ordner. Selbst in /etc/ sind 90% der Dateien gesymlinkt, mit sehr langen Hexadezimalnamen. Das ist schon mal auffällig - bewerten tue ich es erstmal nicht. Macht auf jeden Fall einem einfachen Verstehen wenn man von einem anderen Linux auf die Partition zugreift Schwierigkeiten...

LG
Andreas

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Andreas am 28. März 2025, 14:11:37

NixOS ist nun umgestellt auf die "unstable-Quellen" (also rolling). Der ssh-Server ist gestartet, läuft allerdings nur, wenn ich nach dem Bootvorgang ein nixos-rebuild switch abschicke - warum auch immer.

Erster Eindruck:
Das Upgrade von der stable auf die rolling ging sehr schnell (es sind allerdings auch noch nicht viele Pakete installiert). Sehr vieles geschieht über einen mächtigen Automaten, der seine Infos aus den Steuerdateien in /etc/nixos/ bezieht. Dementsprechend sollte man bei vielen Dingen, die man vorher wie im Schlaf gemacht hat (z.B. systemd-Dienste starten, enablen etc.) sehr vorsichtig sein, damit man den Automaten nicht aushebelt. Wie gut der arbeitet - und ob er vielleicht das für viele Linux-Interessierte lästige Lernen abschwächt - werde ich in den nächsten Wochen herausbekommen. Ich habe auf jeden Fall alle noch so subtropischen Pakete, die ich nutze, in den Repos gefunden: das ist schon mal sehr gut. Bislang finde ich NixOS so interessant, dass ich weiter lerne. Es gibt noch viel zu tun (z.B. Pakete installieren, Stabilität testen, Systemkonfiguration lernen) - aber es ist spannend.

LG
Andreas

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Sebastian am 28. März 2025, 14:30:23

Hallo Andreas,

wir haben doch noch ga kein Ostern ;D

Gleich vorweg, ich bin immer noch in der Phase mich um Nix bzw. NixOS zu informieren und habe damit noch keinerlei Erfahrungen gemacht. Ich werde viele YouTube-Videos als Quellen angeben, da ich so mir am Anfang immer erst einen Überblick verschaffe, was damit so möglich ist und worauf man so achten muss. Das hat einen einfachen praktikablen Grund für mich, da ich so etwas anderes Nebenei machen kann. Wie gesagt es geht mir am Anfang erst mal um einen Überblick, für Details gehe ich dann später zu den Docs über, aber soweit bin ich noch nicht.

Um nachzuvollziehen, was du alles schon berichtet hast, habe ich mir NixOS nun auch mal in einer VM installiert.

Dafür habe ich das NixOS Plasma Iso verwendet. Da die Installation und Einrichtung je nach Image ein wenig anders ablaufen kann. So muss z.B. mit dem Minimal Image erst eine /etc/nixos/configuration.nix angelegt werden, wonach der Nix Installer das System baut. Quelle (https://youtu.be/63sSGuclBn0?si=CjuiYRVXbQ8IeR4f&t=241)
Zitat von: Andreas am 28. März 2025, 08:18:26
Nach dem Booten des installierten Systems konnte ich mich nicht einloggen, weder als root noch als User. Ich habe das gelöst, indem ich in /etc/shadow mir bekannte Hashes für das User- und root-Passwort gesetzt habe - dort waren keinerlei Hashes eingetragen.


Mit einer Standardinstallation, also Leere Festplatte, denn Installer Partitionieren lassen, gab es so weit keine Probleme. Auch mein angebender Benutzer vm wurde korrekt angelegt. Und ein Root login mit su war auch möglich. Als Desktop Envoiment hatte ich Xfce ausgewählt.

Und bedenke, zwar kann man auf dem Klassischen wege unter NixOS wohl auch noch einiges machen, auf lange sicht werden solche Dinge wie einen Benutzer anlegen aber über die [tt]/etc/nixos/configuration.nix Konfigurationsdatei eingetragen, und darauf baut sich das System dann um, bzw. legt den Benutzer an. Das sorgt dafür das man alle seine System Einstellungen in einer Konfiguartionsdatei hat, und auf Grundlage dessen ein System Reproduzieren kann. Quelle (https://youtu.be/Wn-6Ls-yJAQ?si=RSHkgl2npnBhUVDa&t=77)

Beispiel Konfiguration wie ein Benutzer declarative angelegt wird.
Zitat:
{
users.users.alice = {
isNormalUser = true;
home = "/home/alice";
description = "Alice Foobar";
extraGroups = [ "wheel" "networkmanager" ];
openssh.authorizedKeys.keys = [ "ssh-dss AAAAB3Nza... alice@foobar" ];
};
}

Quelle (https://nixos.org/manual/nixos/stable/#sec-user-management)

Und da sind wir auch schon was ich meinte das man für NixOS bzw. den Nix Paketmanager die Nix Sprache erst mal lernen muss, um das volle Potenzial auszuschöpfen. Und dafür habe ich zurzeit leider keine Zeit.

Nix funktioniert halt an vielen stellen ganz anderes als wie ein klassisches Linux. So wird im Nix Umfeld auch lieber Nix Module benutzt die dann die eigentlichen Konfigurationsdateien der einzelnen Programme nach Vorgabe seiner /etc/nixos/configuration.nix Anpassen.
Zitat von: Andreas am 28. März 2025, 08:18:26
Das erste, was ich machen will, ist nämlich, das System auf die "unstable"-Quellen umzustellen, damit ich als ersten Befehl eine rolling daraus machen kann, und erst wenn es eine rolling ist möchte ich weiter installieren...


Ich habe mittlerweile herausgefunden, das NixOS noch abgefahrener ist als ich dachte. Und zwar ist es in NixOS anscheint möglich auf sein Betriebssystem generell auf den Stable Channel zu halten. Und bei Bedarf sich Software aus dem Unstable Channel zu besorgen. Und das ganze gibt durch die Arbeitsweiße des Nix Paketmanager keine Konflikte. Quasi man bleibt auf Stable aber man möchte Programm X aus dem Unstable Channel haben, da man dies in einer neueren Version benötigt. Quelle (https://youtu.be/N_-cI-c_iyQ?si=LaNIOGgvoTsyzqyQ&t=80). Aber natürlich kann man auch komplett auf den unstable Channel setzten.
Zitat von: Andreas am 28. März 2025, 08:18:26
Mein erster Eindruck:
Sehr, sehr vieles ist gesymlinkt auf /nixos/... - Ordner. Selbst in /etc/ sind 90% der Dateien gesymlinkt, mit sehr langen Hexadezimalnamen. Das ist schon mal auffällig - bewerten tue ich es erstmal nicht. Macht auf jeden Fall einem einfachen Verstehen wenn man von einem anderen Linux auf die Partition zugreift Schwierigkeiten...


Das ist zu erwarten, aufgrund der Arbeitsweise des Nix Paketmanagers bzw. des NixOS. wird da sehr viel mit Symlinks gearbeitet. Da es bei Nix ja möglich ist Pakete in unterschiedlichen Versionen zur selben Zeit installiert zu haben wird da irgendwie abstrahiert. Der Hash Wert, der vor jedem Paket steht wird dabei irgendwie aus den Bau Quellen gebildet damit Nix weiß welche Paketversion bzw. welche Abhähigkeit mit verlinkt werden muss.Quelle (https://youtu.be/rUjMNM3lSZo?si=FC32KcKL9XCXhvif&t=1189)

Edit:

Es gibt da halt wieder sehr vieles neu zu lernen und leider kann man auf seinen alten Wissenstand nur bedingt zurückgreifen, wenn man nicht an dem Automaten vorbei arbeiten möchte.

LG
Sebastian

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Andreas am 28. März 2025, 14:41:14

Ja, es gibt da große Unterschiede bzw. Arbeitsweisen...

Die Aktualität der unstable habe ich eben mal getestet - Arch hat klar die Nase vorn:
Code:
Linux arch-c2l 6.13.6-zen1-1-zen
Linux nixos 6.12.20


LG
Andreas

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Sebastian am 28. März 2025, 16:57:29

Zitat von: Andreas am 28. März 2025, 14:11:37
NixOS ist nun umgestellt auf die "unstable-Quellen" (also rolling). Der ssh-Server ist gestartet, läuft allerdings nur, wenn ich nach dem Bootvorgang ein nixos-rebuild switch abschicke - warum auch immer.


Wenn ich das richtig verstanden habe liest ein nixos-rebuild die Konfig neu ein und baut das system um. Und das unter Subcommand switch aktiviert die neue Generation und setzt diese als neuen Boot Standard im Bootmanager. Da der Bootmanager bei dir nicht von NixOS verwaltet wird, denke ich mal das dies bei dir nicht passiert und du beim Booten immer in der Generation landest die bei der Installation statgefunden hat. Wurde mich also auch nicht wundern falls du so ungewollt immer wieder ein Rollback machst.
Zitat:
The switch subcommand will rebuild your system, activate the new generation immediately and make it the default boot option. There are also a couple of other sub-commands available

https://nixos.wiki/wiki/Nixos-rebuild
Zitat von: Andreas am 28. März 2025, 14:41:14
Die Aktualität der unstable habe ich eben mal getestet - Arch hat klar die Nase vorn:
Code:
Linux arch-c2l 6.13.6-zen1-1-zen
Linux nixos 6.12.20



Wie sieht das mit deinen anderen Paketen aus? Die meisten Anwender sind jetzt nicht unbedingt auf den neusten Kernel angewiesen. Als Anwender, möchte man hauptsächlich wenn überhaupt die neusten Versionen von seinen Anwendungen was unter der Haube läuft, interessiert die meisten leider nicht.

https://search.nixos.org/packages

LG
Sebastian

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Andreas am 28. März 2025, 17:17:43

Es ist klar, dass ich bei einem neuen Kernel jedesmal in meinem Arch ein grub-mkconfig machen muss, damit ich die neuesten Kernel / initramfs bekomme. Aber die zu startenden Dienste sollten davon doch nicht betroffen sein - oder etwa doch? Dann müsste ich den grub eben von NixOS verwalten lassen und nicht von Arch - wäre ja auch ok...

LG
Andreas

EDIT:

Code:
created 39740 symlinks in user environment
Wow...

Und Du hast richtig vermutet. Ich habe den Grub jetzt von NixOS verwalten lassen, und schon startet auch der ssh-Server... Spannend alles!!!


Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Sebastian am 28. März 2025, 18:54:33

Zitat:
Es ist klar, dass ich bei einem neuen Kernel jedesmal in meinem Arch ein grub-mkconfig machen muss, damit ich die neuesten Kernel / initramfs bekomme. Aber die zu startenden Dienste sollten davon doch nicht betroffen sein - oder etwa doch? Dann müsste ich den grub eben von NixOS verwalten lassen und nicht von Arch - wäre ja auch ok...


Ja doch, der Bootmanager bootet quasi in eine bestimmte Generation (Versionstand von NixOS rein) das ermöglicht so auch einen Rollback.
Das ist wieder was wo man sich wieder nicht auf sein altes Wissen verlassen kann. Und NixOS komplett neue Wege geht.




Ich sehe zwar das Potenzial, was hinter Nix steht. Besonders das man mehre Channels für unterschiedliche Pakete folgen kann um mit unterschiedlichen Versionständen gleichzeitig zu arbeiten ist genial. Aber ich höre auch meinen Schweinehund, der mir sagt: "Du willst dich nicht in ein neues Ökosystem bzw. neue Sprache (Nix) einarbeiten um den Automaten richtig zu bedienen."

Wobei das total genial ist wenn man erst einmal sein System Konfiguriert hat dieses Quasi aus dem nichts auf einen anderen Computer zu Replizieren, indem es sich selbst nach dieser Konfiguration aufbaut.

Der Mensch ist doch bescheuert ::)

PS:
Zitat:
Und Du hast richtig vermutet. Ich habe den Grub jetzt von NixOS verwalten lassen, und schon startet auch der ssh-Server... Spannend alles!!!


Ich glaube das hatte ich aus diesen Vortrag hier (https://youtu.be/rUjMNM3lSZo?si=ySbFffuFskvSL_ei) abgeleitet. Der im Übrigen ganz gut ist um einen Überblick über die Funktionsweiße von NixOS zu bekommen geht knapp eine Stunde, der Vortrag.

Edit:

PPS:

Eine auch sehr geile sache ist der nix-shell -p <Paketname> Befehl. Damit ein Temporäre Shell gestartet und in dem Envoiment das Paket installiert. Sobald man die Shell wieder verlässt, ist das Programm wieder weg. Also super um Dinge auszuprobieren oder Programme die man selten benötigt auszuführen.

z.b


Code:

nix-shell -p cowsay


Und in der gestarten shell gibt es dann das binary cowsay


Code:

cowsay "Hallo World"

Titel: NUR das AUR von Nix
Beitrag von: Sebastian am 29. März 2025, 05:26:06

Oh man, Nix scheint sich aber einiges von Arch abzugucken. Ein NUR (Nix User Repository) hat sich die Nix Community wohl auch nachgebaut. Nur habr ich noch viel zu wenig Ahnung wie man das verwendet und ob man das überhaupt bei der Anzahl/aktuallität der Pakete im Unstable Channel benötigt.

https://nur.nix-community.org/

Da ist logischerweise nicht so viel drin wie im AUR weil im normalen Nix Repo/Channel die meisten Pakete schon drin sind.

Wie viele und wie neu die Pakete aus dem normalen Nix Repo/Channel sind kann man hier an diesen Graphen erkennen:

https://repology.org/repositories/graphs

Da ist Nix Unstable ganz vorne gefolgt vom AUR

Titel: Nix Option Suche
Beitrag von: Sebastian am 29. März 2025, 05:49:08

Nix hat, anscheint auch eine Option Suche für ihren eigenen Automaten damit dieser über die /etc/nixos/configuration.nix die Pakete die man sich installiert auch gleich mit konfiguriert werden.

Hier ein Beispiel Anhand des Nextcloud Paketes was der Automat alles vor Konfigurieren kann.

https://search.nixos.org/options?query=Nextcloud

Auch da gibt es Unterschiede bei der Anzahl der Optionen was der Automat versteht ob man im Stable oder Unstable ist.

Diese Art Pakete zu konfigurieren nennt Nix Declarative system configuration model (https://nixos.org/guides/how-nix-works/#declarative-system-configuration-model) und befähigt so ein System nach seiner /etc/nixos/configuration.nix zu replizieren.

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Andreas am 29. März 2025, 06:41:53

Mit der nix-shell habe ich gestern schon gearbeitet... Nur habe ich, wie Du weißt, nicht soooo viel Zeit. Ich werde das Sysem mit pflegen und immer wenn ich Zeit habe lernen. Es lohnt sich auf jeden Fall!

LG
Andreas

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Sebastian am 29. März 2025, 07:43:27

Zitat von: Andreas am 29. März 2025, 06:41:53
Mit der nix-shell habe ich gestern schon gearbeitet... Nur habe ich, wie Du weißt, nicht soooo viel Zeit. Ich werde das Sysem mit pflegen und immer wenn ich Zeit habe lernen. Es lohnt sich auf jeden Fall!

LG
Andreas


Wow das ich das letzte mal bei dir geschaft habe dich so zu begeistern war glaube ich das letzte mal bei navi ;D

Na wenn du schon sagst das es sich lohnt dann muss ich da wohl auch dran bleiben um nicht abgehängt zu werden ;)

Ein Kritik Punkt sehe ich aber noch an Nix. NixOS macht ja sehr viel mit seiner eigenen Sprache und seinem Automaten. Wenn man als alter Hase oder auch Neuling in Linux durch NixOS einsteigen würde. Dann würde man sich so verhaltensweißen angewöhnen die bei den Üblichen Linux Distros nicht so gemacht werden.

Beispiel:

Wenn ich nun anfange alle meine Programme/Pakete nur über die /etc/nixos/configuration.nix zu Konfiguriere in der eigenen Nix Sprache für den Automaten. So verlernt bzw. lernt man die eigentlichen Konfigurationsdateien der eigentlichen Programme nicht mehr so richtig kennen und ist woanders auserhalb des Nix Universums schnell verloren.

Also Nix bedeutet auf jedenfall noch eine Abstraktionsschicht mehr zu lernen. :)

LG
Sebastian

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Andreas am 29. März 2025, 07:54:29

Ich sehe das so:
Der DAU der von Windows auf Linux wechseln möchte und nicht lernen möchte, wie das alles zusammenhängt könnte, wenn NixOS stabil ist, zu einem System kommen, das seine Ansprüche in Sachen Sicherheit und Stabilität erfüllt und er trotzdem "nix großes lernen muss". Das ist in meinen Augen zwar kein Linux-User - denn er wird weite Teile der Leistungsfähigkeit weder erkennen noch nutzen können. Aber er könnte seine Windows- oder MAC-Aversion damit befriedigen. Aber das setzt voraus, dass die Updates problemlos durchlaufen, das System ansonsten stabil bleibt und die Systempflege nahezu automatisch funktioniert. Und das gilt es auszuprobieren. Ich werde das definitiv nicht für mich nutzen. Die Nachteile die ich hier sehe können durch nichts aufgewogen werden. Keines meiner Systeme die ich produktiv nutze könte durch ein NixOS ersetzt werden.

LG
Andreas

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Sebastian am 29. März 2025, 17:59:13

Welche Nachteile siehst du in NixOS?

Ich wie gesagt sehe als Nachteil bisher nur den Erhöhten Lern aufwand durch die zusätzliche Abstraktion. Aber ich denke wenn man das in kauf nimmt, kann man bestimmt das gleiche erreichen wie mit Arch auch. Nur weiß man momentan vielleicht noch nie wie.

Man müsste z.b. lernen wie der Paketmanager arbeitet, wie Pakete gebaut werden, (auch wieder in der Nix Sprache) wie das System konfiguriert wird etc. p.p.

LG
Sebastian

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Andreas am 30. März 2025, 07:51:24

Der gravierendste Nachteil den ich jetzt schon klar sehe ist, dass man "die Kompatibilität zu einer üblichen Linux-Distribution" verlässt. Das bedeutet, dass man Konfigurationen auf Dateiebene (z.B. im Ordner /etc) möglichst nicht machen sollte, weil es durchaus möglich ist, dass die Änderungen nicht so übernommen werden wie man es möchte. Das Wissen, was man bisher gesammelt hat, ist nur noch bedingt anwendbar. Und Fragezeichen sind bei mir noch bei den Fälle, wo Konfigurationen noch nicht per NixOS-Konfigurationsdatei vorgesehen sind, aber unbedingt notwendig. Da muss man dann mehrgleisig fahren - mir fehlen aktuell die Erfahrungen dazu. Mein Lernprozess befindet sich noch in der Startphase ;)

LG
Andreas

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Sebastian am 30. März 2025, 15:07:29

Zitat von: Andreas am 30. März 2025, 07:51:24
Der gravierendste Nachteil den ich jetzt schon klar sehe ist, dass man "die Kompatibilität zu einer üblichen Linux-Distribution" verlässt. Das bedeutet, dass man Konfigurationen auf Dateiebene (z.B. im Ordner /etc) möglichst nicht machen sollte, weil es durchaus möglich ist, dass die Änderungen nicht so übernommen werden wie man es möchte. Das Wissen, was man bisher gesammelt hat, ist nur noch bedingt anwendbar. Und Fragezeichen sind bei mir noch bei den Fälle, wo Konfigurationen noch nicht per NixOS-Konfigurationsdatei vorgesehen sind, aber unbedingt notwendig. Da muss man dann mehrgleisig fahren - mir fehlen aktuell die Erfahrungen dazu. Mein Lernprozess befindet sich noch in der Startphase ;)

LG
Andreas


Gut, genau das sehe ich auch so. Dann sprechen wir zumindest nicht aneinander vorbei. Das ist das, was ich meinte mit dem Schweinehund bei mir, ich muss mir das neue Nix Wissen aneignen, um mit den Programmen wieder vernünftig umgehen zu können. Altes Wissen hilft mir da nur bedingt. Man muss diese Nix Abstraktionsschicht erst einmal lernen und da bin ich auch komplett am Anfang.

Was ich aber schon mal in Erfahrung bringen konnte ist. Das, wenn es keine Nix Optionen für den Automaten gibt, um ein Programm oder Dienst zu konfigurieren. Dann kann man dem Automaten das auch beibringen, wie er die Konfiguration Dateien anpassen soll. Das wird dann über Nix Module (https://nixos.wiki/wiki/NixOS_modules) bewerkstelligt.

Am besten macht man das dann auch gleich ein Pull Request bei NixOS damit andere das Modul dann auch nutzen können.

https://nixos.wiki/wiki/NixOS_modules#Developing_modules

Viel viel zu lernen uff..

LG
Sebastian

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Sebastian am 30. März 2025, 17:16:37

Ich habe mir NixOS zu testzwecken mal navi über die /etc/nixos/configuration.nix installiert
Zitat:
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also instal>
# wget
brave
navi
];


danach ein


Code:

sudo nixos-rebuild switch


Und ich hatte navi installiert. Dann wollte ich die Zeilen die ich hier Zitiert habe aus der VM Kopieren (per Copy & Paste) ging nicht. Ok, dann mal schauen wie schwer es ist diese Unterstützung in NixOS zu aktivieren.

In meine Konfiguartion noch diese Zeile mit eingefügt:


Code:

services.spice-vdagentd.enable = true;


und wieder ein nixos-rebuild switch (Das switch Subcommando fügt die neue Generation als Standard dem Bootloader hinzu)

Und NixOS fing an nötige Pakete zu installieren und zu Konfigurieren und startete im Anschluss den passenden Systemd Service (spice-vdagentd.service). Einmal neu gestartet und Copy paste funktionierte.

Also ich muss schon sagen das war ziemlich angenehm. Das heist wenn für Nix Optionen Packete gebraucht werden, so werden diese automatisch nachinstalliert. Bedeutet das man nicht alle möglichen Pakete in seine Konfiguartion Schreiben muss. Es reicht einfach gleich die Einstellungen bzw. die Optionen zu benutzen und dann muss der Automat das nachladen.

Nachdem ich dann navi installiert hatte, wollte ich mal ausprobieren was passiert wenn ich jetzt fzf nutzen möchte (fzf ist eine Abhähigkeit von navi). Wenn ich navi starte funktioniert fzf, aber wenn ich fzf für sich alleine starten möchte, bekomme ich das hier:
Zitat:
[vm@nixos:~]$ fzf
The program 'fzf' is not in your PATH. It is provided by several packages.
You can make it available in an ephemeral shell by typing one of the following:
nix-shell -p fzf
nix-shell -p vimPlugins.fzfWrapper


NixOS teilt mir mit das fzf von verschieden Paketen auf meinen System verwendet wird, aber nicht in meinen Path existiert. Und wenn ich es temporär nutzen möchte wie ich das machen kann. Wie geil ist das denn? ;D Der Automat ist sich bewusst das fzf in den Paketen vorhanden ist, aber halt nur nicht angeben wurde das ich das auch außerhalb im Kontext von navi Nutzen möchte. Das Spricht für eine gute Isolierung der Pakete, das sich nichts in die Quere kommen kann.

Also das gelernte angewendet (Wenn Optionen in der /etc/nixos/configuration.nix verwendet werden, von Programmen die nicht installiert sind werden diese nachgeladen) also nach fzf Optionen gesucht (https://search.nixos.org/options?channel=24.11&show=programs.fzf.fuzzyCompletion&from=0&size=50&sort=relevance&type=packages&query=fzf)

Und nur eine der beiden in die Konfiguartion eingetragen. Da die andere ja automatisch greifen muss um diese zu erfüllen:


Code:

programs.fzf.keybindings = true;


wieder nix sich neu bauen lassen. Und zack habe ich fzf nun in meiner Shell mit den Standard Keybindings aktiviert.

Wenn man jetzt weiter so Konfigiert und sich die /etc/nixos/configuration.nix sichert, kann man schnell ein anderes NixOS auf dieser basis aufbauen.

Edit:

PS:

Ich versuche mir gleich den weg über die /etc/nixos/configuration.nix anzulernen statt über nix-env da das ja grade der Vorteil von NixOS sein soll, das man seine Konfiguration zu einem anderen System übertragen kann.

Titel: Re:Nix / Nix Package Manager / NixOS
Beitrag von: Sebastian am 31. März 2025, 13:12:21

Ich habe jetzt auch mal ausprobiert, ob das wirklich funktioniert, was NixOS verspricht. Das sich verschiedene Paketversionen nicht in die Quere kommen. Und gleich vorweg ja, es funktioniert!

Als Ausgangslage hatte ich navi aus dem Stable Channel in Version: 2.23.0 installiert gehabt. Ich wollte jetzt aber die aktuelle Version 2.24.0 aus dem Unstable Channel nutzen. Also erst einmal den Unstable Channel hinzugefügt und als namen unstable vergeben.


Code:

sudo nix-channel --add https://nixos.org/channels/nixos-unstable unstable



Code:

sudo nix-channel --list
nixos https://nixos.org/channels/nixos-24.11
unstable https://nixos.org/channels/nixos-unstable


Channel ist nun da, also nächstes Pakete einlesen damit der Paket Manager weiß was es da im unstable Channel so gibt.


Code:

sudo nix-channel --update


Dann die /etc/nixos/configuration.nix Datei Anpassen das ich aus dem Unstable Channel das navi Paket haben möchte.


Code:

# Unstable Channel über die Variable unstable nutzbar machen??
let
unstable = import <unstable> { };
in

# Bei den SystemPaketen mitteilen das ich gerne aus dem unstable Channel navi haben möchte
environment.systemPackages = with pkgs; [
unstable.navi
];


Zu guter letzt ein nixos-rebuild switch und ich habe auf meinem System navi in Version 2.24.0. Dabei wurden natürlich auch benötigte abhähigkeiten aus dem Unstable Channel geladen in einer neuen Version, aber durch die Isolierung Pakete voneinander ist der verwendet der Rest meines Systems immer noch die Versionsstände aus dem Stable Channel auser wenn ich Navi verwende dann habe ich die aktuelle Version. Also sind Versionsstände bei NixOS Kontext bezogen, und man kann wirklich alles miteinander mischen. Solange man sich an die Nix Konventionen hält.

LG
Sebastian


Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe | Powered by YaBB SE
© 2001-2003, YaBB SE Dev Team. All Rights Reserved.