-
Notifications
You must be signed in to change notification settings - Fork 1
/
build-fonts.nix
48 lines (42 loc) · 1001 Bytes
/
build-fonts.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{
stdenv,
symlinkJoin,
build_pbf_glyphs,
jq,
writeText,
fontconfig,
}: {
name,
fonts,
}:
stdenv.mkDerivation rec {
inherit name;
src = symlinkJoin {
name = "combined-system-fonts";
paths = fonts;
};
buildInputs = [jq fontconfig];
buildPhase = ''
export FONTCONFIG_FILE=${fontconfig.out}/etc/fonts/fonts.conf
export XDG_CACHE_HOME="$(pwd)/cache"
mkdir -p "$XDG_CACHE_HOME/fontconfig"
function build_font() {
IFS=: read -r ifile name <<< "$0"
ext=''${ifile##*.}
mkdir -p tmp-out
mkdir -p tmp-in
ln -s "$ifile" tmp-in/
${build_pbf_glyphs}/bin/build_pbf_glyphs tmp-in/ tmp-out/
mv "tmp-out/$(basename $ifile .$ext)" "fonts/$name"
rm -r tmp-out
rm -r tmp-in
}
export -f build_font
mkdir -p fonts
fc-scan ${src} --format "%{file}:%{fullname}\n" | xargs -n1 -d '\n' sh -c 'build_font "$@"'
'';
installPhase = ''
mkdir -p $out/share
mv fonts $out/share/map-fonts
'';
}