diff --git a/nixos/modules/config/fonts/fontconfig-ultimate.nix b/nixos/modules/config/fonts/fontconfig-ultimate.nix
index a3f52fbd919..ed6429dda08 100644
--- a/nixos/modules/config/fonts/fontconfig-ultimate.nix
+++ b/nixos/modules/config/fonts/fontconfig-ultimate.nix
@@ -8,61 +8,6 @@ let fcBool = x: if x then "true" else "false";
latestVersion = pkgs.fontconfig.configVersion;
- # fontconfig ultimate main configuration file
- # priority 52
- fontconfigUltimateConf = pkgs.writeText "fc-52-fontconfig-ultimate.conf" ''
-
-
-
-
- ${optionalString (!cfg.allowBitmaps) ''
-
-
-
-
- false
-
-
-
- ''}
-
- ${optionalString cfg.allowType1 ''
-
-
-
-
-
- Type 1
-
-
-
-
- ''}
-
-
-
-
- ${fcBool cfg.useEmbeddedBitmaps}
-
-
-
-
-
-
- ${fcBool cfg.forceAutohint}
-
-
-
-
-
-
- ${fcBool cfg.renderMonoTTFAsBitmap}
-
-
-
-
- '';
-
# The configuration to be included in /etc/font/
confPkg = pkgs.runCommand "font-ultimate-conf" {} ''
support_folder=$out/etc/fonts/conf.d
@@ -71,12 +16,6 @@ let fcBool = x: if x then "true" else "false";
mkdir -p $support_folder
mkdir -p $latest_folder
- # 52-fontconfig-ultimate.conf
- ln -s ${fontconfigUltimateConf} \
- $support_folder/52-fontconfig-ultimate.conf
- ln -s ${fontconfigUltimateConf} \
- $latest_folder/52-fontconfig-ultimate.conf
-
# fontconfig ultimate substitutions
${optionalString (cfg.substitutions != "none") ''
ln -s ${pkgs.fontconfig-ultimate}/etc/fonts/presets/${cfg.substitutions}/*.conf \
@@ -113,45 +52,6 @@ in
'';
};
- allowBitmaps = mkOption {
- type = types.bool;
- default = true;
- description = ''
- Allow bitmap fonts. Set to false to ban all
- bitmap fonts.
- '';
- };
-
- allowType1 = mkOption {
- type = types.bool;
- default = false;
- description = ''
- Allow Type-1 fonts. Default is false because of
- poor rendering.
- '';
- };
-
- useEmbeddedBitmaps = mkOption {
- type = types.bool;
- default = false;
- description = ''Use embedded bitmaps in fonts like Calibri.'';
- };
-
- forceAutohint = mkOption {
- type = types.bool;
- default = false;
- description = ''
- Force use of the TrueType Autohinter. Useful for debugging or
- free-software purists.
- '';
- };
-
- renderMonoTTFAsBitmap = mkOption {
- type = types.bool;
- default = false;
- description = ''Render some monospace TTF fonts as bitmaps.'';
- };
-
substitutions = mkOption {
type = types.nullOr (types.enum ["free" "combi" "ms"]);
default = "free";
diff --git a/nixos/modules/config/fonts/fontconfig.nix b/nixos/modules/config/fonts/fontconfig.nix
index 52ad1e714fb..5648b7b1d02 100644
--- a/nixos/modules/config/fonts/fontconfig.nix
+++ b/nixos/modules/config/fonts/fontconfig.nix
@@ -41,11 +41,11 @@ let cfg = config.fonts.fontconfig;
# 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
+ let
fcPackage = if builtins.isNull version
then "fontconfig"
else "fontconfig_${version}";
@@ -104,6 +104,13 @@ let cfg = config.fonts.fontconfig;
''}
+
+
+
+ ${fcBool cfg.forceAutohint}
+
+
+
'';
@@ -113,7 +120,7 @@ let cfg = config.fonts.fontconfig;
# default fonts configuration file
# priority 52
- defaultFontsConf =
+ defaultFontsConf =
let genDefault = fonts: name:
optionalString (fonts != []) ''
@@ -142,7 +149,61 @@ let cfg = config.fonts.fontconfig;
'';
- # fontconfig configuration package
+ # bitmap font options
+ # priority 53
+ rejectBitmaps = pkgs.writeText "fc-53-nixos-bitmaps.conf" ''
+
+
+
+
+ ${optionalString (!cfg.allowBitmaps) ''
+
+
+
+
+ false
+
+
+
+ ''}
+
+
+
+
+ ${fcBool cfg.useEmbeddedBitmaps}
+
+
+
+
+
+
+ ${fcBool cfg.renderMonoTTFAsBitmap}
+
+
+
+
+ '';
+
+ # 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" {} ''
support_folder=$out/etc/fonts
latest_folder=$out/etc/fonts/${latestVersion}
@@ -166,7 +227,7 @@ let cfg = config.fonts.fontconfig;
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
+ --replace local.conf /etc/fonts/${latestVersion}/local.conf
# 00-nixos-cache.conf
ln -s ${cacheConfSupport} \
@@ -192,6 +253,16 @@ let cfg = config.fonts.fontconfig;
# 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
@@ -349,6 +420,45 @@ in
'';
};
+ allowBitmaps = mkOption {
+ type = types.bool;
+ default = true;
+ description = ''
+ Allow bitmap fonts. Set to false to ban all
+ bitmap fonts.
+ '';
+ };
+
+ allowType1 = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ Allow Type-1 fonts. Default is false because of
+ poor rendering.
+ '';
+ };
+
+ useEmbeddedBitmaps = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''Use embedded bitmaps in fonts like Calibri.'';
+ };
+
+ forceAutohint = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ Force use of the TrueType Autohinter. Useful for debugging or
+ free-software purists.
+ '';
+ };
+
+ renderMonoTTFAsBitmap = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''Render some monospace TTF fonts as bitmaps.'';
+ };
+
};
};
diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix
index ff3654737af..0b609287f63 100644
--- a/nixos/modules/rename.nix
+++ b/nixos/modules/rename.nix
@@ -181,6 +181,13 @@ with lib;
# KDE Plasma 5
(mkRenamedOptionModule [ "services" "xserver" "desktopManager" "kde5" ] [ "services" "xserver" "desktopManager" "plasma5" ])
+ # Fontconfig
+ (mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "allowBitmaps" ] [ "config" "fonts" "fontconfig" "allowBitmaps" ])
+ (mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "allowType1" ] [ "config" "fonts" "fontconfig" "allowType1" ])
+ (mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "useEmbeddedBitmaps" ] [ "config" "fonts" "fontconfig" "useEmbeddedBitmaps" ])
+ (mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "forceAutohint" ] [ "config" "fonts" "fontconfig" "forceAutohint" ])
+ (mkRenamedOptionModule [ "config" "fonts" "fontconfig" "ultimate" "renderMonoTTFAsBitmap" ] [ "config" "fonts" "fontconfig" "renderMonoTTFAsBitmap" ])
+
# Options that are obsolete and have no replacement.
(mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ] "")
(mkRemovedOptionModule [ "programs" "bash" "enable" ] "")