Paketmanager Nix

Diskutiere das Thema Paketmanager Nix im Forum Mac OS - Unix & Terminal. Moin Moin, ich bin gerade dabei von Homebrew auf Nix umzusteigen. Bis auf DavMail hab ich jetzt alles mit Nix installiert. Zusätzlich...

  1. agrajag

    agrajag Thread Starter Mitglied

    Beiträge:
    3.386
    Zustimmungen:
    1.014
    Mitglied seit:
    25.08.2004
    Moin Moin,

    ich bin gerade dabei von Homebrew auf Nix umzusteigen. Bis auf DavMail hab ich jetzt alles mit Nix installiert. Zusätzlich hab ich nix-darwin installiert. Ich hab jetzt alles, was die Unix-Tools angeht, in einer dawin-configuration.nix formuliert. Das sieht dann z.B. so aus:
    Code:
    { config, pkgs, ... }:
    
    {
      # List packages installed in system profile. To search by name, run:
      # $ nix-env -qaP | grep wget
      environment.systemPackages = with pkgs;
       [
         nix-top
         nix-zsh-completions
         nix-bash-completions
         nix-repl
         nixops
         nixpkgs-lint
         nix-deploy
         vulnix
    
         zsh
         zsh-autoenv
         zsh-autosuggestions
         zsh-command-time
         zsh-completions
         zsh-git-prompt
         zsh-history-substring-search
         zsh-navigation-tools
         zsh-prezto
         zsh-syntax-highlighting
    
         #davmail
    
         git
         fzf
         tree
         htop
         ffmpeg
         tesseract
         thefuck
         tldr
         youtube-dl
         ansible
         ansible-lint
         vagrant
    
         #( lua.withPackages (ps: with ps; [ luarocks mpack ]) )
         #( python36.withPackages (ps: with ps; [ pip flake8 yapf black pynvim python-language-server.override { pylint = null; } ]) )
       ];
    
      # Use a custom configuration.nix location.
      # $ darwin-rebuild switch -I darwin-config=$HOME/.config/nixpkgs/darwin/configuration.nix
      # environment.darwinConfig = "$HOME/.config/nixpkgs/darwin/configuration.nix";
    
      # Auto upgrade nix package and the daemon service.
      services.nix-daemon.enable = true;
      #nix.package = nix;
    
      # Create /etc/bashrc that loads the nix-darwin environment.
      programs.zsh.enable = true;
    
      # Used for backwards compatibility, please read the changelog before changing.
      # $ darwin-rebuild changelog
      system.stateVersion = 4;
    
      # You should generally set this to the total number of logical cores in your system.
      # $ sysctl -n hw.ncpu
      nix.maxJobs = 16 ;
      nix.buildCores = 4;
    
      # Use sandbox
      #nix.useSandbox = true;
    }
    
    Jede Änderung, die ich an diesen Tools vornehmen möchte, schreibe ich in diese Datei und führe dann in der Shell
    Code:
    darwin-rebuild switch
    aus – that's it.

    Warum nun Nix anstelle von Homebrew?
    • Nix ist pure funktional, atomar transaktional, bietet Rollbacks und überhaupt… es ist irgendwie elegant.
    • nixpkgs (die Paketsammlung) ist eines der umfangreichsten aller Paketmanager (ca. 40k Pakete)
    • Nix kommt vor allem mit Multi-User-Umgebungen klar. Homebrew darf man nur mit einem User benutzen, sonst hat man sehr schnell ein Rechte-Fuckup. Nix erlaubt auch die gleichzeitige Installation und Nutzung gleicher Libs in verschiedenen Versionen. User können sich eigene SW installieren, die den Rest der Nix-Installation nicht tangiert.
    Auf meinem NixOS-Testsystem beschreibe ich das komplette System in einer configuration.nix-Datei. Die komplette Konfiguration wird ausschliesslich hier descriptiv vorgenommen. Dann braucht es nur noch ein nixos-rebuild switch, und die Konfiguration wird sofort umgesetzt und aktiv. Bei Änderungen am Kernel oder ähnlichem muß neu gestartet werden. Auf diese Weise kann ich jederzeit in kürzester Zeit und vor allem mit minimalem Aufwand ein exakt gleiches System aus dem Boden stampfen.

    tl;dr: Hat sich hier noch jemand mit Nix auf dem Mac beschäftigt? Vielleicht könnte man sich ja hier in diesem Thread austauschen. Ich hätte auch schon ein Problem: DavMail will nicht richtig laufen, wenn es via Nix installiert wurde. DavMail ist mittlerweile das einzige Paket, was ich via brew installiert habe.
     
  2. asterixxER

    asterixxER Mitglied

    Beiträge:
    1.358
    Zustimmungen:
    152
    Mitglied seit:
    26.10.2009
    Was ist denn der Unterschied zu macports z.b.
     
  3. agrajag

    agrajag Thread Starter Mitglied

    Beiträge:
    3.386
    Zustimmungen:
    1.014
    Mitglied seit:
    25.08.2004
    Im Grunde der gleiche Unterschied. brew, ports, apt und wie sie alle heißen arbeiten iterativ. Es werden nacheinander alle Packete und ihre Abhängigkeiten gebaut, was auch je nach Reihenfolge nicht immer das gleiche Ergebnis geben muss. Es gibt viel Raum für Abhängigkeitsprobleme. Z.B. wenn Pakete die gleiche Abhängigkeit haben, aber unterschiedliche Versionen verlangen. Dann wird es schnell ekelig.

    Nix hingegen arbeitet deklarativ, d.h., ich beschreibe wie das System aussehen soll in einer oder mehreren nix-Dateien in der extrem simplen funktionalen Sprache nix. Dann gebe ich dem Paketmanager (nix-env bzw. nixos-rebuild bzw. darwin-rebuild) diese Datei(en) und der baut die komplette Umgebung neu. Erst wenn das ohne Fehler durchgelaufen ist, wird die alte Umgebung durch die Neue ersetzt. Ich kann auch Testdurchläufe machen, incl. Tests der gebauten Umgebung. Egal in welcher Reihenfolge man zu installierende Pakete aufzählt, ist das Ergebnis immer gleich.

    Und was auch nett ist (wenn auch für mich eher perspektivisch), daß man mit nix-shell eine Ad-hoc-Shell bauen kann, in die auch gleich bestimmte SW in bestimmten Versionen installiert sind. Wenn ich die Shell wieder verlasse, wird auch automatisch die Umgebung zerstört. Sehr schön, wenn man Dinge Testen will, oder wenn man zum Entwickeln ganz bestimmte SW-Versionen benötigt.
     
  4. agrajag

    agrajag Thread Starter Mitglied

    Beiträge:
    3.386
    Zustimmungen:
    1.014
    Mitglied seit:
    25.08.2004
    Hmm… hat das hier echt noch keiner ausprobiert?!?
     
  5. electricdawn

    electricdawn Mitglied

    Beiträge:
    8.830
    Zustimmungen:
    6.235
    Mitglied seit:
    01.12.2004
    Ist wohl nicht jeder so nerdig wie Du. ;)
    Und das ist jetzt echt nicht böse gemeint. Ich finde es toll, wenn man sich mit sowas beschäftigt. Ist bestimmt eine tolle Sache für Systemadministratoren, die mit einer Konfigurationsdatei schnell einen Haufen gleiche Systeme hochziehen wollen. Für Otto-Normalnutzer wohl eher Overkill (und zwar atomarer).
     
  6. warnochfrei

    warnochfrei Mitglied

    Beiträge:
    563
    Zustimmungen:
    242
    Mitglied seit:
    02.03.2019
    Geht pkgsrc nicht auch unter macOS? Nachdem ich mir Nix mal unter Gentoo angesehen hatte, habe ich festgestellt, dass die Konfiguration die Pest ist.
     
  7. mj

    mj Mitglied

    Beiträge:
    8.107
    Zustimmungen:
    2.800
    Mitglied seit:
    19.11.2002
    Ging mir genauso. Ich hab mir Nix mal auf einem RHEL 7 System angeschaut aber bin sehr schnell wieder davon abgekommen. Ich sehe durch die deklarative Vorgehensweise ehrlich gesagt keine Vorteile mehr gegenüber der klassischen iterativen Abarbeitung. Die Probleme mit Abhängigkeiten waren früher bei RPM tatsächlich eine sehr große Herausforderung, mittlerweile haben aber alle mir bekannten Paketmanager (primär sind dies apt und yum) eine Vorabprüfung der Abhängigkeiten sowie die Möglichkeit, gegebenenfalls Parallelinstallationen in separate Pfadstrukturen vorzunehmen um Abhängigkeitskonflikte vorab aufzulösen. Über Source-RPMs (srpm) ist man da sogar noch flexibler.

    Daher stand für mich persönlich der Aufwand, mich in Nix einzuarbeiten, in keinerlei Relation zu den potenziellen und aus meiner persönlichen Sicht rein theoretischen Vorteilen.
     
  8. agrajag

    agrajag Thread Starter Mitglied

    Beiträge:
    3.386
    Zustimmungen:
    1.014
    Mitglied seit:
    25.08.2004
    Ja, die Lernkurve ist bei Nix/NixOS höher. Mich hat hier die Tatsache so angefixt, daß es ein Paketmanager, Configurations- und Provisionierungstool in einem ist, also sowas wie Ansible und Vagrant built in ist.

    Inwiefern war die Konfiguration eine Pest?

    Ich hatte es seit den letzten 20 Jahren immer mal wieder mit Linux versucht. SUSE, Caldera, Mandriva(?), *buntu… 1-2 hab ich vergessen. Und in allen Fällen hatte es nicht lang gedauert und ein Update/Upgrade hat mir das System zerrissen. Das empfand ich immer sehr ernüchternd, weshalb ich es hier etwas ermutigender fand/finde. Mal schauen wie es sich noch für mich entwickelt. Ich weiß aber auch, daß man Linux auch einacher lernen kann, als mit NixOS. :) So wie eine funktionale Sprachen auch viel steilere Lernkurven haben. Leider hatte ich mir nie die Zeit genommen, um meine Scala-Skills auszubauen. Das hatte spaß gemacht.
     
  9. warnochfrei

    warnochfrei Mitglied

    Beiträge:
    563
    Zustimmungen:
    242
    Mitglied seit:
    02.03.2019
    Nix unter Gentoo bedarf zumindest einiger Konfiguration. Ohne Warnungen habe ich es niemals hinbekommen.

    Fachlich ist Guix das bessere Nix - aber auch da gilt: ganz ehrlich, pkgsrc ist das Beste, was Nichtwindows zurzeit aufbieten kann.
     
  10. agrajag

    agrajag Thread Starter Mitglied

    Beiträge:
    3.386
    Zustimmungen:
    1.014
    Mitglied seit:
    25.08.2004
    Guix kling auch nett.

    Nix auf maOS zu installieren ist so einfach wie Homebrew. nix-darwin sin nochmal 1-2 Handgriffe. Ansonsten passiert da alles weitgehend automatisch.

    Was macht pkgsrc für dich so sexy? Und was meinst du mit "was Nichtwindows zurzeit aufbieten kann"? Gibt es den ultimativen Paketmanager ausgerechnet für Windows?
     
  11. warnochfrei

    warnochfrei Mitglied

    Beiträge:
    563
    Zustimmungen:
    242
    Mitglied seit:
    02.03.2019
    Ja, Chocolatey. So etwas würde ich mir für andere Systeme wünschen. - Nachtrag: Nein, anders formuliert: pkgsrc ist nur unter Nichtwindows relevant, weil es unter Windows nicht nativ unterstützt wird. ;)

    pkgsrc hat eben, anders als Homebrew, MacPorts usw., genau den Charme, dass es unglaublich portabel ist, was wegen der Vielzahl an Anwendern sowohl das Angebot an enthaltener Software vervielfacht als auch die Pakete ausführlich patchen lässt, weil Fehler meist immer nur auf den Systemen auftreten, die man selbst nicht hat. Ich gebe aber zu, sehr viel Zeit mit BSDs verbracht zu haben, wo pkgsrc der Quasistandard ist. Vielleicht prägt das.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Nix Paketmanager – hat es hier schon jemand ausprobiert? Mac OS - Unix & Terminal 07.06.2018
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite weitersurfst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...