{ lib, stdenv, fetchurl, cabextract }: let fonts = [ { name = "andale"; hash = "sha256-BST+QpUa3Dp+uHDjLwkgMTxx8XDIWbX3cNgrTuER6XA="; } { name = "arial"; hash = "sha256-hSl6TRRunIesb3SCJzS97l9LKnItfqpYS38sv3b0ePY="; } { name = "arialb"; hash = "sha256-pCXw/7ahpe3luXntYXf09PT972rnwwKnt3IO8zL+wKg="; } { name = "comic"; hash = "sha256-nG3z/u/eJtTkHUpP5dsqifkSOncllNf1mv0GJiXNIE4="; } { name = "courie"; hash = "sha256-u1EdhhZV3eh5rlUuuGsTTW+uZ8tYUC5v9z7F2RUfM4Q="; } { name = "georgi"; hash = "sha256-LCx9zaZgbqXPCJGPt80/M1np6EM43GkAE/IM1C6TAwE="; } { name = "impact"; hash = "sha256-YGHvO3QB2WQvXf218rN2qhRmP2J15gpRIHrU+s8vzPs="; } { name = "times"; hash = "sha256-21ZZXsbvXT3lwkmU8AHwOyoT43zuJ7wlxY9vQ+j4B6s="; } { name = "trebuc"; hash = "sha256-WmkNm7hRC+G4tP5J8fIxllH+UbvlR3Xd3djvC9B/2sk="; } { name = "webdin"; hash = "sha256-ZFlbWrwQgPuoYQxcNPq1hjQI6Aaq/oRlPKhXW+0X11o="; } { name = "verdan"; hash = "sha256-wcthJV42MWZ5TkdmTi8hr446JstjRuuNKuL6hd1arZY="; } { name = "wd97vwr"; hash = "sha256-9hEmptF7LRJqfzGxQlBNzkk095icVfHBPGR3s/6As9I="; } ]; eula = fetchurl { url = "https://corefonts.sourceforge.net/eula.htm"; hash = "sha256-LOgNEsM+dANEreP2LsFi+pAnBNDMFB9Pg+KJAahlC6s="; }; in stdenv.mkDerivation { pname = "corefonts"; version = "1"; exes = map ({name, hash}: fetchurl { url = "mirror://sourceforge/corefonts/the%20fonts/final/${name}32.exe"; inherit hash; }) fonts; nativeBuildInputs = [ cabextract ]; buildCommand = '' for i in $exes; do cabextract --lowercase $i done cabextract --lowercase viewer1.cab # rename to more standard names # handle broken macOS file-system mv andalemo.ttf Andale_Mono.ttf mv ariblk.ttf Arial_Black.ttf mv arial.ttf Arial.ttf.tmp mv Arial.ttf.tmp Arial.ttf mv arialbd.ttf Arial_Bold.ttf mv arialbi.ttf Arial_Bold_Italic.ttf mv ariali.ttf Arial_Italic.ttf mv comic.ttf Comic_Sans_MS.ttf mv comicbd.ttf Comic_Sans_MS_Bold.ttf mv cour.ttf Courier_New.ttf mv courbd.ttf Courier_New_Bold.ttf mv couri.ttf Courier_New_Italic.ttf mv courbi.ttf Courier_New_Bold_Italic.ttf mv georgia.ttf Georgia.ttf.tmp mv Georgia.ttf.tmp Georgia.ttf mv georgiab.ttf Georgia_Bold.ttf mv georgiai.ttf Georgia_Italic.ttf mv georgiaz.ttf Georgia_Bold_Italic.ttf mv impact.ttf Impact.ttf.tmp mv Impact.ttf.tmp Impact.ttf mv tahoma.ttf Tahoma.ttf.tmp mv Tahoma.ttf.tmp Tahoma.ttf mv times.ttf Times_New_Roman.ttf mv timesbd.ttf Times_New_Roman_Bold.ttf mv timesbi.ttf Times_New_Roman_Bold_Italic.ttf mv timesi.ttf Times_New_Roman_Italic.ttf mv trebuc.ttf Trebuchet_MS.ttf mv trebucbd.ttf Trebuchet_MS_Bold.ttf mv trebucit.ttf Trebuchet_MS_Italic.ttf mv trebucbi.ttf Trebuchet_MS_Italic.ttf mv verdana.ttf Verdana.ttf.tmp mv Verdana.ttf.tmp Verdana.ttf mv verdanab.ttf Verdana_Bold.ttf mv verdanai.ttf Verdana_Italic.ttf mv verdanaz.ttf Verdana_Bold_Italic.ttf mv webdings.ttf Webdings.ttf.tmp mv Webdings.ttf.tmp Webdings.ttf install -m444 -Dt $out/share/fonts/truetype *.ttf # Also put the EULA there to be on the safe side. cp ${eula} $out/share/fonts/truetype/eula.html # Set up no-op font configs to override any aliases set up by other packages. mkdir -p $out/etc/fonts/conf.d for name in Andale-Mono Arial-Black Arial Comic-Sans-MS \ Courier-New Georgia Impact Times-New-Roman \ Trebuchet Verdana Webdings ; do substitute ${./no-op.conf} $out/etc/fonts/conf.d/30-''${name,,}.conf \ --subst-var-by fontname "''${name//-/ }" done ''; meta = with lib; { homepage = "https://corefonts.sourceforge.net/"; description = "Microsoft's TrueType core fonts for the Web"; platforms = platforms.all; license = licenses.unfreeRedistributable; # Set a non-zero priority to allow easy overriding of the # fontconfig configuration files. priority = 5; }; }