3
0
Fork 0
forked from mirrors/nixpkgs

nixos/fontconfig: harmonize indentation

This commit is contained in:
Jan Tojnar 2019-08-20 13:24:21 +02:00
parent 1a3f604de3
commit be2cf1f093
No known key found for this signature in database
GPG key ID: 7FAB2A15F7A607A4
2 changed files with 222 additions and 219 deletions

View file

@ -171,7 +171,7 @@ let
# The configuration to be included in /etc/font/ # The configuration to be included in /etc/font/
penultimateConf = pkgs.runCommand "font-penultimate-conf" { penultimateConf = pkgs.runCommand "font-penultimate-conf" {
preferLocalBuild = true; preferLocalBuild = true;
} '' } ''
support_folder=$out/etc/fonts/conf.d support_folder=$out/etc/fonts/conf.d
latest_folder=$out/etc/fonts/${latestVersion}/conf.d latest_folder=$out/etc/fonts/${latestVersion}/conf.d

View file

@ -14,250 +14,253 @@ Low number means high priority.
*/ */
{ config, lib, pkgs, ... }: { config, pkgs, lib, ... }:
with lib; with lib;
let cfg = config.fonts.fontconfig; let
cfg = config.fonts.fontconfig;
fcBool = x: "<bool>" + (boolToString x) + "</bool>"; fcBool = x: "<bool>" + (boolToString x) + "</bool>";
# back-supported fontconfig version and package # back-supported fontconfig version and package
# version is used for font cache generation # version is used for font cache generation
supportVersion = "210"; supportVersion = "210";
supportPkg = pkgs."fontconfig_${supportVersion}"; supportPkg = pkgs."fontconfig_${supportVersion}";
# latest fontconfig version and package # latest fontconfig version and package
# version is used for configuration folder name, /etc/fonts/VERSION/ # version is used for configuration folder name, /etc/fonts/VERSION/
# note: format differs from supportVersion and can not be used with makeCacheConf # note: format differs from supportVersion and can not be used with makeCacheConf
latestVersion = pkgs.fontconfig.configVersion; latestVersion = pkgs.fontconfig.configVersion;
latestPkg = pkgs.fontconfig; latestPkg = pkgs.fontconfig;
# supported version fonts.conf # supported version fonts.conf
supportFontsConf = pkgs.makeFontsConf { fontconfig = supportPkg; fontDirectories = config.fonts.fonts; }; supportFontsConf = pkgs.makeFontsConf { fontconfig = supportPkg; fontDirectories = config.fonts.fonts; };
# configuration file to read fontconfig cache # configuration file to read fontconfig cache
# version dependent # version dependent
# priority 0 # priority 0
cacheConfSupport = makeCacheConf { version = supportVersion; }; cacheConfSupport = makeCacheConf { version = supportVersion; };
cacheConfLatest = makeCacheConf {}; cacheConfLatest = makeCacheConf {};
# generate the font cache setting file for a fontconfig version # generate the font cache setting file for a fontconfig version
# use latest when no version is passed # use latest when no version is passed
makeCacheConf = { version ? null }: makeCacheConf = { version ? null }:
let let
fcPackage = if version == null fcPackage = if version == null
then "fontconfig" then "fontconfig"
else "fontconfig_${version}"; else "fontconfig_${version}";
makeCache = fontconfig: pkgs.makeFontsCache { inherit fontconfig; fontDirectories = config.fonts.fonts; }; makeCache = fontconfig: pkgs.makeFontsCache { inherit fontconfig; fontDirectories = config.fonts.fonts; };
cache = makeCache pkgs."${fcPackage}"; cache = makeCache pkgs."${fcPackage}";
cache32 = makeCache pkgs.pkgsi686Linux."${fcPackage}"; cache32 = makeCache pkgs.pkgsi686Linux."${fcPackage}";
in in
pkgs.writeText "fc-00-nixos-cache.conf" '' pkgs.writeText "fc-00-nixos-cache.conf" ''
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<!-- Font directories -->
${concatStringsSep "\n" (map (font: "<dir>${font}</dir>") config.fonts.fonts)}
<!-- Pre-generated font caches -->
<cachedir>${cache}</cachedir>
${optionalString (pkgs.stdenv.isx86_64 && cfg.cache32Bit) ''
<cachedir>${cache32}</cachedir>
''}
</fontconfig>
'';
# rendering settings configuration file
# priority 10
renderConf = pkgs.writeText "fc-10-nixos-rendering.conf" ''
<?xml version='1.0'?> <?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig> <fontconfig>
<!-- Font directories -->
<!-- Default rendering settings --> ${concatStringsSep "\n" (map (font: "<dir>${font}</dir>") config.fonts.fonts)}
<match target="pattern"> <!-- Pre-generated font caches -->
<edit mode="append" name="hinting"> <cachedir>${cache}</cachedir>
${fcBool cfg.hinting.enable} ${optionalString (pkgs.stdenv.isx86_64 && cfg.cache32Bit) ''
</edit> <cachedir>${cache32}</cachedir>
<edit mode="append" name="autohint">
${fcBool cfg.hinting.autohint}
</edit>
<edit mode="append" name="hintstyle">
<const>hintslight</const>
</edit>
<edit mode="append" name="antialias">
${fcBool cfg.antialias}
</edit>
<edit mode="append" name="rgba">
<const>${cfg.subpixel.rgba}</const>
</edit>
<edit mode="append" name="lcdfilter">
<const>lcd${cfg.subpixel.lcdfilter}</const>
</edit>
</match>
${optionalString (cfg.dpi != 0) ''
<match target="pattern">
<edit name="dpi" mode="assign">
<double>${toString cfg.dpi}</double>
</edit>
</match>
''} ''}
</fontconfig> </fontconfig>
''; '';
# local configuration file # rendering settings configuration file
# priority 51 # priority 10
localConf = pkgs.writeText "fc-local.conf" cfg.localConf; renderConf = pkgs.writeText "fc-10-nixos-rendering.conf" ''
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
# default fonts configuration file <!-- Default rendering settings -->
# priority 52 <match target="pattern">
defaultFontsConf = <edit mode="append" name="hinting">
let genDefault = fonts: name: ${fcBool cfg.hinting.enable}
optionalString (fonts != []) '' </edit>
<alias> <edit mode="append" name="autohint">
<family>${name}</family> ${fcBool cfg.hinting.autohint}
<prefer> </edit>
${concatStringsSep "" <edit mode="append" name="hintstyle">
(map (font: '' <const>hintslight</const>
<family>${font}</family> </edit>
'') fonts)} <edit mode="append" name="antialias">
</prefer> ${fcBool cfg.antialias}
</alias> </edit>
''; <edit mode="append" name="rgba">
in <const>${cfg.subpixel.rgba}</const>
pkgs.writeText "fc-52-nixos-default-fonts.conf" '' </edit>
<?xml version='1.0'?> <edit mode="append" name="lcdfilter">
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> <const>lcd${cfg.subpixel.lcdfilter}</const>
<fontconfig>
<!-- Default fonts -->
${genDefault cfg.defaultFonts.sansSerif "sans-serif"}
${genDefault cfg.defaultFonts.serif "serif"}
${genDefault cfg.defaultFonts.monospace "monospace"}
</fontconfig>
'';
# bitmap font options
# priority 53
rejectBitmaps = pkgs.writeText "fc-53-nixos-bitmaps.conf" ''
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
${optionalString (!cfg.allowBitmaps) ''
<!-- Reject bitmap fonts -->
<selectfont>
<rejectfont>
<pattern>
<patelt name="scalable"><bool>false</bool></patelt>
</pattern>
</rejectfont>
</selectfont>
''}
<!-- Use embedded bitmaps in fonts like Calibri? -->
<match target="font">
<edit name="embeddedbitmap" mode="assign">
${fcBool cfg.useEmbeddedBitmaps}
</edit> </edit>
</match> </match>
</fontconfig> ${optionalString (cfg.dpi != 0) ''
''; <match target="pattern">
<edit name="dpi" mode="assign">
# reject Type 1 fonts <double>${toString cfg.dpi}</double>
# priority 53 </edit>
rejectType1 = pkgs.writeText "fc-53-nixos-reject-type1.conf" '' </match>
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- Reject Type 1 fonts -->
<selectfont>
<rejectfont>
<pattern>
<patelt name="fontformat"><string>Type 1</string></patelt>
</pattern>
</rejectfont>
</selectfont>
</fontconfig>
'';
# fontconfig configuration package
confPkg = pkgs.runCommand "fontconfig-conf" { preferLocalBuild = true; } ''
support_folder=$out/etc/fonts
latest_folder=$out/etc/fonts/${latestVersion}
mkdir -p $support_folder/conf.d
mkdir -p $latest_folder/conf.d
# fonts.conf
ln -s ${supportFontsConf} $support_folder/fonts.conf
ln -s ${latestPkg.out}/etc/fonts/fonts.conf \
$latest_folder/fonts.conf
# fontconfig default config files
ln -s ${supportPkg.out}/etc/fonts/conf.d/*.conf \
$support_folder/conf.d/
ln -s ${latestPkg.out}/etc/fonts/conf.d/*.conf \
$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
ln -s ${cacheConfSupport} \
$support_folder/conf.d/00-nixos-cache.conf
ln -s ${cacheConfLatest} $latest_folder/conf.d/00-nixos-cache.conf
# 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
# 50-user.conf
${optionalString (! cfg.includeUserConf) ''
rm $support_folder/conf.d/50-user.conf
rm $latest_folder/conf.d/50-user.conf
''} ''}
# local.conf (indirect priority 51) </fontconfig>
${optionalString (cfg.localConf != "") '' '';
ln -s ${localConf} $support_folder/local.conf
ln -s ${localConf} $latest_folder/local.conf
''}
# 52-nixos-default-fonts.conf # local configuration file
ln -s ${defaultFontsConf} $support_folder/conf.d/52-nixos-default-fonts.conf # priority 51
ln -s ${defaultFontsConf} $latest_folder/conf.d/52-nixos-default-fonts.conf localConf = pkgs.writeText "fc-local.conf" cfg.localConf;
# 53-nixos-bitmaps.conf # default fonts configuration file
ln -s ${rejectBitmaps} $support_folder/conf.d/53-nixos-bitmaps.conf # priority 52
ln -s ${rejectBitmaps} $latest_folder/conf.d/53-nixos-bitmaps.conf defaultFontsConf =
let genDefault = fonts: name:
optionalString (fonts != []) ''
<alias>
<family>${name}</family>
<prefer>
${concatStringsSep ""
(map (font: ''
<family>${font}</family>
'') fonts)}
</prefer>
</alias>
'';
in
pkgs.writeText "fc-52-nixos-default-fonts.conf" ''
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
${optionalString (! cfg.allowType1) '' <!-- Default fonts -->
# 53-nixos-reject-type1.conf ${genDefault cfg.defaultFonts.sansSerif "sans-serif"}
ln -s ${rejectType1} $support_folder/conf.d/53-nixos-reject-type1.conf
ln -s ${rejectType1} $latest_folder/conf.d/53-nixos-reject-type1.conf
''}
'';
# Package with configuration files ${genDefault cfg.defaultFonts.serif "serif"}
# this merge all the packages in the fonts.fontconfig.confPackages list
fontconfigEtc = pkgs.buildEnv { ${genDefault cfg.defaultFonts.monospace "monospace"}
name = "fontconfig-etc";
paths = cfg.confPackages; </fontconfig>
ignoreCollisions = true; '';
};
# bitmap font options
# priority 53
rejectBitmaps = pkgs.writeText "fc-53-nixos-bitmaps.conf" ''
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
${optionalString (!cfg.allowBitmaps) ''
<!-- Reject bitmap fonts -->
<selectfont>
<rejectfont>
<pattern>
<patelt name="scalable"><bool>false</bool></patelt>
</pattern>
</rejectfont>
</selectfont>
''}
<!-- Use embedded bitmaps in fonts like Calibri? -->
<match target="font">
<edit name="embeddedbitmap" mode="assign">
${fcBool cfg.useEmbeddedBitmaps}
</edit>
</match>
</fontconfig>
'';
# reject Type 1 fonts
# priority 53
rejectType1 = pkgs.writeText "fc-53-nixos-reject-type1.conf" ''
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- Reject Type 1 fonts -->
<selectfont>
<rejectfont>
<pattern>
<patelt name="fontformat"><string>Type 1</string></patelt>
</pattern>
</rejectfont>
</selectfont>
</fontconfig>
'';
# fontconfig configuration package
confPkg = pkgs.runCommand "fontconfig-conf" {
preferLocalBuild = true;
} ''
support_folder=$out/etc/fonts
latest_folder=$out/etc/fonts/${latestVersion}
mkdir -p $support_folder/conf.d
mkdir -p $latest_folder/conf.d
# fonts.conf
ln -s ${supportFontsConf} $support_folder/fonts.conf
ln -s ${latestPkg.out}/etc/fonts/fonts.conf \
$latest_folder/fonts.conf
# fontconfig default config files
ln -s ${supportPkg.out}/etc/fonts/conf.d/*.conf \
$support_folder/conf.d/
ln -s ${latestPkg.out}/etc/fonts/conf.d/*.conf \
$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
ln -s ${cacheConfSupport} \
$support_folder/conf.d/00-nixos-cache.conf
ln -s ${cacheConfLatest} $latest_folder/conf.d/00-nixos-cache.conf
# 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
# 50-user.conf
${optionalString (!cfg.includeUserConf) ''
rm $support_folder/conf.d/50-user.conf
rm $latest_folder/conf.d/50-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
# 53-nixos-bitmaps.conf
ln -s ${rejectBitmaps} $support_folder/conf.d/53-nixos-bitmaps.conf
ln -s ${rejectBitmaps} $latest_folder/conf.d/53-nixos-bitmaps.conf
${optionalString (!cfg.allowType1) ''
# 53-nixos-reject-type1.conf
ln -s ${rejectType1} $support_folder/conf.d/53-nixos-reject-type1.conf
ln -s ${rejectType1} $latest_folder/conf.d/53-nixos-reject-type1.conf
''}
'';
# Package with configuration files
# this merge all the packages in the fonts.fontconfig.confPackages list
fontconfigEtc = pkgs.buildEnv {
name = "fontconfig-etc";
paths = cfg.confPackages;
ignoreCollisions = true;
};
in in
{ {