使用 nixOs 从远程存储库读取文件

使用 nixOs 从远程存储库读取文件

我正在使用 nixOs 软件包系统构建一个项目。我有一个包含不同配置文件的远程 git 存储库。我想使用 nix 访问这些文件,而无需编辑远程存储库。

项目将使用特定的提交哈希访问远程存储库。有人能帮助我吗,谢谢。

答案1

这是一个简短的推导,它从不包含 Nix 配置的远程 git repo 中读取文件:

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 页面也是如此。

相关内容