Leia arquivos do repositório remoto usando nixOs

Leia arquivos do repositório remoto usando nixOs

Estou construindo um projeto usando o sistema de pacotes nixOs. Eu tenho um repositório git remoto contendo diferentes arquivos de configuração. Quero acessar esses arquivos usando nix, sem editar o repositório remoto.

O projeto acessaria o repositório remoto com um hash de commit específico. Alguém poderia me ajudar, obrigado.

Responder1

Aqui está uma breve derivação que lê um arquivo de um repositório git remoto que não contém nenhuma configuração 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;
}

Se fosse salvo em um arquivo chamado count-remote-lines.nix, o nix-buildcomando colocaria a saída em uma pasta local chamada result:

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

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

Como alternativa, para solucionar melhor o processo de construção da derivação percorrendo-o em um shell interativo, tente:

$ 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

Os comandos de construção restantes estão documentados em man nix-shellExemplos.Também em páginas wiki como esta.

informação relacionada