Чтение файлов из удаленного репозитория с помощью nixOs

Я создаю проект, используя систему пакетов nixOs. У меня есть удаленный репозиторий git, содержащий разные файлы конфигурации. Я хочу получить доступ к этим файлам с помощью nix, не редактируя удаленный репозиторий.

Проект получит доступ к удаленному репозиторию с помощью определенного хэша фиксации. Может кто-нибудь мне помочь, спасибо.

1 ответ

Вот короткая версия, которая считывает файл из удаленного репозитория git, который не содержит конфигурации Nix:

      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

В качестве альтернативы, чтобы лучше устранить неполадки процесса сборки производного, пройдя его в интерактивной оболочке, попробуйте:

      $ 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в разделе «Примеры». Также на вики-страницах, таких как эта.

Другие вопросы по тегам