Wie installiere ich ein einmaliges Paket in NixOS?

9

Ich habe eine NixOS-Box, die ich auf dem nixos-16.03Kanal habe. Ich möchte, dass die Maschine in einem weitgehend stabilen Zustand bleibt, und möchte daher vermeiden, auf den nixos-unstableKanal umzuschalten.

Ich muss jedoch eine neuere Version eines Pakets installieren, als in diesem Kanal verfügbar ist ( nodejs-6_xin diesem Fall). Im Handbuch gibt es einen Abschnitt, der die One-Click-Installation beschreibt , der auf den ersten Blick genau das schien, was ich brauchte. Der Hydra-Server unter http://hydra.nixos.org scheint jedoch keine .nixpkgDateien bereitzustellen, die von dem nix-install-packagein diesem Abschnitt beschriebenen Tool verwendet werden .

Das Wiki dokumentiert auch einen Prozess, mit dem man ein Paket anpassen kann (die Seite heißt " Pakete ändern" ), das vermutlich für meine Zwecke verwendet werden könnte, obwohl es so aussieht, als würde ich das Tool eher bekämpfen als verwenden .

Ich habe auch im IRC danach gefragt (danke M-Ralithfür die geduldige Beantwortung meiner unwissenden Fragen!), Aber ich habe nicht ganz verstanden, wie ich es anwenden soll. Der Rat war, "src und version in Ihrer nixpkgs-Konfiguration zu überschreiben", was so klingt, als könnte ich einen nix-Ausdruck schreiben .nixpkgs/configuration.nixund diese Eigenschaften für das Paket in meinem abonnierten Kanal ( nixos-16.03) überschreiben . Als ich nach Paketen fragte, die nicht im Kanal vorhanden sind, lautete der Rat, "das gesamte Paket anzugeben, anstatt nur src und version zu überschreiben", was bedeutet, dass ich den gesamten nix-Ausdruck für das Paket duplizieren müsste Ich bin interessiert an.nix-env

Gibt es für Pakete, die in einem anderen Kanal vorhanden sind , den ich installieren möchte, aber auf meinem aktuellen Kanal bleiben, einen besseren Weg? Es fühlt sich fast so an, als ob ich in der Lage sein sollte, so etwas zu tun nix-build <url> | nix-env -i. Ideal wäre es, diese zu installieren, aber keine Konfiguration zu haben, die möglicherweise verhindert, dass sie später aktualisiert wird, wenn mein aktueller Kanal aufholt.

Ben Collins
quelle

Antworten:

8

Sie können nix-envWerkzeug verwenden

% nix-env -f https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz -iA tig

oder nix-buildWerkzeug verwenden

% nix-build -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz -A tig

wie das hilft!

Rok Garbas
quelle