package hakurei-source {
	description = "hakurei source tree";
	exclude = true;

	version# = "0.4.6";
	output = remoteTar {
		url = "https://git.gensokyo.uk/rosa/hakurei/archive/"+
			"v"+version+".tar.gz";
		checksum = "2HxvdykuSSymAu-c1WIwQAy3qT4dDm8B--93iL4uomBlBC8wfSWldbvPF1noNkUC";
		compress = gzip;
	};
}

package hakurei {
	description = "low-level userspace tooling for Rosa OS";
	website = "https://hakurei.app";
	anitya = 388834;

	source = hakurei-source;
	enterSource = true;
	writable = true;
	chmod = true;

	env = [
		"CGO_ENABLED=1",
		"GOCACHE=/tmp/gocache",
		"CC=clang -O3 -Werror",
	];

	exec = generic {
		chdir = false;
		build = `
mkdir -p /work/system/libexec/hakurei/

echo "Building hakurei for $(go env GOOS)/$(go env GOARCH)."
go generate ./...
go build -trimpath -tags=rosa -o /work/system/libexec/hakurei -ldflags="-s -w
	-buildid=
	-linkmode external
	-extldflags=-static
	-X hakurei.app/internal/info.buildVersion=$(cat cmd/dist/VERSION)
	-X hakurei.app/internal/info.hakureiPath=/system/bin/hakurei
	-X hakurei.app/internal/info.hsuPath=/system/bin/hsu
" ./cmd/hakurei ./cmd/sharefs

echo "Building hsu for $(go env GOOS)/$(go env GOARCH)."
CGO_ENABLED=0 go build -trimpath -tags=rosa -o /work/system/libexec/hakurei -ldflags="-s -w
	-buildid=
	-X main.hakureiPath=/system/bin/hakurei
" ./cmd/hsu
echo`;
		check = `
echo '##### Testing hakurei.'
go test -ldflags='-buildid= -linkmode external -extldflags=-static' ./...
echo`;
		install = `
mkdir -p /work/system/bin/
(cd /work/system/libexec/hakurei && mv \
	hakurei \
	sharefs \
	../../bin/)
`;
	};

	inputs = [
		go,
		pkgconf,
		net-tools,

		libseccomp,
		acl,
		fuse,
		xcb,
		wayland,
		wayland-protocols,
		kernel-headers,
	];
}

package hakurei-dist {
	description = "low-level userspace tooling for Rosa OS (distribution tarball)";
	website = "https://hakurei.app";

	source = hakurei-source;
	enterSource = true;
	writable = true;
	chmod = true;

	env = [
		"CGO_ENABLED=1",
		"GOCACHE=/tmp/gocache",
		"CC=clang -O3 -Werror",
	];

	exec = generic {
		chdir = false;
		build = `
NAME=make`;
		check = `
NAME=all`;
		install = `
DESTDIR=/work "./${NAME}.sh"
`;
	};

	inputs = [
		go,
		pkgconf,
		net-tools,

		libseccomp,
		acl,
		fuse,
		xcb,
		wayland,
		wayland-protocols,
		kernel-headers,
	];
}

package earlyinit {
	description = "Rosa OS initramfs init program";
	exclude = true;

	source = hakurei-source;
	enterSource = true;
	writable = true;
	chmod = true;

	env = [
		"CGO_ENABLED=1",
		"GOCACHE=/tmp/gocache",
		"CC=clang -O3 -Werror",
	];

	exec = generic {
		chdir = false;
		build = `
echo '# Building earlyinit.'
go build -trimpath -v -o /work/ -ldflags="-s -w
	-buildid=
	-linkmode external
	-extldflags=-static
	-X hakurei.app/internal/info.buildVersion=$(cat cmd/dist/VERSION)
" ./cmd/earlyinit
echo`;
	};

	inputs = [ go ];
}
