aboutsummaryrefslogtreecommitdiff
path: root/modules/misc/fontconfig.nix
diff options
context:
space:
mode:
authorRobert Helgesson <robert@rycee.net>2019-05-06 00:27:25 +0200
committerRobert Helgesson <robert@rycee.net>2019-05-06 00:44:23 +0200
commitb256e3a44f9d9c10b1554c01cada888eb66312ab (patch)
treeefa10b99f7b7356f1ef4213bf8d858d1bbb2a1c5 /modules/misc/fontconfig.nix
parent939274281aa9ee6b11d41aa252806ab31c02555b (diff)
fontconfig: fix build error
This fixes a build error occurring when building a configuration having fontconfig enabled and `home.packages` only containing one package installing things to `/lib`. Also adds a number of test cases to verify the fontconfig cache generation functionality. Fixes #703
Diffstat (limited to 'modules/misc/fontconfig.nix')
-rw-r--r--modules/misc/fontconfig.nix36
1 files changed, 31 insertions, 5 deletions
diff --git a/modules/misc/fontconfig.nix b/modules/misc/fontconfig.nix
index 9f3def775f5..8dbcce53c22 100644
--- a/modules/misc/fontconfig.nix
+++ b/modules/misc/fontconfig.nix
@@ -36,10 +36,29 @@ in
};
config = mkIf cfg.enable {
+ # Create two dummy files in /lib/fontconfig to make sure that
+ # buildEnv creates a real directory path. These files are removed
+ # in home.extraProfileCommands below so the packages will not
+ # become "runtime" dependencies.
+ home.packages = [
+ (pkgs.writeTextFile {
+ name = "hm-dummy1";
+ destination = "/lib/fontconfig/hm-dummy1";
+ text = "dummy";
+ })
+
+ (pkgs.writeTextFile {
+ name = "hm-dummy2";
+ destination = "/lib/fontconfig/hm-dummy2";
+ text = "dummy";
+ })
+ ];
+
home.extraProfileCommands = ''
- export FONTCONFIG_FILE=$(pwd)/fonts.conf
+ if [[ -d $out/lib/X11/fonts || -d $out/share/fonts ]]; then
+ export FONTCONFIG_FILE="$(pwd)/fonts.conf"
- cat > $FONTCONFIG_FILE << EOF
+ cat > $FONTCONFIG_FILE << EOF
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
@@ -49,10 +68,17 @@ in
</fontconfig>
EOF
- ${getBin pkgs.fontconfig}/bin/fc-cache -f
- rm -f $out/lib/fontconfig/cache/CACHEDIR.TAG
+ ${getBin pkgs.fontconfig}/bin/fc-cache -f
+ rm -f $out/lib/fontconfig/cache/CACHEDIR.TAG
+ rmdir --ignore-fail-on-non-empty -p $out/lib/fontconfig/cache
+
+ rm "$FONTCONFIG_FILE"
+ unset FONTCONFIG_FILE
+ fi
- unset FONTCONFIG_FILE
+ # Remove hacky dummy files.
+ rm $out/lib/fontconfig/hm-dummy?
+ rmdir --ignore-fail-on-non-empty -p $out/lib/fontconfig
'';
xdg.configFile = {