diff --git a/pkgs/development/libraries/fontconfig/make-fonts-cache.nix b/pkgs/development/libraries/fontconfig/make-fonts-cache.nix
new file mode 100644
index 00000000000..1321948c3c8
--- /dev/null
+++ b/pkgs/development/libraries/fontconfig/make-fonts-cache.nix
@@ -0,0 +1,27 @@
+{ runCommand, lib, writeText, fontconfig, fontbhttf, fontDirectories }:
+
+runCommand "fc-cache"
+ rec {
+ buildInputs = [ fontconfig ];
+ passAsFile = [ "fontDirs" ];
+ fontDirs = ''
+
+ ${lib.concatStringsSep "\n" (map (font: "
${font}") fontDirectories)}
+ '';
+ }
+ ''
+ export FONTCONFIG_FILE=$(pwd)/fonts.conf
+
+ cat > fonts.conf << EOF
+
+
+
+ ${fontconfig}/etc/fonts/fonts.conf
+ $out
+ EOF
+ cat "$fontDirsPath" >> fonts.conf
+ echo "" >> fonts.conf
+
+ mkdir -p $out
+ fc-cache -sv
+ ''
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index d909f127b3f..d3ead0848da 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6503,6 +6503,11 @@ let
inherit fontconfig fontDirectories;
};
+ makeFontsCache = let fontconfig_ = fontconfig; in {fontconfig ? fontconfig_, fontDirectories}:
+ callPackage ../development/libraries/fontconfig/make-fonts-cache.nix {
+ inherit fontconfig fontDirectories;
+ };
+
freealut = callPackage ../development/libraries/freealut { };
freeglut = callPackage ../development/libraries/freeglut { };