config/pkgs/gamja.nix

66 lines
1.6 KiB
Nix

{
lib,
gamja,
fetchFromSourcehut,
buildNpmPackage,
runCommand,
python3,
writeText,
brotli,
zopfli,
xorg,
# optional configuration attrSet, see https://git.sr.ht/~emersion/gamja#configuration-file for possible values
gamjaConfig ? null,
}:
buildNpmPackage rec {
pname = "gamja";
version = "1.0.0-beta.9";
src = fetchFromSourcehut {
owner = "~emersion";
repo = "gamja";
rev = "v${version}";
hash = "sha256-09rCj9oMzldRrxMGH4rUnQ6wugfhfmJP3rHET5b+NC8=";
};
npmDepsHash = "sha256-LxShwZacCctKAfMNCUMyrSaI1hIVN80Wseq/d8WITkc=";
# without this, the aarch64-linux build fails
nativeBuildInputs = [python3];
installPhase = ''
runHook preInstall
cp -r dist $out
${lib.optionalString (gamjaConfig != null) "cp ${writeText "gamja-config" (builtins.toJSON gamjaConfig)} $out/config.json"}
runHook postInstall
'';
passthru = {
data-compressed =
runCommand "soju-data-compressed" {
nativeBuildInputs = [brotli zopfli xorg.lndir];
} ''
mkdir $out
lndir ${gamja}/ $out/
find $out \
-name '*.css' -or \
-name '*.js' -or \
-name '*.map' -or \
-name '*.webmanifest' -or \
-name '*.html' | \
tee >(xargs -n1 -P''$(nproc) ${zopfli}/bin/zopfli) | \
xargs -n1 -P''$(nproc) ${brotli}/bin/brotli
'';
};
meta = with lib; {
description = "A simple IRC web client";
homepage = "https://git.sr.ht/~emersion/gamja";
license = licenses.agpl3Only;
maintainers = with maintainers; [motiejus];
};
}