{ buildPackages, fontconfig, lib, runCommand, stdenv, }: let fontconfig' = fontconfig; in { fontconfig ? fontconfig', fontDirectories, }: runCommand "fc-cache" { 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 # N.B.: fc-cache keys its cache entries by architecture. # We must invoke the host `fc-cache` (not the build fontconfig) if we want # the cache to be usable by the host. mkdir -p $out ${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe' fontconfig "fc-cache"} -sv # This is not a cache dir in the normal sense -- it won't be automatically # recreated. rm -f "$out/CACHEDIR.TAG" ''