Lesen Sie Dateien aus einem Remote-Repository mit nixOs

Lesen Sie Dateien aus einem Remote-Repository mit nixOs

Ich erstelle ein Projekt mit dem Paketsystem nixOs. Ich habe ein Remote-Git-Repository, das verschiedene Konfigurationsdateien enthält. Ich möchte mit nix auf diese Dateien zugreifen, ohne das Remote-Repository zu bearbeiten.

Das Projekt würde mit einem bestimmten Commit-Hash auf das Remote-Repository zugreifen. Kann mir jemand helfen? Danke.

Antwort1

Hier ist eine kurze Ableitung, die eine Datei aus einem Remote-Git-Repo liest, das keine Nix-Konfiguration enthält:

with (import <nixpkgs> { });
let
  repo = fetchFromGitHub {
    owner = "nix-community";
    repo = "awesome-nix";
    rev = "c4adba38dc2ec33aa0f692cc5fcb9677b123087c";
    sha256 = "cF9sh3vrDwTh64ZkgyEuJKmmA4UhbnXw8x4cnBMeGHk=";
  };
in stdenv.mkDerivation {
  name = "count-repo-lines";
  src = repo;
  buildPhase = ''
    mkdir $out
    wc -l ./README.md > linecount
  '';
  installPhase = ''
    cp linecount $out/linecount
  '';
  system = builtins.currentSystem;
}

Wenn es in einer Datei mit dem Namen gespeichert würde count-remote-lines.nix, würde der nix-buildBefehl die Ausgabe in einem lokalen Ordner mit dem Namen ablegen result:

$ nix-build ./count-remote-lines.nix
...various log messages...

$ cat ./result/linecount 
154 ./README.md

Alternativ können Sie den Build-Prozess der Ableitung besser beheben, indem Sie ihn in einer interaktiven Shell durchgehen. Versuchen Sie Folgendes:

$ nix-shell ./count-repo-lines.nix --pure

$ unpackPhase
unpacking source archive /nix/store/xaff1yqipbpazhp9jz22rjp7izbglzr5-source
source root is source

$ cd source
$ ls
CONTRIBUTING.md  LICENSE  README.md

Die restlichen Build-Befehle sind man nix-shellunter „Beispiele“ dokumentiert.Auch in Wiki-Seiten wie dieser.

verwandte Informationen