forked from
ptr.pet/faunu
endpoint 2.0
dysnomia.ptr.pet
1{
2 lib,
3 stdenv,
4 deno,
5 nodejs,
6 makeBinaryWrapper,
7 callPackage,
8 faunu-modules ? callPackage ./modules.nix {},
9 faunu-wasm ? callPackage ./wasm.nix {},
10 PUBLIC_BASE_URL ? "http://localhost:5173",
11}:
12stdenv.mkDerivation {
13 name = "faunu";
14
15 src = lib.fileset.toSource {
16 root = ../.;
17 fileset = lib.fileset.unions [
18 ../.npmrc
19 ../deno.lock
20 ../deno.json
21 ../www
22 ];
23 };
24
25 nativeBuildInputs = [makeBinaryWrapper];
26 buildInputs = [deno];
27
28 inherit PUBLIC_BASE_URL;
29
30 dontCheck = true;
31
32 configurePhase = ''
33 runHook preConfigure
34 cp -R --no-preserve=ownership,mode ${faunu-modules} node_modules
35 find node_modules -type d -exec chmod 755 {} \;
36 find -L node_modules -type f -path '*/bin/*' -exec chmod +x {} \;
37 substituteInPlace node_modules/.bin/vite \
38 --replace-fail "/usr/bin/env node" "${nodejs}/bin/node"
39 ln -sf ${faunu-wasm} pkg
40 runHook postConfigure
41 '';
42 buildPhase = ''
43 runHook preBuild
44 HOME=$TMPDIR deno task --cwd www --frozen build
45 runHook postBuild
46 '';
47 installPhase = ''
48 runHook preInstall
49
50 mkdir -p $out
51 cp -R ./www/dist/* $out
52
53 runHook postInstall
54 '';
55}