Etapa G capa-de-adaptación #4: plantilla Cargo para imports Rust de nix

El tier de mayor yield (Rust) salía como github sin --bin ni install ⇒ no buildeable. Ahora un
paquete buildRustPackage sale build-ready, con el patrón de la receta ripgrep.

- nix_import.rs: NixPkg gana is_rust + main_program. Si is_rust ⇒ flags=["--bin", <bin>] (bin =
  meta.mainProgram, ripgrep→rg) + install "cp target/release/<bin> /out/usr/bin/<bin>". +1 test.
- nix-import.sh: detecta Rust por `hasAttr "cargoDeps" p`; main_program = meta.mainProgram or pname.
- Validado real: import fd → repo+commit, flags=["--bin","fd"], install template. Build-ready
  (sólo el commit es tag, no SHA — refinamiento aparte). 31 suites verde.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-21 08:21:47 -04:00
co-authored by Claude Opus 4.8
parent b66cae91ae
commit c3f890c7d1
2 changed files with 43 additions and 2 deletions
+3
View File
@@ -31,6 +31,9 @@ json=$(nix eval $NIXFLAGS --json "${NIXPKGS}#${ATTR}" --apply '
configure_flags = p.configureFlags or [];
build_inputs = builtins.filter (s: s != "") (map (x: x.pname or x.name or "") (p.buildInputs or []));
native_build_inputs = builtins.filter (s: s != "") (map (x: x.pname or x.name or "") (p.nativeBuildInputs or []));
# Rust: buildRustPackage setea cargoDeps ⇒ activa la plantilla Cargo del importador.
is_rust = builtins.hasAttr "cargoDeps" p;
main_program = p.meta.mainProgram or p.pname or "";
}')
printf '%s' "$json" | $HAMMER import-nix -