Extras
Injecting srcFiles into a build
Enable repository-backed files at the template's top level:
pointy.type.derivation = {
withSrcFiles = true;
};The stdlib symlinks each top-level entry from srcFiles/<step-id>/ into the build working directory during unpacking. If the directory is absent, there is nothing to unpack. srcFiles/ is optional; create it when you first add a source file. The UI exposes the same files for browsing and editing. Treat them as read-only build inputs; write generated files elsewhere and copy results into $out.
Injecting typed column metadata via extras
For CSV/TSV output, add this at the template's top level:
extras = "csv";The stdlib attaches a separate scanner derivation as meta.pointy.extras. It mirrors output directories with meta.json files describing column types and nullability. This lets the grid viewer sort numbers as numbers. extras = "fastq"; instead scans FASTQ files for read counts; a line count not divisible by four fails that scan.
Metadata is requested per folder. Pointy can build missing extras in the background, and a failed scan does not prevent ordinary file browsing. Each returned meta.json is limited to 10 MiB. CSV scans default to 2 CPUs and 2 GiB of RAM; FASTQ scans default to 1 CPU and 1 GiB.
For a custom extras builder, omit the top-level shorthand and attach your derivation under mkDerivation.passthru.meta.pointy.extras. It should expose requirements = { cpu; ram; ior; iow; } for scheduling. The public pointyLib.csvExtras and pointyLib.fastqExtras helpers accept { pkgs; baseDrv; requirements?; }, where baseDrv can be the builder's public argument.
A CSV folder's metadata looks like this, keyed by filename with columns in header order:
{
"results.csv": {
"delimiter": ",",
"hasHeader": true,
"columns": [
{ "type": "string", "nullable": false },
{ "type": "float", "nullable": true }
]
}
}Supported column types are int, float, and string. Unknown types and columns beyond the supplied schema fall back to strings.
