blob: 14b9844ce44baa887458eb5c095fb0589d096f1a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
{
lib,
buildNpmPackage,
fetchFromGitHub,
git,
geist-font,
defaultHostname ? "127.0.0.1",
defaultPort ? 3000,
}:
buildNpmPackage (finalAttrs: {
pname = "bulwark";
version = "1.6.5";
nativeBuildInputs = [ git ];
src = fetchFromGitHub {
owner = "bulwarkmail";
repo = "webmail";
tag = "${finalAttrs.version}";
hash = "sha256-U2bXylfyRLh7d0PA8UNO5Jdi0jg2U//rJlohPJwaPUQ=";
};
npmDepsHash = "sha256-DLRXDM/PUqcjwX66hwvzALIKS016E7s3u/VDuYStYXA=";
npmPackFlags = [ "--ignore-scripts" ];
NODE_OPTIONS = [ "--openssl-legacy-provider" ];
patches = [
./0001-use-local-google-fonts.patch
];
preBuild = ''
# TODO: BASE_PATH
cp ${geist-font}/share/fonts/opentype/Geist{,Mono}-Regular.otf ./app/
'';
postBuild = ''
sed -i '1s|^|#!/usr/bin/env node \n|' .next/standalone/server.js
patchShebangs .next/standalone/server.js
'';
installPhase = ''
runHook preInstall
mkdir -p $out/{share,bin}
cp -r .next/standalone $out/share/homepage/
cp -r .next/standalone $out/share/homepage/data/
# cp -r .env $out/share/homepage/
cp -r public $out/share/homepage/public
mkdir -p $out/share/homepage/.next
cp -r .next/static $out/share/homepage/.next/static
# https://github.com/vercel/next.js/discussions/58864
ln -s /var/cache/bulwark $out/share/homepage/.next/cache
# also provide a environment variable to override the cache directory
substituteInPlace $out/share/homepage/node_modules/next/dist/server/image-optimizer.js \
--replace '_path.join)(distDir,' '_path.join)(process.env["NEXT_CACHE_DIR"] || distDir,'
chmod +x $out/share/homepage/server.js
# we set a default port to support "nix run ..."
makeWrapper $out/share/homepage/server.js $out/bin/bulwark \
--set-default PORT ${toString defaultPort} \
--set-default HOSTNAME ${defaultHostname} \
runHook postInstall
'';
meta = {
description = "Bulwark JMAP Webmail :3";
homepage = "https://bulwarkmail.org";
license = lib.licenses.agpl3Only;
};
})
|