110 lines
2.8 KiB
Nix
110 lines
2.8 KiB
Nix
{
|
|
lib,
|
|
stdenvNoCC,
|
|
fetchFromGitHub,
|
|
nanoemoji,
|
|
python3Packages,
|
|
woff2,
|
|
xmlstarlet,
|
|
# available color formats: ["cbdt" "glyf_colr_0" "glyf_colr_1" "sbix" "picosvgz" "untouchedsvgz"]
|
|
# available black formats: ["glyf"]
|
|
fontFormats ? [
|
|
"glyf"
|
|
"cbdt"
|
|
"glyf_colr_0"
|
|
"glyf_colr_1"
|
|
],
|
|
# when at least one of the glyf_colr_0/1 formats is specified, whether to build maximum color fonts
|
|
# "none" to not build any, "svg" to build colr+svg, "bitmap" to build cbdt+colr+svg fonts
|
|
buildMaximumColorFonts ? "bitmap",
|
|
}:
|
|
let
|
|
# all available methods
|
|
methods = {
|
|
black = [ "glyf" ];
|
|
color = [
|
|
"cbdt"
|
|
"glyf_colr_0"
|
|
"glyf_colr_1"
|
|
"sbix"
|
|
"picosvgz"
|
|
"untouchedsvgz"
|
|
];
|
|
};
|
|
in
|
|
|
|
assert lib.asserts.assertEachOneOf "fontFormats" fontFormats (methods.black ++ methods.color);
|
|
assert lib.asserts.assertOneOf "buildMaximumColorFonts" buildMaximumColorFonts [
|
|
"none"
|
|
"bitmap"
|
|
"svg"
|
|
];
|
|
|
|
stdenvNoCC.mkDerivation rec {
|
|
pname = "openmoji";
|
|
version = "15.0.0";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "hfg-gmuend";
|
|
repo = pname;
|
|
rev = version;
|
|
hash = "sha256-659ONkHU45Z2789ay0yLero9j5nFWhslpJad++4oNN8=";
|
|
};
|
|
|
|
patches = [
|
|
# fix paths and variables for nix build and skip generating font demos
|
|
./build.patch
|
|
];
|
|
|
|
nativeBuildInputs = [
|
|
nanoemoji
|
|
python3Packages.fonttools
|
|
woff2
|
|
xmlstarlet
|
|
];
|
|
|
|
methods_black = builtins.filter (m: builtins.elem m fontFormats) methods.black;
|
|
methods_color = builtins.filter (m: builtins.elem m fontFormats) methods.color;
|
|
saturations =
|
|
lib.optional (methods_black != [ ]) "black"
|
|
++ lib.optional (methods_color != [ ]) "color";
|
|
maximumColorVersions = lib.optionals (buildMaximumColorFonts != "none") (
|
|
lib.optional (builtins.elem "glyf_colr_0" fontFormats) "0"
|
|
++ lib.optional (builtins.elem "glyf_colr_1" fontFormats) "1"
|
|
);
|
|
|
|
postPatch = lib.optionalString (buildMaximumColorFonts == "bitmap") ''
|
|
substituteInPlace helpers/generate-fonts-runner.sh \
|
|
--replace 'maximum_color' 'maximum_color --bitmaps'
|
|
'';
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
bash helpers/generate-fonts-runner.sh "$(pwd)/build" "${version}"
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/share/fonts/truetype $out/share/fonts/woff2
|
|
cp build/fonts/*/*.ttf $out/share/fonts/truetype/
|
|
cp build/fonts/*/*.woff2 $out/share/fonts/woff2/
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = with lib; {
|
|
license = licenses.cc-by-sa-40;
|
|
maintainers = with maintainers; [
|
|
_999eagle
|
|
fgaz
|
|
];
|
|
platforms = platforms.all;
|
|
homepage = "https://openmoji.org/";
|
|
downloadPage = "https://github.com/hfg-gmuend/openmoji/releases";
|
|
description = "Open-source emojis for designers, developers and everyone else";
|
|
};
|
|
}
|