fontconfig module: respect upstream definitions

This commit is contained in:
Eric Sagnes 2016-08-11 08:45:43 +09:00 committed by Nikolay Amiantov
parent cd2948a72e
commit e80e8b9dc9
2 changed files with 38 additions and 26 deletions

View file

@ -12,8 +12,6 @@ This module generates a package containing configuration files and link it in /e
Fontconfig reads files in folder name / file name order, so the number prepended to the configuration file name decide the order of parsing. Fontconfig reads files in folder name / file name order, so the number prepended to the configuration file name decide the order of parsing.
Low number means high priority. Low number means high priority.
Default fonts should have a high priority (low number) to be at the head of the preferred fonts list, fontconfig advise the 30~40 range.
*/ */
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
@ -109,9 +107,13 @@ let cfg = config.fonts.fontconfig;
</fontconfig> </fontconfig>
''; '';
# prefered default fonts configuration file # local configuration file
# priority 30 # priority 51
genericAliasConf = localConf = pkgs.writeText "fc-local.conf" cfg.localConf;
# default fonts configuration file
# priority 52
defaultFontsConf =
let genDefault = fonts: name: let genDefault = fonts: name:
optionalString (fonts != []) '' optionalString (fonts != []) ''
<alias> <alias>
@ -125,7 +127,7 @@ let cfg = config.fonts.fontconfig;
</alias> </alias>
''; '';
in in
pkgs.writeText "fc-30-nixos-generic-alias.conf" '' pkgs.writeText "fc-52-nixos-default-fonts.conf" ''
<?xml version='1.0'?> <?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig> <fontconfig>
@ -140,17 +142,6 @@ let cfg = config.fonts.fontconfig;
</fontconfig> </fontconfig>
''; '';
# user settings configuration file
# priority 99
userConf = pkgs.writeText "fc-99-user.conf" ''
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<include ignore_missing="yes" prefix="xdg">fontconfig/conf.d</include>
<include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include>
</fontconfig>
'';
# fontconfig configuration package # fontconfig configuration package
confPkg = pkgs.runCommand "fontconfig-conf" {} '' confPkg = pkgs.runCommand "fontconfig-conf" {} ''
support_folder=$out/etc/fonts support_folder=$out/etc/fonts
@ -170,6 +161,13 @@ let cfg = config.fonts.fontconfig;
ln -s ${latestPkg.out}/etc/fonts/conf.d/*.conf \ ln -s ${latestPkg.out}/etc/fonts/conf.d/*.conf \
$latest_folder/conf.d/ $latest_folder/conf.d/
# update latest 51-local.conf path to look at the latest local.conf
rm $latest_folder/conf.d/51-local.conf
substitute ${latestPkg.out}/etc/fonts/conf.d/51-local.conf \
$latest_folder/conf.d/51-local.conf \
--replace local.conf /etc/fonts/${latestVersion}/local.conf
# 00-nixos-cache.conf # 00-nixos-cache.conf
ln -s ${cacheConfSupport} \ ln -s ${cacheConfSupport} \
$support_folder/conf.d/00-nixos-cache.conf $support_folder/conf.d/00-nixos-cache.conf
@ -179,15 +177,21 @@ let cfg = config.fonts.fontconfig;
ln -s ${renderConf} $support_folder/conf.d/10-nixos-rendering.conf ln -s ${renderConf} $support_folder/conf.d/10-nixos-rendering.conf
ln -s ${renderConf} $latest_folder/conf.d/10-nixos-rendering.conf ln -s ${renderConf} $latest_folder/conf.d/10-nixos-rendering.conf
# 30-nixos-generic-alias.conf # 50-user.conf
ln -s ${genericAliasConf} $support_folder/conf.d/30-nixos-generic-alias.conf ${optionalString (! cfg.includeUserConf) ''
ln -s ${genericAliasConf} $latest_folder/conf.d/30-nixos-generic-alias.conf rm $support_folder/conf.d/50-user.conf
rm $latest_folder/conf.d/50-user.conf
# 99-user.conf
${optionalString cfg.includeUserConf ''
ln -s ${userConf} $support_folder/conf.d/99-user.conf
ln -s ${userConf} $latest_folder/conf.d/99-user.conf
''} ''}
# local.conf (indirect priority 51)
${optionalString (cfg.localConf != "") ''
ln -s ${localConf} $support_folder/local.conf
ln -s ${localConf} $latest_folder/local.conf
''}
# 52-nixos-default-fonts.conf
ln -s ${defaultFontsConf} $support_folder/conf.d/52-nixos-default-fonts.conf
ln -s ${defaultFontsConf} $latest_folder/conf.d/52-nixos-default-fonts.conf
''; '';
# Package with configuration files # Package with configuration files
@ -241,6 +245,15 @@ in
''; '';
}; };
localConf = mkOption {
type = types.lines;
default = "";
description = ''
System-wide customization file contents, has higher priority than
<literal>defaultFonts</literal> settings.
'';
};
defaultFonts = { defaultFonts = {
monospace = mkOption { monospace = mkOption {
type = types.listOf types.str; type = types.listOf types.str;

View file

@ -66,7 +66,6 @@ stdenv.mkDerivation rec {
postInstall = '' postInstall = ''
cd "$out/etc/fonts" cd "$out/etc/fonts"
rm conf.d/{50-user,51-local}.conf
"${libxslt.bin}/bin/xsltproc" --stringparam fontDirectories "${fontbhttf}" \ "${libxslt.bin}/bin/xsltproc" --stringparam fontDirectories "${fontbhttf}" \
--stringparam fontconfigConfigVersion "${configVersion}" \ --stringparam fontconfigConfigVersion "${configVersion}" \
--path $out/share/xml/fontconfig \ --path $out/share/xml/fontconfig \