Leer archivos desde un repositorio remoto usando nixOs

Leer archivos desde un repositorio remoto usando nixOs

Estoy creando un proyecto utilizando el sistema de paquetes nixOs. Tengo un repositorio git remoto que contiene diferentes archivos de configuración. Quiero acceder a esos archivos usando nix, sin editar el repositorio remoto.

El proyecto accedería al repositorio remoto con un hash de confirmación específico. ¿Alguien podría ayudarme? Gracias.

Respuesta1

Aquí hay una breve derivación que lee un archivo de un repositorio de git remoto que no contiene ninguna configuración de 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;
}

Si se guardara en un archivo llamado count-remote-lines.nix, entonces el nix-buildcomando colocaría el resultado en una carpeta local llamada result:

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

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

Alternativamente, para solucionar mejor el proceso de compilación de la derivación recorriéndolo paso a paso en un shell interactivo, intente:

$ 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

Los comandos de compilación restantes están documentados en man nix-shell, en Ejemplos.También en páginas wiki como ésta.

información relacionada