1{
2 runCommand,
3 stdenv,
4 lib,
5 libxslt,
6 fontconfig,
7 dejavu_fonts,
8}:
9
10let
11 fontconfig_ = fontconfig;
12in
13{
14 fontconfig ? fontconfig_,
15 # an array of fonts, e.g. `[ pkgs.dejavu_fonts.minimal ]`
16 fontDirectories,
17 impureFontDirectories ? [
18 # nix user profile
19 "~/.nix-profile/lib/X11/fonts"
20 "~/.nix-profile/share/fonts"
21 ]
22 ++ lib.optional stdenv.hostPlatform.isDarwin "~/Library/Fonts"
23 ++ [
24 # FHS paths for non-NixOS platforms
25 "/usr/share/fonts"
26 "/usr/local/share/fonts"
27 ]
28 # darwin paths
29 ++ lib.optionals stdenv.hostPlatform.isDarwin [
30 "/Library/Fonts"
31 "/System/Library/Fonts"
32 ]
33 # nix default profile
34 ++ [
35 "/nix/var/nix/profiles/default/lib/X11/fonts"
36 "/nix/var/nix/profiles/default/share/fonts"
37 ],
38
39 # to include custom config
40 includes ? [ "/etc/fonts/conf.d" ],
41}:
42
43runCommand "fonts.conf"
44 {
45 nativeBuildInputs = [ libxslt ];
46 buildInputs = [ fontconfig ];
47 inherit fontDirectories includes;
48 # Add a default font for non-nixos systems, <1MB and in nixos defaults.
49 impureFontDirectories = impureFontDirectories ++ [ dejavu_fonts.minimal ];
50 }
51 ''
52 xsltproc --stringparam fontDirectories "$fontDirectories" \
53 --stringparam impureFontDirectories "$impureFontDirectories" \
54 --stringparam includes "$includes" \
55 --path ${fontconfig.out}/share/xml/fontconfig \
56 ${./make-fonts-conf.xsl} ${fontconfig.out}/etc/fonts/fonts.conf \
57 > $out
58 ''