Personal save-for-later and Miniflux e-reader proxy for Xteink X4 (wip)
1{
2 lib,
3 stdenv,
4 nodejs_22,
5 pnpm,
6 pnpmConfigHook,
7 fetchPnpmDeps,
8 makeWrapper,
9}:
10
11stdenv.mkDerivation (finalAttrs: {
12 pname = "nightshade";
13 version = "0.1.0";
14
15 src = lib.fileset.toSource {
16 root = ./.;
17 fileset = lib.fileset.unions [
18 ./package.json
19 ./pnpm-lock.yaml
20 ./tsconfig.json
21 ./vite.config.ts
22 ./src
23 ./lexicons
24 ];
25 };
26
27 pnpmDeps = fetchPnpmDeps {
28 inherit (finalAttrs) pname version src;
29 fetcherVersion = 1;
30 hash = "sha256-f1tDsiw0P4AXGYP4J+k7wMUB2AY0xAmVc4RgoEtve7E=";
31 };
32
33 nativeBuildInputs = [
34 nodejs_22
35 pnpm
36 pnpmConfigHook
37 makeWrapper
38 ];
39
40 buildPhase = ''
41 runHook preBuild
42 pnpm run build
43 runHook postBuild
44 '';
45
46 installPhase = ''
47 runHook preInstall
48
49 mkdir -p $out/share/nightshade
50 cp -r \
51 package.json \
52 tsconfig.json \
53 src \
54 dist \
55 node_modules \
56 $out/share/nightshade/
57
58 mkdir -p $out/bin
59 makeWrapper ${nodejs_22}/bin/node $out/bin/nightshade \
60 --add-flags "--import=$out/share/nightshade/node_modules/tsx/dist/loader.mjs" \
61 --add-flags "$out/share/nightshade/src/server/index.ts"
62
63 runHook postInstall
64 '';
65
66 meta = {
67 description = "Personal save-for-later + e-reader proxy for Miniflux (atproto-backed)";
68 mainProgram = "nightshade";
69 platforms = lib.platforms.unix;
70 };
71})