98 lines
1.9 KiB
Nix
98 lines
1.9 KiB
Nix
{
|
|
stdenvNoCC,
|
|
runCommandNoCC,
|
|
util-linux,
|
|
moreutils,
|
|
parallel,
|
|
openssl,
|
|
libxml2,
|
|
zopfli,
|
|
brotli,
|
|
rsync,
|
|
yajl,
|
|
stylelint,
|
|
jre,
|
|
python3,
|
|
buildNpmPackage,
|
|
}:
|
|
stdenvNoCC.mkDerivation rec {
|
|
pname = "hakurei.app";
|
|
version = "0.0.2";
|
|
|
|
src = ./.;
|
|
|
|
nodejsEnv = buildNpmPackage {
|
|
pname = "grapheneos-nodejs";
|
|
inherit version;
|
|
src = builtins.path {
|
|
name = "${pname}-nodejs";
|
|
path = ./.;
|
|
filter =
|
|
path: _:
|
|
builtins.elem (/. + path) [
|
|
./package.json
|
|
./package-lock.json
|
|
];
|
|
};
|
|
dontNpmBuild = true;
|
|
npmFlags = [ "--ignore-scripts" ];
|
|
npmDepsHash = "sha256-N3ouirw0B1JtH171/vkA8xtsaQzWnk8+XI2OLaMLeCw=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
util-linux
|
|
(runCommandNoCC "sponge" { } "mkdir -p $out/bin && ln -s ${moreutils}/bin/sponge $out/bin")
|
|
parallel
|
|
openssl
|
|
libxml2
|
|
zopfli
|
|
brotli
|
|
rsync
|
|
yajl
|
|
stylelint
|
|
];
|
|
|
|
buildInputs = [
|
|
jre
|
|
(python3.withPackages (
|
|
packages: with packages; [
|
|
lxml
|
|
cssselect
|
|
|
|
jinja2
|
|
]
|
|
))
|
|
];
|
|
|
|
configurePhase = ''
|
|
runHook preConfigure
|
|
|
|
ln -s ${nodejsEnv}/lib/node_modules/${nodejsEnv.pname}/node_modules
|
|
|
|
runHook postConfigure
|
|
'';
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
sh -x process-static
|
|
|
|
rsync -rpcv --chmod=D755,F644 --delete --fsync --preallocate static-tmp/ static-production
|
|
python3 generate-sitemap.py
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
xmllint --noblanks static-tmp/sitemap.xml --output static-tmp/sitemap.xml
|
|
brotli -f static-tmp/sitemap.xml
|
|
zopfli static-tmp/sitemap.xml
|
|
rsync -rptcv --chmod=D755,F644 --delete --fsync --preallocate static-production/ $out
|
|
rsync -pcv --chmod=D755,F644 --fsync --preallocate static-tmp/sitemap.xml{,.gz,.br} $out
|
|
|
|
runHook postInstall
|
|
'';
|
|
}
|