;;; 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))) (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."))) fg (po4a_langs): Add 'sv'. * doc/local.mk: Add 'sv' cookbook. * doc/htmlxref.cnf: Update URLs for cookbook. * doc/build.scm (%cookbook-languages): Add 'sv'. * doc/guix-cookbook.texi (Top): Mention 'sv' cookbook. Change-Id: Ibfeb7254f583f1c8827e8c2756bbb02880bcba46 Florian Pelz 2024-05-01nls: Update translations....* po/packages/sv.po: New file. * po/packages/LINGUAS: Add it. Change-Id: I2ad4dfcb935ba0a4e79c15b86cee6826c6580729 Florian Pelz 2024-04-14maint: Use xgettext.scm wrapper to create .PO files reproducibly....* build-aux/xgettext.scm: New script. * po/guix/Makevars (XGETTEXT): Set it. (XGETTEXT_OPTIONS): Add --xgettext option to `real' xgettext. * po/packages/Makevars (XGETTEXT): Set it. (XGETTEXT_OPTIONS): Add --xgettext option to `real' xgettext. Change-Id: I71b6b843970090f765f46ac346b92a346560e3f0 Janneke Nieuwenhuizen 2024-04-01nls: Update translations....* po/guix/ar.po: New file. * po/guix/LINGUAS: Add 'ar'. * po/doc/guix-cookbook.pt_BR.po: New file. * po/doc/local.mk: Add 'pt_BR' cookbook. * doc/local.mk: Add 'pt_BR' cookbook. * doc/htmlxref.cnf: Update URLs for cookbook. * doc/build.scm (%cookbook-languages): Add 'ko', 'pt_BR'. * doc/guix-cookbook.texi (Top): Mention 'ko', 'pt_BR' cookbook. Change-Id: Id1846ca100263b3fc1fa2ed52654c670270ee809 Florian Pelz 2024-02-29nls: Update translations....Change-Id: Ic1506db5813880153b6def005011618dc4529e8f Florian Pelz 2024-02-01nls: Update translations....Change-Id: I42b5d41bdd5cd1b096c977e132b7a85992223402 Florian Pelz 2023-10-31nls: Update translations....Change-Id: I432aec0ea31ead192d6444c96dc42038f5c7ab9a Florian Pelz 2023-08-31nls: Update translations.Florian Pelz