diff --git a/nixos/modules/config/fonts/fontconfig-penultimate.nix b/nixos/modules/config/fonts/fontconfig-penultimate.nix
index 04fa8b9559a..24ed9c97668 100644
--- a/nixos/modules/config/fonts/fontconfig-penultimate.nix
+++ b/nixos/modules/config/fonts/fontconfig-penultimate.nix
@@ -52,85 +52,11 @@ let
'';
+ # local configuration file
localConf = pkgs.writeText "fc-local.conf" cfg.localConf;
- # The configuration to be included in /etc/font/
- penultimateConf = pkgs.runCommand "font-penultimate-conf" {
- preferLocalBuild = true;
- } ''
- support_folder=$out/etc/fonts/conf.d
- latest_folder=$out/etc/fonts/${latestVersion}/conf.d
-
- mkdir -p $support_folder
- mkdir -p $latest_folder
-
- ln -s ${supportFontsConf} $support_folder/../fonts.conf
- ln -s ${latestPkg.out}/etc/fonts/fonts.conf \
- $latest_folder/../fonts.conf
-
- # fontconfig-penultimate various configuration files
- ln -s ${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/*.conf \
- $support_folder
- ln -s ${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/*.conf \
- $latest_folder
-
- ln -s ${cacheConfSupport} $support_folder/00-nixos-cache.conf
- ln -s ${cacheConfLatest} $latest_folder/00-nixos-cache.conf
-
- rm $support_folder/10-antialias.conf $latest_folder/10-antialias.conf
- ln -s ${antialiasConf} $support_folder/10-antialias.conf
- ln -s ${antialiasConf} $latest_folder/10-antialias.conf
-
- rm $support_folder/10-hinting.conf $latest_folder/10-hinting.conf
- ln -s ${hintingConf} $support_folder/10-hinting.conf
- ln -s ${hintingConf} $latest_folder/10-hinting.conf
-
- ${optionalString cfg.useEmbeddedBitmaps ''
- rm $support_folder/10-no-embedded-bitmaps.conf
- rm $latest_folder/10-no-embedded-bitmaps.conf
- ''}
-
- rm $support_folder/10-subpixel.conf $latest_folder/10-subpixel.conf
- ln -s ${subpixelConf} $support_folder/10-subpixel.conf
- ln -s ${subpixelConf} $latest_folder/10-subpixel.conf
-
- ${optionalString (cfg.dpi != 0) ''
- ln -s ${dpiConf} $support_folder/11-dpi.conf
- ln -s ${dpiConf} $latest_folder/11-dpi.conf
- ''}
-
- ${optionalString (!cfg.includeUserConf) ''
- rm $support_folder/50-user.conf
- rm $latest_folder/50-user.conf
- ''}
-
- # 51-local.conf
- rm $latest_folder/51-local.conf
- substitute \
- ${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/51-local.conf \
- $latest_folder/51-local.conf \
- --replace local.conf /etc/fonts/${latestVersion}/local.conf
-
- # local.conf (indirect priority 51)
- ${optionalString (cfg.localConf != "") ''
- ln -s ${localConf} $out/etc/fonts/local.conf
- ln -s ${localConf} $out/etc/fonts/${latestVersion}/local.conf
- ''}
-
- ln -s ${defaultFontsConf} $support_folder/52-default-fonts.conf
- ln -s ${defaultFontsConf} $latest_folder/52-default-fonts.conf
-
- ${optionalString cfg.allowBitmaps ''
- rm $support_folder/53-no-bitmaps.conf
- rm $latest_folder/53-no-bitmaps.conf
- ''}
-
- ${optionalString (!cfg.allowType1) ''
- ln -s ${rejectType1} $support_folder/53-no-type1.conf
- ln -s ${rejectType1} $latest_folder/53-no-type1.conf
- ''}
- '';
-
+ # rendering settings configuration files
+ # priority 10
hintingConf = pkgs.writeText "fc-10-hinting.conf" ''
@@ -199,6 +125,8 @@ let
'';
+ # default fonts configuration file
+ # priority 52
defaultFontsConf =
let genDefault = fonts: name:
optionalString (fonts != []) ''
@@ -228,7 +156,9 @@ let
'';
- rejectType1 = pkgs.writeText "fc-53-no-type1.conf" ''
+ # reject Type 1 fonts
+ # priority 53
+ rejectType1 = pkgs.writeText "fc-53-nixos-reject-type1.conf" ''
@@ -245,6 +175,88 @@ let
'';
+ # The configuration to be included in /etc/font/
+ penultimateConf = pkgs.runCommand "fontconfig-penultimate-conf" {
+ preferLocalBuild = true;
+ } ''
+ support_folder=$out/etc/fonts/conf.d
+ latest_folder=$out/etc/fonts/${latestVersion}/conf.d
+
+ mkdir -p $support_folder
+ mkdir -p $latest_folder
+
+ # fonts.conf
+ ln -s ${supportFontsConf} $support_folder/../fonts.conf
+ ln -s ${latestPkg.out}/etc/fonts/fonts.conf \
+ $latest_folder/../fonts.conf
+
+ # fontconfig-penultimate various configuration files
+ ln -s ${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/*.conf \
+ $support_folder
+ ln -s ${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/*.conf \
+ $latest_folder
+
+ ln -s ${cacheConfSupport} $support_folder/00-nixos-cache.conf
+ ln -s ${cacheConfLatest} $latest_folder/00-nixos-cache.conf
+
+ rm $support_folder/10-antialias.conf $latest_folder/10-antialias.conf
+ ln -s ${antialiasConf} $support_folder/10-antialias.conf
+ ln -s ${antialiasConf} $latest_folder/10-antialias.conf
+
+ rm $support_folder/10-hinting.conf $latest_folder/10-hinting.conf
+ ln -s ${hintingConf} $support_folder/10-hinting.conf
+ ln -s ${hintingConf} $latest_folder/10-hinting.conf
+
+ ${optionalString cfg.useEmbeddedBitmaps ''
+ rm $support_folder/10-no-embedded-bitmaps.conf
+ rm $latest_folder/10-no-embedded-bitmaps.conf
+ ''}
+
+ rm $support_folder/10-subpixel.conf $latest_folder/10-subpixel.conf
+ ln -s ${subpixelConf} $support_folder/10-subpixel.conf
+ ln -s ${subpixelConf} $latest_folder/10-subpixel.conf
+
+ ${optionalString (cfg.dpi != 0) ''
+ ln -s ${dpiConf} $support_folder/11-dpi.conf
+ ln -s ${dpiConf} $latest_folder/11-dpi.conf
+ ''}
+
+ # 50-user.conf
+ ${optionalString (!cfg.includeUserConf) ''
+ rm $support_folder/50-user.conf
+ rm $latest_folder/50-user.conf
+ ''}
+
+ # 51-local.conf
+ rm $latest_folder/51-local.conf
+ substitute \
+ ${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/51-local.conf \
+ $latest_folder/51-local.conf \
+ --replace local.conf /etc/fonts/${latestVersion}/local.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/52-nixos-default-fonts.conf
+ ln -s ${defaultFontsConf} $latest_folder/52-nixos-default-fonts.conf
+
+ # 53-no-bitmaps.conf
+ ${optionalString cfg.allowBitmaps ''
+ rm $support_folder/53-no-bitmaps.conf
+ rm $latest_folder/53-no-bitmaps.conf
+ ''}
+
+ ${optionalString (!cfg.allowType1) ''
+ # 53-nixos-reject-type1.conf
+ ln -s ${rejectType1} $support_folder/53-nixos-reject-type1.conf
+ ln -s ${rejectType1} $latest_folder/53-nixos-reject-type1.conf
+ ''}
+ '';
+
in
{
diff --git a/nixos/modules/config/fonts/fontconfig.nix b/nixos/modules/config/fonts/fontconfig.nix
index 724158f7382..fe0b88cf4c2 100644
--- a/nixos/modules/config/fonts/fontconfig.nix
+++ b/nixos/modules/config/fonts/fontconfig.nix
@@ -14,250 +14,252 @@ Low number means high priority.
*/
-{ config, lib, pkgs, ... }:
+{ config, pkgs, lib, ... }:
with lib;
-let cfg = config.fonts.fontconfig;
+let
+ cfg = config.fonts.fontconfig;
- fcBool = x: "" + (boolToString x) + "";
+ fcBool = x: "" + (boolToString x) + "";
- # back-supported fontconfig version and package
- # version is used for font cache generation
- supportVersion = "210";
- supportPkg = pkgs."fontconfig_${supportVersion}";
+ # back-supported fontconfig version and package
+ # version is used for font cache generation
+ supportVersion = "210";
+ supportPkg = pkgs."fontconfig_${supportVersion}";
- # latest fontconfig version and package
- # version is used for configuration folder name, /etc/fonts/VERSION/
- # note: format differs from supportVersion and can not be used with makeCacheConf
- latestVersion = pkgs.fontconfig.configVersion;
- latestPkg = pkgs.fontconfig;
+ # latest fontconfig version and package
+ # version is used for configuration folder name, /etc/fonts/VERSION/
+ # note: format differs from supportVersion and can not be used with makeCacheConf
+ latestVersion = pkgs.fontconfig.configVersion;
+ latestPkg = pkgs.fontconfig;
- # supported version fonts.conf
- supportFontsConf = pkgs.makeFontsConf { fontconfig = supportPkg; fontDirectories = config.fonts.fonts; };
+ # supported version fonts.conf
+ supportFontsConf = pkgs.makeFontsConf { fontconfig = supportPkg; fontDirectories = config.fonts.fonts; };
- # configuration file to read fontconfig cache
- # version dependent
- # priority 0
- cacheConfSupport = makeCacheConf { version = supportVersion; };
- cacheConfLatest = makeCacheConf {};
+ # configuration file to read fontconfig cache
+ # version dependent
+ # priority 0
+ cacheConfSupport = makeCacheConf { version = supportVersion; };
+ cacheConfLatest = makeCacheConf {};
- # generate the font cache setting file for a fontconfig version
- # use latest when no version is passed
- makeCacheConf = { version ? null }:
- let
- fcPackage = if version == null
- then "fontconfig"
- else "fontconfig_${version}";
- makeCache = fontconfig: pkgs.makeFontsCache { inherit fontconfig; fontDirectories = config.fonts.fonts; };
- cache = makeCache pkgs."${fcPackage}";
- cache32 = makeCache pkgs.pkgsi686Linux."${fcPackage}";
- in
- pkgs.writeText "fc-00-nixos-cache.conf" ''
-
-
-
-
- ${concatStringsSep "\n" (map (font: "${font}") config.fonts.fonts)}
-
- ${cache}
- ${optionalString (pkgs.stdenv.isx86_64 && cfg.cache32Bit) ''
- ${cache32}
- ''}
-
- '';
-
- # rendering settings configuration file
- # priority 10
- renderConf = pkgs.writeText "fc-10-nixos-rendering.conf" ''
+ # generate the font cache setting file for a fontconfig version
+ # use latest when no version is passed
+ makeCacheConf = { version ? null }:
+ let
+ fcPackage = if version == null
+ then "fontconfig"
+ else "fontconfig_${version}";
+ makeCache = fontconfig: pkgs.makeFontsCache { inherit fontconfig; fontDirectories = config.fonts.fonts; };
+ cache = makeCache pkgs."${fcPackage}";
+ cache32 = makeCache pkgs.pkgsi686Linux."${fcPackage}";
+ in
+ pkgs.writeText "fc-00-nixos-cache.conf" ''
-
-
-
-
- ${fcBool cfg.hinting.enable}
-
-
- ${fcBool cfg.hinting.autohint}
-
-
- hintslight
-
-
- ${fcBool cfg.antialias}
-
-
- ${cfg.subpixel.rgba}
-
-
- lcd${cfg.subpixel.lcdfilter}
-
-
-
- ${optionalString (cfg.dpi != 0) ''
-
-
- ${toString cfg.dpi}
-
-
+
+ ${concatStringsSep "\n" (map (font: "${font}") config.fonts.fonts)}
+
+ ${cache}
+ ${optionalString (pkgs.stdenv.isx86_64 && cfg.cache32Bit) ''
+ ${cache32}
''}
-
'';
- # local configuration file
- # priority 51
- localConf = pkgs.writeText "fc-local.conf" cfg.localConf;
+ # rendering settings configuration file
+ # priority 10
+ renderConf = pkgs.writeText "fc-10-nixos-rendering.conf" ''
+
+
+
- # default fonts configuration file
- # priority 52
- defaultFontsConf =
- let genDefault = fonts: name:
- optionalString (fonts != []) ''
-
- ${name}
-
- ${concatStringsSep ""
- (map (font: ''
- ${font}
- '') fonts)}
-
-
- '';
- in
- pkgs.writeText "fc-52-nixos-default-fonts.conf" ''
-
-
-
-
-
- ${genDefault cfg.defaultFonts.sansSerif "sans-serif"}
-
- ${genDefault cfg.defaultFonts.serif "serif"}
-
- ${genDefault cfg.defaultFonts.monospace "monospace"}
-
-
- '';
-
- # bitmap font options
- # priority 53
- rejectBitmaps = pkgs.writeText "fc-53-nixos-bitmaps.conf" ''
-
-
-
-
- ${optionalString (!cfg.allowBitmaps) ''
-
-
-
-
- false
-
-
-
- ''}
-
-
-
-
- ${fcBool cfg.useEmbeddedBitmaps}
+
+
+
+ ${fcBool cfg.hinting.enable}
+
+
+ ${fcBool cfg.hinting.autohint}
+
+
+ hintslight
+
+
+ ${fcBool cfg.antialias}
+
+
+ ${cfg.subpixel.rgba}
+
+
+ lcd${cfg.subpixel.lcdfilter}
-
- '';
-
- # reject Type 1 fonts
- # priority 53
- rejectType1 = pkgs.writeText "fc-53-nixos-reject-type1.conf" ''
-
-
-
-
-
-
-
-
- Type 1
-
-
-
-
-
- '';
-
- # 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
+ ${optionalString (cfg.dpi != 0) ''
+
+
+ ${toString cfg.dpi}
+
+
''}
- # 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
+ # local configuration file
+ localConf = pkgs.writeText "fc-local.conf" cfg.localConf;
- # 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
+ # default fonts configuration file
+ # priority 52
+ defaultFontsConf =
+ let genDefault = fonts: name:
+ optionalString (fonts != []) ''
+
+ ${name}
+
+ ${concatStringsSep ""
+ (map (font: ''
+ ${font}
+ '') fonts)}
+
+
+ '';
+ in
+ pkgs.writeText "fc-52-nixos-default-fonts.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
- ''}
- '';
+
+ ${genDefault cfg.defaultFonts.sansSerif "sans-serif"}
- # 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;
- };
+ ${genDefault cfg.defaultFonts.serif "serif"}
+
+ ${genDefault cfg.defaultFonts.monospace "monospace"}
+
+
+ '';
+
+ # bitmap font options
+ # priority 53
+ rejectBitmaps = pkgs.writeText "fc-53-no-bitmaps.conf" ''
+
+
+
+
+ ${optionalString (!cfg.allowBitmaps) ''
+
+
+
+
+ false
+
+
+
+ ''}
+
+
+
+
+ ${fcBool cfg.useEmbeddedBitmaps}
+
+
+
+
+ '';
+
+ # reject Type 1 fonts
+ # priority 53
+ rejectType1 = pkgs.writeText "fc-53-nixos-reject-type1.conf" ''
+
+
+
+
+
+
+
+
+ Type 1
+
+
+
+
+
+ '';
+
+ # fontconfig configuration package
+ confPkg = pkgs.runCommand "fontconfig-conf" {
+ preferLocalBuild = true;
+ } ''
+ support_folder=$out/etc/fonts/conf.d
+ latest_folder=$out/etc/fonts/${latestVersion}/conf.d
+
+ mkdir -p $support_folder
+ mkdir -p $latest_folder
+
+ # 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/
+ ln -s ${latestPkg.out}/etc/fonts/conf.d/*.conf \
+ $latest_folder/
+
+ # update latest 51-local.conf path to look at the latest local.conf
+ rm $latest_folder/51-local.conf
+
+ substitute ${latestPkg.out}/etc/fonts/conf.d/51-local.conf \
+ $latest_folder/51-local.conf \
+ --replace local.conf /etc/fonts/${latestVersion}/local.conf
+
+ # 00-nixos-cache.conf
+ ln -s ${cacheConfSupport} \
+ $support_folder/00-nixos-cache.conf
+ ln -s ${cacheConfLatest} $latest_folder/00-nixos-cache.conf
+
+ # 10-nixos-rendering.conf
+ ln -s ${renderConf} $support_folder/10-nixos-rendering.conf
+ ln -s ${renderConf} $latest_folder/10-nixos-rendering.conf
+
+ # 50-user.conf
+ ${optionalString (!cfg.includeUserConf) ''
+ rm $support_folder/50-user.conf
+ rm $latest_folder/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/52-nixos-default-fonts.conf
+ ln -s ${defaultFontsConf} $latest_folder/52-nixos-default-fonts.conf
+
+ # 53-no-bitmaps.conf
+ ln -s ${rejectBitmaps} $support_folder/53-no-bitmaps.conf
+ ln -s ${rejectBitmaps} $latest_folder/53-no-bitmaps.conf
+
+ ${optionalString (!cfg.allowType1) ''
+ # 53-nixos-reject-type1.conf
+ ln -s ${rejectType1} $support_folder/53-nixos-reject-type1.conf
+ ln -s ${rejectType1} $latest_folder/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
{