makeFontsConf: add impureFontDirectories argument

authored by Vincenzo Mantova and committed by Matthieu Coudron 9de711cf ffe149b1

+26 -15
+17 -4
pkgs/development/libraries/fontconfig/make-fonts-conf.nix
··· 1 - { runCommand, stdenv, lib, libxslt, fontconfig, dejavu_fonts, fontDirectories }: 2 3 runCommand "fonts.conf" 4 { 5 nativeBuildInputs = [ libxslt ]; 6 buildInputs = [ fontconfig ]; 7 # Add a default font for non-nixos systems, <1MB and in nixos defaults. 8 - fontDirectories = fontDirectories ++ [ dejavu_fonts.minimal ] 9 - # further non-nixos fonts on darwin 10 - ++ lib.optionals stdenv.isDarwin [ "/System/Library/Fonts" "/Library/Fonts" "~/Library/Fonts" ]; 11 } 12 '' 13 xsltproc --stringparam fontDirectories "$fontDirectories" \ 14 --path ${fontconfig.out}/share/xml/fontconfig \ 15 ${./make-fonts-conf.xsl} ${fontconfig.out}/etc/fonts/fonts.conf \ 16 > $out
··· 1 + { runCommand, stdenv, lib, libxslt, fontconfig, dejavu_fonts, fontDirectories 2 + , impureFontDirectories ? [ 3 + # nix user profile 4 + "~/.nix-profile/lib/X11/fonts" "~/.nix-profile/share/fonts" 5 + ] 6 + ++ lib.optional stdenv.isDarwin "~/Library/Fonts" 7 + ++ [ 8 + # FHS paths for non-NixOS platforms 9 + "/usr/share/fonts" "/usr/local/share/fonts" 10 + ] 11 + # darwin paths 12 + ++ lib.optionals stdenv.isDarwin [ "/Library/Fonts" "/System/Library/Fonts" ] 13 + # nix default profile 14 + ++ [ "/nix/var/nix/profiles/default/lib/X11/fonts" "/nix/var/nix/profiles/default/share/fonts" ] }: 15 16 runCommand "fonts.conf" 17 { 18 nativeBuildInputs = [ libxslt ]; 19 buildInputs = [ fontconfig ]; 20 + inherit fontDirectories; 21 # Add a default font for non-nixos systems, <1MB and in nixos defaults. 22 + impureFontDirectories = impureFontDirectories ++ [ dejavu_fonts.minimal ]; 23 } 24 '' 25 xsltproc --stringparam fontDirectories "$fontDirectories" \ 26 + --stringparam impureFontDirectories "$impureFontDirectories" \ 27 --path ${fontconfig.out}/share/xml/fontconfig \ 28 ${./make-fonts-conf.xsl} ${fontconfig.out}/etc/fonts/fonts.conf \ 29 > $out
+9 -11
pkgs/development/libraries/fontconfig/make-fonts-conf.xsl
··· 15 <xsl:output method='xml' encoding="UTF-8" doctype-system="urn:fontconfig:fonts.dtd" /> 16 17 <xsl:param name="fontDirectories" /> 18 19 <xsl:template match="/fontconfig"> 20 ··· 23 24 <!-- the first cachedir will be used to store the cache --> 25 <cachedir prefix="xdg">fontconfig</cachedir> 26 <!-- /var/cache/fontconfig is useful for non-nixos systems --> 27 <cachedir>/var/cache/fontconfig</cachedir> 28 29 <!-- system-wide config --> 30 <include ignore_missing="yes">/etc/fonts/conf.d</include> 31 32 <dir prefix="xdg">fonts</dir> 33 <xsl:for-each select="str:tokenize($fontDirectories)"> 34 <dir><xsl:value-of select="." /></dir> 35 <xsl:text>&#0010;</xsl:text> 36 </xsl:for-each> 37 38 - <!-- nix user profile --> 39 - <dir>~/.nix-profile/lib/X11/fonts</dir> 40 - <dir>~/.nix-profile/share/fonts</dir> 41 - 42 - <!-- FHS paths for non-NixOS platforms --> 43 - <dir>/usr/share/fonts</dir> 44 - <dir>/usr/local/share/fonts</dir> 45 - 46 - <!-- nix default profile --> 47 - <dir>/nix/var/nix/profiles/default/lib/X11/fonts</dir> 48 - <dir>/nix/var/nix/profiles/default/share/fonts</dir> 49 50 </fontconfig> 51
··· 15 <xsl:output method='xml' encoding="UTF-8" doctype-system="urn:fontconfig:fonts.dtd" /> 16 17 <xsl:param name="fontDirectories" /> 18 + <xsl:param name="impureFontDirectories" /> 19 20 <xsl:template match="/fontconfig"> 21 ··· 24 25 <!-- the first cachedir will be used to store the cache --> 26 <cachedir prefix="xdg">fontconfig</cachedir> 27 + <xsl:text>&#0010;</xsl:text> 28 <!-- /var/cache/fontconfig is useful for non-nixos systems --> 29 <cachedir>/var/cache/fontconfig</cachedir> 30 + <xsl:text>&#0010;</xsl:text> 31 32 <!-- system-wide config --> 33 <include ignore_missing="yes">/etc/fonts/conf.d</include> 34 + <xsl:text>&#0010;</xsl:text> 35 36 <dir prefix="xdg">fonts</dir> 37 + <xsl:text>&#0010;</xsl:text> 38 <xsl:for-each select="str:tokenize($fontDirectories)"> 39 <dir><xsl:value-of select="." /></dir> 40 <xsl:text>&#0010;</xsl:text> 41 </xsl:for-each> 42 43 + <xsl:for-each select="str:tokenize($impureFontDirectories)"> 44 + <dir><xsl:value-of select="." /></dir> 45 + <xsl:text>&#0010;</xsl:text> 46 + </xsl:for-each> 47 48 </fontconfig> 49