Alex Kost <alez...@gmail.com> skribis: > * guix/profiles.scm (fonts-dir-file): New procedure. > (%default-profile-hooks): Add it.
[...] > +(define (fonts-dir-file manifest) > + "Return a derivation that builds the @file{fonts.dir} and > @file{fonts.scale} > +files for the truetype fonts of the @var{manifest} entries." > + (define mkfontscale > + (module-ref (resolve-interface '(gnu packages xorg)) 'mkfontscale)) > + > + (define mkfontdir > + (module-ref (resolve-interface '(gnu packages xorg)) 'mkfontdir)) > + > + (define build > + #~(begin > + (use-modules (srfi srfi-26) > + (guix build utils) > + (guix build union)) > + (let ((ttf-dirs (filter file-exists? > + (map (cut string-append <> > + "/share/fonts/truetype") > + '#$(manifest-inputs manifest))))) > + (mkdir #$output) > + (if (null? ttf-dirs) > + (exit #t) > + (let* ((fonts-dir (string-append #$output "/share/fonts")) > + (ttf-dir (string-append fonts-dir "/truetype")) > + (mkfontscale (string-append #+mkfontscale > + "/bin/mkfontscale")) > + (mkfontdir (string-append #+mkfontdir > + "/bin/mkfontdir"))) > + (mkdir-p fonts-dir) > + (union-build ttf-dir ttf-dirs > + #:log-port (%make-void-port "w")) > + (with-directory-excursion ttf-dir > + (exit (and (zero? (system* mkfontscale)) > + (zero? (system* mkfontdir)))))))))) > + > + (gexp->derivation "fonts-dir-file" build > + #:modules '((guix build utils) > + (guix build union)) > + #:local-build? #t > + #:substitutable? #f)) A potential problem with this hook is that it pulls mkfontscale and mkfontdir regardless of whether they are needed; I can’t really think of a way to avoid it though. Also, how does it relate to this: commit bf9655f57d2442d56661594b80f6d0031ca0ae73 Author: Eric Bavier <bav...@member.fsf.org> Date: Mon Oct 19 06:44:23 2015 -0500 font-alias: Install dummy fonts.dir files. * gnu/packages/xorg.scm (font-alias)[arguments]: New 'install-fonts-dir' phase. ? Thanks, Ludo’.