diff mbox series

[bug#73202,v3,13/14] gnu: bootloader: Match records outside the module.

Message ID b04fb48f74331addc5eb380e46ccb8750d8545b5.1727345067.git.herman@rimm.ee
State New
Headers show
Series [bug#73202,v3,01/14] gnu: bootloader: Remove deprecated bootloader-configuration field. | expand

Commit Message

Herman Rimm Sept. 26, 2024, 10:09 a.m. UTC
* gnu/bootloader.scm (match-bootloader-configuration, match-menu-entry):
Add macros.

Change-Id: I42cb7541045314c37ffef98fe6efe7f46acd9d9b
---
 gnu/bootloader.scm | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
diff mbox series

Patch

diff --git a/gnu/bootloader.scm b/gnu/bootloader.scm
index 6b08e61492..b1ed187aa2 100644
--- a/gnu/bootloader.scm
+++ b/gnu/bootloader.scm
@@ -8,6 +8,7 @@ 
 ;;; Copyright © 2022 Reza Alizadeh Majd <r.majd@pantherx.org>
 ;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz>
 ;;; Copyright © 2024 Lilah Tascheter <lilah@lunabee.space>
+;;; Copyright © 2024 Herman Rimm <herman@rimm.ee>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -115,6 +116,9 @@  (define-module (gnu bootloader)
             bootloader-configuration->gexp
             bootloader-configurations->gexp
 
+            match-bootloader-configuration
+            match-menu-entry
+
             %efi-supported-systems
             efi-arch
             install-efi
@@ -642,6 +646,20 @@  (define (bootloader-configurations->gexp bootloader-configs . rest)
   (apply gbegin (filter-map (cut apply bootloader-configuration->gexp <> rest)
                             bootloader-configs)))
 
+;; In lieu of exporting bootloader-configuration and menu-entry RTDs.
+(define-syntax match-bootloader-configuration
+  (syntax-rules ()
+    "Bind each BOOTLOADER-CONFIGURATION field in FIELDS."
+    ((_ bootloader-configuration (fields ...) body ...)
+     (match-record bootloader-configuration <bootloader-configuration>
+                   (fields ...) body ...))))
+
+(define-syntax match-menu-entry
+  (syntax-rules ()
+    "Bind each MENU-ENTRY field in FIELDS."
+    ((_ menu-entry (fields ...) body ...)
+     (match-record menu-entry <menu-entry> (fields ...) body ...))))
+
 
 ;;;
 ;;; Bootloader installation to ESP.