summaryrefslogtreecommitdiffstats
path: root/nixos/modules/config/fonts
diff options
context:
space:
mode:
authorThomas Tuegel <ttuegel@gmail.com>2014-12-05 10:30:10 -0600
committerThomas Tuegel <ttuegel@gmail.com>2014-12-08 10:55:24 -0600
commit9707ffd97302bc3f4426745e9c053ce44b8be20b (patch)
treeb95759b4fa7d319f1328c2241836958836a1769b /nixos/modules/config/fonts
parent57ba2093bf88720bc3bc3a8e3ac65260404df714 (diff)
nixos: let fontconfig default fonts be lists of fonts
Diffstat (limited to 'nixos/modules/config/fonts')
-rw-r--r--nixos/modules/config/fonts/fontconfig.nix121
1 files changed, 35 insertions, 86 deletions
diff --git a/nixos/modules/config/fonts/fontconfig.nix b/nixos/modules/config/fonts/fontconfig.nix
index ca8313e017b1..793b0a250acd 100644
--- a/nixos/modules/config/fonts/fontconfig.nix
+++ b/nixos/modules/config/fonts/fontconfig.nix
@@ -38,29 +38,29 @@ with lib;
defaultFonts = {
monospace = mkOption {
- type = types.str;
- default = "DejaVu Sans Mono";
+ type = types.listOf types.str;
+ default = ["DejaVu Sans Mono"];
description = ''
- System-wide default monospace font. The default is not set if the
- option is set to <literal>""</literal>.
+ System-wide default monospace font(s). Multiple fonts may be
+ listed in case multiple languages must be supported.
'';
};
sansSerif = mkOption {
- type = types.str;
- default = "DejaVu Sans";
+ type = types.listOf types.str;
+ default = ["DejaVu Sans"];
description = ''
- System-wide default sans serif font. The default is not set if the
- option is set to <literal>""</literal>.
+ System-wide default sans serif font(s). Multiple fonts may be
+ listed in case multiple languages must be supported.
'';
};
serif = mkOption {
- type = types.str;
- default = "DejaVu Serif";
+ type = types.listOf types.str;
+ default = ["DejaVu Serif"];
description = ''
- System-wide default serif font. The default is not set if the
- option is set to <literal>""</literal>.
+ System-wide default serif font(s). Multiple fonts may be listed
+ in case multiple languages must be supported.
'';
};
};
@@ -142,16 +142,7 @@ with lib;
config =
let fontconfig = config.fonts.fontconfig;
fcBool = x: "<bool>" + (if x then "true" else "false") + "</bool>";
- in mkIf fontconfig.enable {
-
- # Fontconfig 2.10 backward compatibility
-
- # Bring in the default (upstream) fontconfig configuration, only for fontconfig 2.10
- environment.etc."fonts/fonts.conf".source =
- pkgs.makeFontsConf { fontconfig = pkgs.fontconfig_210; fontDirectories = config.fonts.fonts; };
-
- environment.etc."fonts/conf.d/98-nixos.conf".text =
- ''
+ nixosConf = ''
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
@@ -179,27 +170,33 @@ with lib;
</match>
<!-- Default fonts -->
- ${optionalString (fontconfig.defaultFonts.sansSerif != "") ''
+ ${optionalString (fontconfig.defaultFonts.sansSerif != []) ''
<alias>
<family>sans-serif</family>
<prefer>
- <family>${fontconfig.defaultFonts.sansSerif}</family>
+ ${concatStringsSep "\n"
+ (map (font: "<family>${font}</family>")
+ fontconfig.defaultFonts.sansSerif)}
</prefer>
</alias>
''}
- ${optionalString (fontconfig.defaultFonts.serif != "") ''
+ ${optionalString (fontconfig.defaultFonts.serif != []) ''
<alias>
<family>serif</family>
<prefer>
- <family>${fontconfig.defaultFonts.serif}</family>
+ ${concatStringsSep "\n"
+ (map (font: "<family>${font}</family>")
+ fontconfig.defaultFonts.serif)}
</prefer>
</alias>
''}
- ${optionalString (fontconfig.defaultFonts.monospace != "") ''
+ ${optionalString (fontconfig.defaultFonts.monospace != []) ''
<alias>
<family>monospace</family>
<prefer>
- <family>${fontconfig.defaultFonts.monospace}</family>
+ ${concatStringsSep "\n"
+ (map (font: "<family>${font}</family>")
+ fontconfig.defaultFonts.monospace)}
</prefer>
</alias>
''}
@@ -214,6 +211,15 @@ with lib;
</fontconfig>
'';
+ in mkIf fontconfig.enable {
+
+ # Fontconfig 2.10 backward compatibility
+
+ # Bring in the default (upstream) fontconfig configuration, only for fontconfig 2.10
+ environment.etc."fonts/fonts.conf".source =
+ pkgs.makeFontsConf { fontconfig = pkgs.fontconfig_210; fontDirectories = config.fonts.fonts; };
+
+ environment.etc."fonts/conf.d/98-nixos.conf".text = nixosConf;
# Versioned fontconfig > 2.10. Take shared fonts.conf from fontconfig.
# Otherwise specify only font directories.
@@ -230,64 +236,7 @@ with lib;
</fontconfig>
'';
- environment.etc."fonts/${pkgs.fontconfig.configVersion}/conf.d/98-nixos.conf".text =
- ''
- <?xml version='1.0'?>
- <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
- <fontconfig>
-
- <!-- Default rendering settings -->
- <match target="font">
- <edit mode="assign" name="hinting">
- ${fcBool fontconfig.hinting.enable}
- </edit>
- <edit mode="assign" name="autohint">
- ${fcBool fontconfig.hinting.autohint}
- </edit>
- <edit mode="assign" name="hintstyle">
- <const>hint${fontconfig.hinting.style}</const>
- </edit>
- <edit mode="assign" name="antialias">
- ${fcBool fontconfig.antialias}
- </edit>
- <edit mode="assign" name="rgba">
- <const>${fontconfig.subpixel.rgba}</const>
- </edit>
- <edit mode="assign" name="lcdfilter">
- <const>lcd${fontconfig.subpixel.lcdfilter}</const>
- </edit>
- </match>
-
- <!-- Default fonts -->
- <alias>
- <family>sans-serif</family>
- <prefer>
- <family>${fontconfig.defaultFonts.sansSerif}</family>
- </prefer>
- </alias>
- <alias>
- <family>serif</family>
- <prefer>
- <family>${fontconfig.defaultFonts.serif}</family>
- </prefer>
- </alias>
- <alias>
- <family>monospace</family>
- <prefer>
- <family>${fontconfig.defaultFonts.monospace}</family>
- </prefer>
- </alias>
-
- ${optionalString (fontconfig.dpi != 0) ''
- <match target="pattern">
- <edit name="dpi" mode="assign">
- <double>${fontconfig.dpi}</double>
- </edit>
- </match>
- ''}
-
- </fontconfig>
- '';
+ environment.etc."fonts/${pkgs.fontconfig.configVersion}/conf.d/98-nixos.conf".text = nixosConf;
environment.etc."fonts/${pkgs.fontconfig.configVersion}/conf.d/99-user.conf" = {
enable = fontconfig.includeUserConf;