#──────────────────────────────────────────────────────────────────────────────┐
# SPDX-FileCopyrightText: 2026 toastal <https://toast.al/contact/>             │
# SPDX-License-Identifier: LGPL-2.1-or-later                                   │
#──────────────────────────────────────────────────────────────────────────────┘
{
	lib,
	stdenvNoCC,
	ninja-deps,
	esbuild,
	nickel-path,
}:

stdenvNoCC.mkDerivation (finalAttrs: {
	name = "nixtamal-site-script";
	version = "0-unstable";

	src =
		let
			fs = lib.fileset;
		in
		fs.toSource {
			root = ../..;
			fileset = fs.unions [
				../../gen-ninja.sh
				../../ninja.ncl
				../../asset/script
			];
		};

	env = {
		NICKEL_IMPORT_PATH = "${nickel-path}";
	};

	nativeBuildInputs = [
		ninja-deps
		esbuild
	];

	ninjaFlags = [
		"-C"
		"dist"
		"script"
	];

	preBuild = ''
		mkdir -p dist
		dash ./gen-ninja.sh ninja.ncl >dist/build.ninja
	'';

	installPhase = ''
		runHook preInstall

		# TODO: build a proper ninja install
		rsync -a --exclude='**/*.ninja' --exclude='**/*.js.map' dist/ "$out"

		runHook postInstall
	'';
})
