diff mbox series

[bug#64399] installer: Restore LatGrkCyr-8x16 console font depending on language.

Message ID 34ca88bad83d40c14346f18ddbc34e8d2884f88f.1688217377.git.vegan@libre.net.ua
State New
Headers show
Series [bug#64399] installer: Restore LatGrkCyr-8x16 console font depending on language. | expand

Commit Message

Denys Nykula July 1, 2023, 1:19 p.m. UTC
Partially-Fixes: <https://issues.guix.gnu.org/64006>

* gnu/installer/services.scm (system-services->configuration): When the
LANGUAGE environment variable matches a known native console font, wrap the
%desktop-services or %base-services with modify-services, configuring
console-font-service-type to set the native console font on every tty instead
of the default console font.
---
This makes console messages, such as errors and help texts, readable (like they
were in Guix System 1.4.0) if the user chooses the Belarusian, Bulgarian,
Greek, Esperanto, Kazakh, Kyrgyz, Macedonian, Mongolian, Russian, Serbian,
Tajik or Ukrainian language at the beginning of a new installation.  For other
languages, this keeps the default font, which is Unifont-APL8x16 in the latest
development snapshots.  Thanks to Florian Pelz and Josselin Poiret for tips
about editing the installer and testing it using a virtual machine.

 gnu/installer/services.scm | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)


base-commit: b24a05830d11e3011eee4bc5f60a41e26188cde1

Comments

pelzflorian July 1, 2023, 5:03 p.m. UTC | #1
Hello Denys,

this patch looks good mostly good to me, except in my opinion,
`base-with-default-console-font' should be called `base' and
what is called `base' in your patch should be called `services'.
Consequently within the `let' body, the services field then could be set
as (services ,services) instead of (services ,base).

The one who commits the patch can fix it, but perhaps you could also
indent properly and untabify your change and then resend a v2 of the
patch?  In the manual’s Contributing section, the recommended way is to
use Emacs for automatic formatting, where you can press the tab key for
automatic indentation.

I have not tested yet.

I put the installer team in Cc.  If noone disagrees, I will make the
above changes, test, and commit this patch next weekend.

Regards,
Florian
diff mbox series

Patch

diff --git a/gnu/installer/services.scm b/gnu/installer/services.scm
index d08bab47fd..fb66f2248c 100644
--- a/gnu/installer/services.scm
+++ b/gnu/installer/services.scm
@@ -4,6 +4,7 @@ 
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2023 Denys Nykula <vegan@libre.net.ua>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +24,7 @@ 
 (define-module (gnu installer services)
   #:use-module (guix records)
   #:use-module (guix read-print)
+  #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
   #:export (system-service?
             system-service-name
@@ -156,9 +158,22 @@  (define (system-services->configuration services)
   (let* ((snippets (append-map system-service-snippet services))
          (packages (append-map system-service-packages services))
          (desktop? (find desktop-system-service? services))
-         (base     (if desktop?
-                       '%desktop-services
-                       '%base-services))
+         (base-with-default-console-font (if desktop?
+					     '%desktop-services
+					     '%base-services))
+	 (native-console-font (match (getenv "LANGUAGE")
+				((or "be" "bg" "el" "eo" "kk" "ky"
+				     "mk" "mn" "ru" "sr" "tg" "uk")
+				 "LatGrkCyr-8x16.psfu.gz")
+				(_ #f)))
+	 (base (if native-console-font
+		   `(modify-services
+		     ,base-with-default-console-font
+		     (console-font-service-type
+		      config => (map (lambda (tty)
+				       (cons (car tty) ,native-console-font))
+				     config)))
+		   base-with-default-console-font))
          (service-heading (list (vertical-space 1)
                                 (comment (G_ "\
 ;; Below is the list of system services.  To search for available