Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I5744837dbf5cb718dd9a293f2fe288a26a6a6964
72 lines
1.4 KiB
Nix
72 lines
1.4 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
nodejs,
|
|
pnpmConfigHook,
|
|
fetchPnpmDeps,
|
|
pnpm,
|
|
makeBinaryWrapper,
|
|
}:
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "troutbot";
|
|
version = "0-unstable-2026-01-30";
|
|
|
|
src = lib.fileset.toSource {
|
|
root = ../.;
|
|
fileset = lib.fileset.unions [
|
|
../src
|
|
../config.example.ts
|
|
../package.json
|
|
../pnpm-lock.yaml
|
|
../tsconfig.json
|
|
];
|
|
};
|
|
|
|
strictDeps = true;
|
|
nativeBuildInputs = [
|
|
nodejs # in case scripts are run outside of a pnpm call
|
|
pnpmConfigHook
|
|
pnpm # at least required by pnpmConfigHook, if not other (custom) phases
|
|
|
|
makeBinaryWrapper
|
|
];
|
|
|
|
pnpmDeps = fetchPnpmDeps {
|
|
inherit (finalAttrs) pname version src;
|
|
fetcherVersion = 3;
|
|
hash = "sha256-y8LV1D+EgGcZ79lmxS20dqYBPEfk4atma+RWf7pJI30=";
|
|
};
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
pnpm run build --outDir dist
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/{bin,share}
|
|
|
|
# Copy transpiled result
|
|
cp -rv dist/* $out/share
|
|
|
|
# Copy the example config
|
|
install -Dm755 config.example.ts $out/share
|
|
|
|
makeWrapper ${lib.getExe nodejs} $out/bin/troutbot \
|
|
--set-default NODE_ENV production \
|
|
--add-flags "$out/share/index.js"
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = {
|
|
description = "The ultimate trout population helper";
|
|
license = lib.licenses.eupl12;
|
|
maintainers = with lib.maintainers; [NotAShelf];
|
|
mainProgram = "troutbot";
|
|
};
|
|
})
|