[PATCH] home: services: fontutils: Add service value.

  • Done
  • quality assurance status badge
Details
2 participants
  • goodoldpaul
  • Ludovic Courtès
Owner
unassigned
Submitted by
goodoldpaul
Severity
normal

Debbugs page

goodoldpaul wrote 2 years ago
(address . guix-patches@gnu.org)
3c0e43334aab599678ddeee842c073ee@autistici.org
Dear Guixers,

I'm sending a patch to allow for multiple directories in
home-fontconfig-service-type's configuration.

Thank you for your time and efforts,

giacomo
Giacomo Leidi wrote 2 years ago
(address . 60498@debbugs.gnu.org)(name . Giacomo Leidi)(address . goodoldpaul@autistici.org)
20230102174451.6827-1-goodoldpaul@autistici.org
* gnu/home/services/fontutils.scm (add-fontconfig-config-file): Add
support for multiple paths;
(home-fontconfig-service-type): Honor it;
* doc/guix.texi (Fonts Services): Document it.
---
doc/guix.texi | 25 +++++++++++++++++++++++++
gnu/home/services/fontutils.scm | 18 ++++++++++++------
2 files changed, 37 insertions(+), 6 deletions(-)

Toggle diff (101 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index 5c85680831..1e70dd05c0 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -40980,6 +40980,7 @@ services)}.
* SSH: Secure Shell. Setting up the secure shell client.
* Desktop: Desktop Home Services. Services for graphical environments.
* Guix: Guix Home Services. Services for Guix.
+* Fonts: Fonts Home Services. Services for managing User's fonts.
@end menu
@c In addition to that Home Services can provide
@@ -41856,6 +41857,30 @@ A typical extension for adding a channel might look like this:
@end lisp
@end defvr
+@node Fonts Services
+@subsection Fonts Home Services
+
+The @code{(gnu home services fontutils)} module provides services for
+user-specific @code{fontconfig} setup.
+
+@defvr {Scheme Variable} home-fontconfig-service-type
+This is the service type for generating configurations for @code{fontconfig} and @code{fc-*} utilities.
+Its associated value is a list of strings (or gexps) pointing to fonts locations.
+
+Generally, it is better to extend this service than to directly
+configure it, as its default value is the default Guix Home's profile
+font installation path (@code{~/.guix-home/profile/share/fonts}). If you configure this
+service directly, be sure to include the above path.
+
+A typical extension for adding an additional path might look like this:
+
+@lisp
+(simple-service 'additional-fonts-service
+ home-fontconfig-service-type
+ (list "~/.nix-profile/share/fonts"))
+@end lisp
+@end defvr
+
@node Invoking guix home
@section Invoking @command{guix home}
diff --git a/gnu/home/services/fontutils.scm b/gnu/home/services/fontutils.scm
index 6062eaed6a..f959ee4fd6 100644
--- a/gnu/home/services/fontutils.scm
+++ b/gnu/home/services/fontutils.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,6 +22,7 @@ (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)
#:export (home-fontconfig-service-type))
@@ -33,15 +35,17 @@ (define-module (gnu home services fontutils)
;;;
;;; Code:
-(define (add-fontconfig-config-file he-symlink-path)
+(define (add-fontconfig-config-file paths)
`(("fontconfig/fonts.conf"
,(mixed-text-file
"fonts.conf"
- "<?xml version='1.0'?>
+ (apply string-append
+ `("<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
-<fontconfig>
- <dir>~/.guix-home/profile/share/fonts</dir>
-</fontconfig>"))))
+<fontconfig>\n" ,@(map (lambda (path)
+ (string-append " <dir>" path "</dir>\n"))
+ paths)
+ "</fontconfig>\n"))))))
(define (regenerate-font-cache-gexp _)
`(("profile/share/fonts"
@@ -59,7 +63,9 @@ (define home-fontconfig-service-type
(service-extension
home-profile-service-type
(const (list fontconfig)))))
- (default-value #f)
+ (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.")))

base-commit: 7efcf36e3b753a1dba6f8208f3c22d151007eaf0
--
2.38.1
Ludovic Courtès wrote 2 years ago
(name . Giacomo Leidi)(address . goodoldpaul@autistici.org)(address . 60498-done@debbugs.gnu.org)
878rhitl4k.fsf_-_@gnu.org
Hi Giacomo,

Giacomo Leidi <goodoldpaul@autistici.org> skribis:

Toggle quote (5 lines)
> * gnu/home/services/fontutils.scm (add-fontconfig-config-file): Add
> support for multiple paths;
> (home-fontconfig-service-type): Honor it;
> * doc/guix.texi (Fonts Services): Document it.

Applied with the cosmetic changes below.

Thanks!

Ludo’.
Toggle diff (73 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index f72deb3222..64873db00b 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -42015,29 +42015,34 @@ A typical extension for adding a channel might look like this:
@end lisp
@end defvar
-@node Fonts Services
+@node Fonts Home Services
@subsection Fonts Home Services
The @code{(gnu home services fontutils)} module provides services for
-user-specific @code{fontconfig} setup.
+user-specific Fontconfig setup. The
+@uref{https://www.freedesktop.org/wiki/Software/fontconfig,Fontconfig}
+library is used by many applications to access fonts on the system.
-@defvr {Scheme Variable} home-fontconfig-service-type
-This is the service type for generating configurations for @code{fontconfig} and @code{fc-*} utilities.
-Its associated value is a list of strings (or gexps) pointing to fonts locations.
+@defvar home-fontconfig-service-type
+This is the service type for generating configurations for Fontconfig.
+Its associated value is a list of strings (or gexps) pointing to fonts
+locations.
Generally, it is better to extend this service than to directly
configure it, as its default value is the default Guix Home's profile
-font installation path (@code{~/.guix-home/profile/share/fonts}). If you configure this
-service directly, be sure to include the above path.
+font installation path (@file{~/.guix-home/profile/share/fonts}). If
+you configure this service directly, be sure to include the above
+directory.
-A typical extension for adding an additional path might look like this:
+A typical extension for adding an additional font directory might look
+like this:
@lisp
(simple-service 'additional-fonts-service
home-fontconfig-service-type
(list "~/.nix-profile/share/fonts"))
@end lisp
-@end defvr
+@end defvar
@node Invoking guix home
@section Invoking @command{guix home}
diff --git a/gnu/home/services/fontutils.scm b/gnu/home/services/fontutils.scm
index f959ee4fd6..3399cb7ec8 100644
--- a/gnu/home/services/fontutils.scm
+++ b/gnu/home/services/fontutils.scm
@@ -35,16 +35,16 @@ (define-module (gnu home services fontutils)
;;;
;;; Code:
-(define (add-fontconfig-config-file paths)
+(define (add-fontconfig-config-file directories)
`(("fontconfig/fonts.conf"
,(mixed-text-file
"fonts.conf"
(apply string-append
`("<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
-<fontconfig>\n" ,@(map (lambda (path)
- (string-append " <dir>" path "</dir>\n"))
- paths)
+<fontconfig>\n" ,@(map (lambda (directory)
+ (string-append " <dir>" directory "</dir>\n"))
+ directories)
"</fontconfig>\n"))))))
(define (regenerate-font-cache-gexp _)
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 60498@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 60498
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help