forked from mirrors/nixpkgs
nixos/fontconfig: harmonize indentation
This commit is contained in:
parent
1a3f604de3
commit
be2cf1f093
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue