2022-09-25 13:06:44 +00:00
|
|
|
{
|
|
|
|
lib,
|
|
|
|
mkYarnPackage,
|
|
|
|
fetchFromGitea,
|
|
|
|
fetchYarnDeps,
|
|
|
|
fixup_yarn_lock,
|
|
|
|
yarn,
|
|
|
|
nodejs,
|
|
|
|
jpegoptim,
|
|
|
|
oxipng,
|
|
|
|
nodePackages,
|
|
|
|
writeScript,
|
|
|
|
applyPatches,
|
2022-10-30 16:32:16 +00:00
|
|
|
callPackage,
|
2022-09-25 13:06:44 +00:00
|
|
|
}: let
|
|
|
|
source = builtins.fromJSON (builtins.readFile ./source.json);
|
|
|
|
src = applyPatches {
|
|
|
|
src = fetchFromGitea {
|
|
|
|
domain = "akkoma.dev";
|
|
|
|
owner = "AkkomaGang";
|
2023-08-05 15:25:06 +00:00
|
|
|
repo = "akkoma-fe";
|
2022-09-25 13:06:44 +00:00
|
|
|
inherit (source) rev sha256;
|
|
|
|
};
|
2023-08-05 15:25:06 +00:00
|
|
|
patches = [./akkoma-fe.patch ./jxl-polyfill.patch];
|
2022-09-25 13:06:44 +00:00
|
|
|
};
|
2022-10-30 16:32:16 +00:00
|
|
|
nodeOptions = callPackage ../../lib/opensslLegacyProvider.nix {};
|
2022-09-25 13:06:44 +00:00
|
|
|
in
|
|
|
|
mkYarnPackage rec {
|
2023-08-05 15:25:06 +00:00
|
|
|
pname = "akkoma-fe";
|
2022-09-25 13:06:44 +00:00
|
|
|
version = source.date;
|
|
|
|
inherit src;
|
2022-10-27 06:19:29 +00:00
|
|
|
packageJSON = ./package.json;
|
2022-10-09 15:33:31 +00:00
|
|
|
yarnLock = ./yarn.lock;
|
2022-09-25 13:06:44 +00:00
|
|
|
yarnNix = ./yarn.nix;
|
|
|
|
|
|
|
|
nativeBuildInputs = [
|
|
|
|
jpegoptim
|
|
|
|
oxipng
|
|
|
|
nodePackages.svgo
|
|
|
|
];
|
|
|
|
# Build scripts assume to be used within a Git repository checkout
|
|
|
|
patchPhase = ''
|
|
|
|
sed -E -i \
|
|
|
|
-e '/^let commitHash =/,/;$/clet commitHash = "${builtins.substring 0 7 source.rev}";' \
|
|
|
|
build/webpack.prod.conf.js
|
|
|
|
'';
|
2022-12-01 15:37:57 +00:00
|
|
|
configurePhase = ''
|
|
|
|
cp -r $node_modules node_modules
|
|
|
|
for f in $(find node_modules/jxl.js -type f); do chmod -v +w $f; done
|
|
|
|
for f in $(find node_modules/jxl.js -type l);do cp -rv --remove-destination $(readlink $f) $f;done;
|
|
|
|
'';
|
2022-09-25 13:06:44 +00:00
|
|
|
buildPhase = ''
|
2022-10-09 16:06:01 +00:00
|
|
|
export NODE_OPTIONS="${nodeOptions}"
|
2022-09-25 13:06:44 +00:00
|
|
|
yarn build --offline
|
|
|
|
'';
|
|
|
|
installPhase = "cp -rv dist $out";
|
|
|
|
distPhase = ''
|
|
|
|
# (Losslessly) optimise compression of image artifacts
|
|
|
|
find $out -type f -name '*.jpg' -execdir ${jpegoptim}/bin/jpegoptim -w$NIX_BUILD_CORES {} \;
|
|
|
|
find $out -type f -name '*.png' -execdir ${oxipng}/bin/oxipng -o max -t $NIX_BUILD_CORES {} \;
|
|
|
|
find $out -type f -name '*.svg' -execdir ${nodePackages.svgo}/bin/svgo {} \;
|
|
|
|
'';
|
|
|
|
passthru = {
|
2023-08-05 15:25:06 +00:00
|
|
|
updateScript = writeScript "update-akkoma-fe" ''
|
|
|
|
${../../scripts/update-git.sh} https://akkoma.dev/AkkomaGang/akkoma-fe.git akkoma/akkoma-fe/source.json
|
|
|
|
if [ "$(git diff -- akkoma/akkoma-fe/source.json)" ]; then
|
2022-11-21 09:55:15 +00:00
|
|
|
SRC_PATH=$(nix-build -E '(import ./. {}).${pname}.src')
|
2023-08-05 15:25:06 +00:00
|
|
|
${../../scripts/update-yarn.sh} $SRC_PATH akkoma/akkoma-fe
|
2022-11-21 09:55:15 +00:00
|
|
|
fi
|
2022-09-25 13:06:44 +00:00
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
meta = with lib; {
|
2023-08-05 15:25:06 +00:00
|
|
|
description = "Frontend for Akkoma and akkoma";
|
|
|
|
homepage = "https://akkoma.dev/AkkomaGang/akkoma-fe/";
|
2022-09-25 13:06:44 +00:00
|
|
|
license = licenses.agpl3;
|
|
|
|
};
|
|
|
|
}
|