1{
2 lib,
3 stdenvNoCC,
4 libsass,
5 nodejs,
6 pnpm_9,
7 fetchFromGitHub,
8 nixosTests,
9 vips,
10}:
11
12let
13 pinData = lib.importJSON ./pin.json;
14
15in
16
17stdenvNoCC.mkDerivation (finalAttrs: {
18
19 pname = "lemmy-ui";
20 version = pinData.uiVersion;
21
22 src =
23 with finalAttrs;
24 fetchFromGitHub {
25 owner = "LemmyNet";
26 repo = pname;
27 rev = version;
28 fetchSubmodules = true;
29 hash = pinData.uiHash;
30 };
31
32 nativeBuildInputs = [
33 nodejs
34 pnpm_9.configHook
35 ];
36
37 buildInputs = [
38 libsass
39 vips
40 ];
41
42 extraBuildInputs = [ libsass ];
43 pnpmDeps = pnpm_9.fetchDeps {
44 inherit (finalAttrs) pname version src;
45 fetcherVersion = 1;
46 hash = pinData.uiPNPMDepsHash;
47 };
48
49 buildPhase = ''
50 runHook preBuild
51
52 pnpm build:prod
53
54 runHook postBuild
55 '';
56
57 # installPhase = ''
58 # runHook preInstall
59
60 # mkdir -p $out/{bin,lib/${finalAttrs.pname}}
61 # mv {dist,node_modules} $out/lib/${finalAttrs.pname}
62
63 # runHook postInstall
64
65 # '';
66 preInstall = ''
67 mkdir $out
68 cp -R ./dist $out
69 cp -R ./node_modules $out
70 '';
71
72 preFixup = ''
73 find $out -name libvips-cpp.so.42 -print0 | while read -d $'\0' libvips; do
74 echo replacing libvips at $libvips
75 rm $libvips
76 ln -s ${lib.getLib vips}/lib/libvips-cpp.so.42 $libvips
77 done
78 '';
79
80 distPhase = "true";
81
82 passthru.updateScript = ./update.py;
83 passthru.tests.lemmy-ui = nixosTests.lemmy;
84 passthru.commit_sha = finalAttrs.src.rev;
85
86 meta = with lib; {
87 description = "Building a federated alternative to reddit in rust";
88 homepage = "https://join-lemmy.org/";
89 license = licenses.agpl3Only;
90 maintainers = with maintainers; [
91 happysalada
92 billewanick
93 georgyo
94 ];
95 inherit (nodejs.meta) platforms;
96 };
97})