From 3f03a198b2f1ad7ff6f1d53c287c36011024d67c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
Date: Mon, 15 Apr 2019 11:30:50 +0200
Subject: [PATCH] system: Add 'label' field to <operating-system>.

* gnu/system.scm (<operating-system>)[label]: New field.
(operating-system-default-label): New procedure.
(operating-system-boot-parameters): Use it instead of
'kernel->boot-label'.
* doc/guix.texi (operating-system Reference): Document it.
---
 doc/guix.texi  |  4 ++++
 gnu/system.scm | 12 +++++++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 5fefc1af4f6..1ae5711c023 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -10436,6 +10436,10 @@ the command-line of the kernel---e.g., @code{("console=ttyS0")}.
 @item @code{bootloader}
 The system bootloader configuration object.  @xref{Bootloader Configuration}.
 
+@item @code{label}
+This is the label (a string) as it appears in the bootloader's menu entry.
+The default label includes the kernel name and version.
+
 @item @code{keyboard-layout} (default: @code{#f})
 This field specifies the keyboard layout to use in the console.  It can be
 either @code{#f}, in which case the default keyboard layout is used (usually
diff --git a/gnu/system.scm b/gnu/system.scm
index 2abb1fefff1..24243eb7078 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -78,6 +78,8 @@ (define-module (gnu system)
             operating-system-kernel
             operating-system-kernel-file
             operating-system-kernel-arguments
+            operating-system-label
+            operating-system-default-label
             operating-system-initrd-modules
             operating-system-initrd
             operating-system-users
@@ -160,6 +162,9 @@ (define-record-type* <operating-system> operating-system
   (kernel-arguments operating-system-user-kernel-arguments
                     (default '()))                ; list of gexps/strings
   (bootloader operating-system-bootloader)        ; <bootloader-configuration>
+  (label operating-system-label                   ; string
+         (thunked)
+         (default (operating-system-default-label this-operating-system)))
 
   (keyboard-layout operating-system-keyboard-layout ;#f | <keyboard-layout>
                    (default #f))
@@ -918,6 +923,11 @@ (define (kernel->boot-label kernel)
                         (inferior-package-version kernel)))
         (else "GNU")))
 
+(define (operating-system-default-label os)
+  "Return the default label for OS, as it will appear in the bootloader menu
+entry."
+  (kernel->boot-label (operating-system-kernel os)))
+
 (define (store-file-system file-systems)
   "Return the file system object among FILE-SYSTEMS that contains the store."
   (match (filter (lambda (fs)
@@ -966,7 +976,7 @@ (define* (operating-system-boot-parameters os root-device
          (bootloader      (bootloader-configuration-bootloader
                            (operating-system-bootloader os)))
          (bootloader-name (bootloader-name bootloader))
-         (label           (kernel->boot-label (operating-system-kernel os))))
+         (label           (operating-system-label os)))
     (boot-parameters
      (label label)
      (root-device root-device)
-- 
GitLab