nixOsを使用してリモートリポジトリからファイルを読み取る

nixOsを使用してリモートリポジトリからファイルを読み取る

私は nixOs パッケージ システムを使用してプロジェクトを構築しています。さまざまな設定ファイルを含むリモート git リポジトリがあります。リモート リポジトリを編集せずに、nix を使用してこれらのファイルにアクセスしたいと考えています。

プロジェクトは、特定のコミット ハッシュを使用してリモート リポジトリにアクセスします。どなたか助けていただけませんか。よろしくお願いします。

答え1

以下は、Nix 構成を含まないリモート Git リポジトリからファイルを読み取る短い派生です。

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;
}

という名前のファイルに保存された場合count-remote-lines.nixnix-buildコマンドは出力を という名前のローカル フォルダーに格納しますresult

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

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

あるいは、対話型シェルでステップ実行して派生のビルド プロセスをより適切にトラブルシューティングするには、次の操作を試してください。

$ 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

残りのビルド コマンドについてはman nix-shell、「例」に記載されています。このようなウィキページにも記載されています。

関連情報