summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-03-20 15:27:44 +0100
committerLudovic Courtès <ludo@gnu.org>2016-03-20 15:27:44 +0100
commite71ef7adaece7e132a5059139122b45083ea1b39 (patch)
tree24805ba5c5dba0837e421f4d265ddf55a2b74239
parent0bd3597bbe0acb901f63ef386489eebb8e177c1c (diff)
downloadguix-e71ef7adaece7e132a5059139122b45083ea1b39.tar.gz
system: Make sure fonts are searched for in the system profile.
This fixes a bug whereby fonts in /run/current-system/profile would be
invisible to Fontconfig.

* gnu/packages/fontutils.scm (fontconfig): Add comment about system
profile not being searched.
* gnu/system/shadow.scm (default-skeletons)[fonts.conf-content,
fonts.conf]: New variable.
Add FONTS.CONF to the skeletons.
-rw-r--r--gnu/packages/fontutils.scm4
-rw-r--r--gnu/system/shadow.scm23
2 files changed, 27 insertions, 0 deletions
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 01a0ee7c36..7e3f293817 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -94,8 +94,12 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
             (string-append "--with-default-fonts="
                            (assoc-ref %build-inputs "gs-fonts")
                            "/share/fonts")
+
             ;; register fonts from user profile
+            ;; TODO: Add /run/current-system/profile/share/fonts and remove
+            ;; the skeleton that works around it from 'default-skeletons'.
             "--with-add-fonts=~/.guix-profile/share/fonts"
+
             ;; python is not actually needed
             "PYTHON=false")
       #:phases
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 6e62aeee57..a13ef1192c 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -131,6 +131,12 @@
 (define (default-skeletons)
   "Return the default skeleton files for /etc/skel.  These files are copied by
 'useradd' in the home directory of newly created user accounts."
+  (define fonts.conf-content
+    ;; SXML for ~/.config/fontconfig/fonts.conf.  This works around the fact
+    ;; that Fontconfig currently does not such this directory by default,
+    ;; thereby ignoring fonts installed system-wide (FIXME).
+    `(fontconfig (dir "/run/current-system/profile/share/fonts")))
+
   (define copy-guile-wm
     #~(begin
         (use-modules (guix build utils))
@@ -174,6 +180,22 @@ source /etc/profile\n"))
         (xdefaults (plain-file "Xdefaults" "\
 XTerm*utf8: always
 XTerm*metaSendsEscape: true\n"))
+        (fonts.conf (computed-file
+                     "fonts.conf"
+                     #~(begin
+                         (use-modules (guix build utils)
+                                      (sxml simple))
+
+                         (define dir
+                           (string-append #$output
+                                          "/fontconfig"))
+
+                         (mkdir-p dir)
+                         (call-with-output-file (string-append dir
+                                                             "/fonts.conf")
+                           (lambda (port)
+                             (sxml->xml '#$fonts.conf-content port))))
+                     #:modules '((guix build utils))))
         (gdbinit   (plain-file "gdbinit" "\
 # Tell GDB where to look for separate debugging files.
 set debug-file-directory ~/.guix-profile/lib/debug\n")))
@@ -182,6 +204,7 @@ set debug-file-directory ~/.guix-profile/lib/debug\n")))
       (".zlogin" ,zlogin)
       (".Xdefaults" ,xdefaults)
       (".guile-wm" ,guile-wm)
+      (".config" ,fonts.conf)
       (".gdbinit" ,gdbinit))))
 
 (define (skeleton-directory skeletons)