aboutsummaryrefslogtreecommitdiff
path: root/modules/misc/fontconfig.nix
diff options
context:
space:
mode:
authorRobert Helgesson <robert@rycee.net>2019-04-21 19:31:44 +0200
committerRobert Helgesson <robert@rycee.net>2019-04-30 00:28:07 +0200
commitf18e2933d485d1d93d399b9637e26a0de1510747 (patch)
tree136233ca9ed991cfc08658d5500fc3e6f124f4e3 /modules/misc/fontconfig.nix
parent2f819d1647d4c73aad6ca8fec8348beaae4bb870 (diff)
fontconfig: generate font cache files
Also deprecates the `fonts.fontconfig.enableProfileFonts` option. The configuration is now always generated if `fonts.fontconfig.enable` is set. Fixes #520
Diffstat (limited to 'modules/misc/fontconfig.nix')
-rw-r--r--modules/misc/fontconfig.nix56
1 files changed, 47 insertions, 9 deletions
diff --git a/modules/misc/fontconfig.nix b/modules/misc/fontconfig.nix
index 9ad8b195f72..2b989c8fc3e 100644
--- a/modules/misc/fontconfig.nix
+++ b/modules/misc/fontconfig.nix
@@ -6,36 +6,74 @@ let
cfg = config.fonts.fontconfig;
+ profileDirectory = config.home.profileDirectory;
+
in
{
meta.maintainers = [ maintainers.rycee ];
+ imports = [
+ (mkRenamedOptionModule
+ [ "fonts" "fontconfig" "enableProfileFonts" ]
+ [ "fonts" "fontconfig" "enable" ])
+ ];
+
options = {
fonts.fontconfig = {
- enableProfileFonts = mkOption {
+ enable = mkOption {
type = types.bool;
default = false;
- example = true;
description = ''
- Configure fontconfig to discover fonts installed through
+ Whether to enable fontconfig configuration. This will, for
+ example, allow fontconfig to discover fonts and
+ configurations installed through
<varname>home.packages</varname> and
<command>nix-env</command>.
- </para><para>
- Note, this is only necessary on non-NixOS systems.
'';
};
};
};
- config = mkIf cfg.enableProfileFonts {
- xdg.configFile."fontconfig/conf.d/10-nix-profile-fonts.conf".text = ''
+ config = mkIf cfg.enable {
+ home.extraProfileCommands = ''
+ export FONTCONFIG_FILE=$(pwd)/fonts.conf
+
+ cat > $FONTCONFIG_FILE << EOF
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
- <dir>${config.home.profileDirectory}/lib/X11/fonts</dir>
- <dir>${config.home.profileDirectory}/share/fonts</dir>
+ <dir>$out/lib/X11/fonts</dir>
+ <dir>$out/share/fonts</dir>
+ <cachedir>$out/lib/fontconfig/cache</cachedir>
</fontconfig>
+ EOF
+
+ ${getBin pkgs.fontconfig}/bin/fc-cache -f
+ rm $out/lib/fontconfig/cache/CACHEDIR.TAG
+
+ unset FONTCONFIG_FILE
'';
+
+ xdg.configFile = {
+ "fontconfig/conf.d/10-hm-fonts.conf".text = ''
+ <?xml version='1.0'?>
+
+ <!-- Generated by Home Manager. -->
+
+ <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+ <fontconfig>
+ <include ignore_missing="yes">${config.home.path}/etc/fonts/conf.d</include>
+ <include ignore_missing="yes">${config.home.path}/etc/fonts/fonts.conf</include>
+
+ <dir>${config.home.path}/lib/X11/fonts</dir>
+ <dir>${config.home.path}/share/fonts</dir>
+ <dir>${profileDirectory}/lib/X11/fonts</dir>
+ <dir>${profileDirectory}/share/fonts</dir>
+
+ <cachedir>${config.home.path}/lib/fontconfig/cache</cachedir>
+ </fontconfig>
+ '';
+ };
};
}