{ runCommand, lib, fontconfig, fontDirectories, stdenv, buildPackages }: let # Use a build-platform fc-cache when cross-compiling to avoid Exec format errors. fc = if stdenv.buildPlatform != stdenv.hostPlatform then buildPackages.fontconfig else fontconfig; in runCommand "fc-cache" { nativeBuildInputs = [ fc.bin ]; preferLocalBuild = true; allowSubstitutes = false; passAsFile = [ "fontDirs" ]; fontDirs = '' ${lib.concatStringsSep "\n" (map (font: "${font}") fontDirectories)} ''; } '' export FONTCONFIG_FILE=$(pwd)/fonts.conf cat > fonts.conf << EOF ${fontconfig.out}/etc/fonts/fonts.conf $out EOF cat "$fontDirsPath" >> fonts.conf echo "" >> fonts.conf mkdir -p $out fc-cache -sv # This is not a cache dir in the normal sense -- it won't be automatically # recreated. rm -f "$out/CACHEDIR.TAG" ''