使用 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.nix,則該nix-build命令會將輸出放入名為 的本機資料夾中result

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

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

或者,為了透過在互動式 shell 中單步執行來更好地排除派生建置過程的故障,請嘗試:

$ 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範例下。也在 wiki 頁面中,例如這個頁面。

相關內容