Nix

使用 nixOs 從遠端儲存庫中讀取文件

  • January 9, 2021

我正在使用 nixOs 包系統建構一個項目。我有一個包含不同配置文件的遠端 git repo。我想使用 nix 訪問這些文件,而無需編輯遠端倉庫。

該項目將使用特定的送出雜湊訪問遠端倉庫。誰能幫幫我,謝謝。

這是一個簡短的派生,它從不包含 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 頁面中,例如這個頁面。

引用自:https://serverfault.com/questions/1049079