Bitte beachten Sie, dass mindestens seit dem 30.03.2017 (entspricht 17.03 Nix/NixOS Channel/Release), soweit ich die offizielle, moderne, unterstützte und vorgeschlagene Lösung verstehe, die so genannten Overlays verwenden.
Siehe Chapter 11, Overlays, im nixpkgs Handbuch für eine nette Anleitung zur Verwendung des neuen Ansatzes.
Als kurze Zusammenfassung: Sie eine beliebige Anzahl von Dateien mit .nix Erweiterung in $HOME/.config/nixpkgs/overlays/
Verzeichnis setzen. Sie werden in alphabetischer Reihenfolge verarbeitet und jeder kann die verfügbaren Nix-Pakete ändern. Jede der Dateien müssen in dem folgenden Muster geschrieben werden:
self: super:
{
boost = super.boost.override {
python = self.python3;
};
rr = super.callPackage ./pkgs/rr {
stdenv = self.stdenv_32bit;
};
}
Der super
Satz entspricht dem „alten“ Satz von Paketen (vor der Überlagerung angewendet wurde). Wenn Sie auf die alte Version eines Pakets (wie oben in boost
) oder callPackage
verweisen möchten, sollten Sie es über super
referenzieren.
Der Satz self
entspricht dem eventuellen "zukünftigen" Satz von Paketen, der das Endergebnis darstellt, nachdem alle Überlagerungen angewendet wurden. (Hinweis: keine Angst, wenn sie manchmal mit vielleicht von Nichts abgelehnt bekommen, wie es in Endlosschleife führen würde Wahrscheinlich sollten Sie lieber verwenden nur super
in den Fällen statt..)
Hinweis: mit Die obigen Änderungen, die Lösung, die ich unten in der ursprünglichen Antwort erwähne, scheint jetzt "veraltet" - ich glaube, es sollte noch ab April 2017 funktionieren, aber ich habe keine Ahnung, wie lange. Es erscheint marked as "obsolete" in the nixpkgs repository.
Alte Antwort, bevor 17.03:
Angenommen, Sie apps pro Benutzer sichtbar on per-user basis, not system-wide, (als Nicht-NixOS Nichts hält so weit Anwendungen synchronisieren, wie ich weiß,), es ist möglich, es deklarativ zu tun. Es ist einfach nicht gut in der Anleitung beworben —, obwohl es sehr beliebt bei langjährigen Nixers scheint!
Sie müssen eine Textdatei erstellen unter: $HOME/.nixpkgs/config.nix
— z.:
$ mkdir -p ~/.nixpkgs
$ $EDITOR ~/.nixpkgs/config.nix
dann folgenden Inhalt ein:
{
packageOverrides = defaultPkgs: with defaultPkgs; {
home = with pkgs; buildEnv {
name = "home";
paths = [
nethack mc pstree #...your favourite pkgs here...
];
};
};
}
Dann sollten Sie in der Lage sein, alle aufgelisteten Pakete zu installieren mit:
$ nix-env -i home
or:
$ nix-env -iA nixos.home # *much* faster than above
In paths
Sie Material in ähnlicher Weise setzen können wie in /etc/nixos/configuration.nix
auf NixOS. Auch ist home
eigentlich ein "gefälschtes Paket" hier. Sie können weitere benutzerdefinierte Paketdefinitionen hinzufügen und ihnen dann Ihre "Pfade" hinzufügen.
(Randbemerkung:. Ich hoffe, mit einer Blog-Post zu schreiben, was ich gelernt, wie genau das funktioniert, und auch zeigt, wie es mit mehr Anpassungen zu erweitern Ich werde versuchen, es zu erinnern, hier zu verlinken wenn ich erfolgreich bin.)
Vielen Dank! Genau das habe ich gesucht. Ich wünschte, es wäre besser in der offiziellen Anleitung für Anfänger wie mich dokumentiert. – Lewis
Blogpost bitte! :) – tlo
@tlo WILCO :) Es braut sich immer noch, ich bin ein langsamer Schriftsteller. Übrigens, wenn Sie die Gelegenheit nutzen - wären Sie mehr daran interessiert, * * früher (d. H. Nutzung) * oder * "wie genau das funktioniert" (d. H. Interna) zu lesen? Ich bin an einem Verzweigungspunkt mit, wie man die Reihe plant, also ist es ein perfekter Moment, es zu beeinflussen :) – akavel