1
0
Fork 0
mirror of https://github.com/nix-community/home-manager synced 2024-12-25 11:19:47 +01:00

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
This commit is contained in:
Robert Helgesson 2019-04-21 19:31:44 +02:00
parent 2f819d1647
commit f18e2933d4
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89

View file

@ -6,36 +6,74 @@ let
cfg = config.fonts.fontconfig; cfg = config.fonts.fontconfig;
profileDirectory = config.home.profileDirectory;
in in
{ {
meta.maintainers = [ maintainers.rycee ]; meta.maintainers = [ maintainers.rycee ];
imports = [
(mkRenamedOptionModule
[ "fonts" "fontconfig" "enableProfileFonts" ]
[ "fonts" "fontconfig" "enable" ])
];
options = { options = {
fonts.fontconfig = { fonts.fontconfig = {
enableProfileFonts = mkOption { enable = mkOption {
type = types.bool; type = types.bool;
default = false; default = false;
example = true;
description = '' 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 <varname>home.packages</varname> and
<command>nix-env</command>. <command>nix-env</command>.
</para><para>
Note, this is only necessary on non-NixOS systems.
''; '';
}; };
}; };
}; };
config = mkIf cfg.enableProfileFonts { config = mkIf cfg.enable {
xdg.configFile."fontconfig/conf.d/10-nix-profile-fonts.conf".text = '' home.extraProfileCommands = ''
export FONTCONFIG_FILE=$(pwd)/fonts.conf
cat > $FONTCONFIG_FILE << EOF
<?xml version='1.0'?> <?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig> <fontconfig>
<dir>${config.home.profileDirectory}/lib/X11/fonts</dir> <dir>$out/lib/X11/fonts</dir>
<dir>${config.home.profileDirectory}/share/fonts</dir> <dir>$out/share/fonts</dir>
<cachedir>$out/lib/fontconfig/cache</cachedir>
</fontconfig> </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>
'';
};
}; };
} }