From cc5baeb412d9ce0d33cbb4a7381c1b121b681a38 Mon Sep 17 00:00:00 2001 From: VoidNoi Date: Sat, 17 May 2025 02:05:04 +0200 Subject: [PATCH] serenityos-emoji-font: init at 0-unstable-2025-05-31 --- .../se/serenityos-emoji-font/package.nix | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 pkgs/by-name/se/serenityos-emoji-font/package.nix diff --git a/pkgs/by-name/se/serenityos-emoji-font/package.nix b/pkgs/by-name/se/serenityos-emoji-font/package.nix new file mode 100644 index 000000000000..e51ad304a65a --- /dev/null +++ b/pkgs/by-name/se/serenityos-emoji-font/package.nix @@ -0,0 +1,112 @@ +{ + lib, + stdenvNoCC, + fetchFromGitHub, + fetchzip, + python3Packages, + fetchpatch2, + parallel, +}: +let + + pixart2svg = stdenvNoCC.mkDerivation { + name = "pixart2svg"; + version = "0-unstable-2021-07-18"; + + src = fetchzip { + name = "pixart2svg"; + url = "https://gist.github.com/m13253/66284bc244deeff0f0f8863c206421c7/archive/f9454958dc0a33cea787cc6fbd7e8e34ba6eb23b.zip"; + hash = "sha256-lNA3qWK/bnUcMM/jrCGEgaX+HAk/DjKJnkE8niYmBDU="; + }; + + patches = + let + urlFor = + name: + "https://raw.githubusercontent.com/linusg/serenityos-emoji-font/11c84f33777a5d5bbe97ef2ffe8b74af7d72d27f/patches/${name}.patch"; + in + [ + (fetchpatch2 { + url = urlFor "0001-pixart2svg-rgba"; + extraPrefix = "./"; + hash = "sha256-/4a6btqp/6yiBnFhr4vI+SWfOopUjzDfOeW1Fs6Z5yU="; + }) + (fetchpatch2 { + url = urlFor "0002-pixart2svg-no-style"; + extraPrefix = "./"; + hash = "sha256-FVurs+bEOat74d2egl21JS5ywdkFKKIsqXSFGSJI8MI="; + }) + (fetchpatch2 { + url = urlFor "0003-pixart2svg-imageio-deprecation-warning"; + extraPrefix = "./"; + hash = "sha256-Vo3JIcXof+AtuEbsczNS3CUaBUEncCR0pnIuY4uF7R4="; + }) + ]; + + installPhase = '' + mkdir -p $out + cp ./pixart2svg.py $out + ''; + }; + +in +stdenvNoCC.mkDerivation { + name = "serenityos-emoji-font"; + version = "0-unstable-2025-05-31"; + + src = fetchFromGitHub { + name = "serenity"; + owner = "SerenityOS"; + repo = "serenity"; + rev = "35fd7a6770144259a05d41dfffbc8092495c4bf2"; + hash = "sha256-i48egESwQKhcEAObSg2zqubgNdkXE5FlNa+Jukvg2X8="; + }; + + strictDeps = true; + + nativeBuildInputs = + [ + pixart2svg + parallel + ] + ++ (with python3Packages; [ + imageio + nanoemoji + numpy + ]); + + buildPhase = '' + runHook preBuild + + mkdir -p svgfiles + + total=$(ls -1 Base/res/emoji/*.png | wc -l) + + parallel -j$NIX_BUILD_CORES \ + echo [{#}/$total] Converting {/} \; python3 ${pixart2svg}/pixart2svg.py {} svgfiles/{/.}.svg \ + ::: Base/res/emoji/*.png; + + nanoemoji --family "SerenityOS Emoji" --output_file "SerenityOS-Emoji.ttf" --color_format glyf_colr_1 svgfiles/*.svg + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/fonts/truetype + cp build/SerenityOS-Emoji.ttf $out/share/fonts/truetype + + runHook postInstall + ''; + + meta = { + description = "SerenityOS pixel art emojis as a TTF"; + homepage = "https://emoji.serenityos.org/"; + license = lib.licenses.bsd2; + maintainers = with lib.maintainers; [ + voidnoi + ]; + platforms = lib.platforms.all; + }; +}