;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2021 Andrew Tropin ;;; Copyright © 2021 Xinglu Chen ;;; Copyright © 2023 Giacomo Leidi ;;; Copyright © 2023 Andrew Patterson ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu home services fontutils) #:use-module (gnu home services) #:use-module (gnu packages fontutils) #:use-module (guix gexp) #:use-module (srfi srfi-1) #:use-module (ice-9 match) #:use-module (sxml simple) #:export (home-fontconfig-service-type)) ;;; Commentary: ;;; ;;; Services related to fonts. home-fontconfig service provides ;;; fontconfig configuration, which allows fc-* utilities to find ;;; fonts in Guix Home's profile and regenerates font cache on ;;; activation. ;;; ;;; Code: (define (write-fontconfig-doctype) "Prints fontconfig's DOCTYPE to current-output-port." ;; This is necessary because SXML doesn't seem to have a way to represent a doctype, ;; but sxml->xml /does/ currently call any thunks in the SXML with the XML output port ;; as current-output-port, allowing the output to include arbitrary text instead of ;; just properly quoted XML. (format #t "")) (define (config->sxml config) "Converts a record into the SXML representation of fontconfig's fonts.conf file." (define (snippets->sxml snippet) (match snippet ((or (? string? dir) (? gexp? dir)) `(dir ,dir)) ((? list?) snippet))) `(*TOP* (*PI* xml "version='1.0'") ,write-fontconfig-doctype (fontconfig ,@(map snippets->sxml config)))) (define (add-fontconfig-config-file config) `(("fontconfig/fonts.conf" ,(mixed-text-file "fonts.conf" (call-with-output-string (lambda (port) (sxml->xml (config->sxml config) port))))))) (define (regenerate-font-cache-gexp _) `(("profile/share/fonts" ,#~(system* #$(file-append fontconfig "/bin/fc-cache") "-fv")))) (define home-fontconfig-service-type (service-type (name 'home-fontconfig) (extensions (list (service-extension home-xdg-configuration-files-service-type add-fontconfig-config-file) (service-extension home-run-on-change-service-type regenerate-font-cache-gexp) (service-extension home-profile-service-type (const (list fontconfig))))) (compose concatenate) (extend append) (default-value '("~/.guix-home/profile/share/fonts")) (description "Provides configuration file for fontconfig and make fc-* utilities aware of font packages installed in Guix Home's profile."))) td> 2018-02-26build: Require Guile >= 2.0.13....* README, configure.ac, doc/guix.texi (Requirements): Increase minimum Guile version from 2.0.9 to 2.0.13. * config-daemon.ac: Remove use of 'GUIX_CHECK_UNBUFFERED_CBIP'. * m4/guix.m4 (GUIX_CHECK_UNBUFFERED_CBIP): Remove. * guix/build/download.scm (current-http-proxy): Remove. * guix/build/syscalls.scm (%libc-errno-pointer, errno): Remove. (syscall->procedure): Use #:return-errno unconditionally. * guix/hash.scm (open-sha256-input-port)[unbuffered]: Remove outdated comment. * guix/http-client.scm (when-guile<=2.0.5-or-otherwise-broken): Remove. <top level>: Remove 'when-guile<=2.0.5-or-otherwise-broken' block. * guix/scripts/substitute.scm (fetch): Remove 'guile-version>?' conditional. * tests/hash.scm (supports-unbuffered-cbip?): Remove. <top level>: Remove 'test-skip' call. Ludovic Courtès 2018-01-07doc: Mark zlib as mandatory, libbz2 as optional....* doc/guix.texi (Requirements): Move zlib to mandatory and libbz2 to optional. * README: Ditto. Ludovic Courtès 2018-01-01doc: Update requirements in 'README'....* README (Requirements): Update. Mathieu Lirzin 2017-09-25README: Replace http:// with https:// where applicable.Marius Bakke 2017-03-18build: Require Guile >= 2.0.9....* configure.ac: Bump requirement to 2.0.9. * doc/guix.texi (Requirements): Adjust accordingly. * README (Requirements): Likewise. * build-aux/download.scm: Remove workaround for <http://bugs.gnu.org/13095>. * guix/build/download.scm: Likewise. (http-fetch)[post-2.0.7?]: Remove. Remove conditional code for not POST-2.0.7?. * guix/http-client.scm: Remove workaround for <http://bugs.gnu.org/13095>. (http-fetch)[post-2.0.7?]: Remove. Remove conditional code for not POST-2.0.7?. * guix/serialization.scm (read-latin1-string): Remove mention of 2.0.9. * tests/nar.scm: Use (ice-9 control). (let/ec): Remove. Ludovic Courtès 2017-01-30maint: Fix invalid calls to 'info'....* HACKING <Contributing>: Remove name of the manual from the item argument. * README <Installation>: Likewise. Mathieu Lirzin