Round 323: Grub ext, Efibootmgr ext, Mokutil ext, Sbsign ext, Fwupd ext (20 commands)

ober

91a8f2935fc63007e0edb7cd85460d002990f50a

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 8f1ceb2..f421b39 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 323 — Grub ext, Efibootmgr ext, Mokutil ext, Sbsign ext, Fwupd ext
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `grub-install` | :orange_circle: | Install GRUB bootloader |
+| `grub-mkconfig` | :orange_circle: | Generate GRUB config |
+| `grub-editenv` | :orange_circle: | Edit GRUB environment |
+| `grub-probe` | :orange_circle: | Probe device info |
+| `efibootmgr-list` | :orange_circle: | List EFI boot entries |
+| `efibootmgr-create` | :orange_circle: | Create EFI boot entry |
+| `efibootmgr-delete` | :orange_circle: | Delete EFI boot entry |
+| `efibootmgr-order` | :orange_circle: | Set EFI boot order |
+| `mokutil-list` | :orange_circle: | List MOK keys |
+| `mokutil-import` | :orange_circle: | Import MOK key |
+| `mokutil-enroll` | :orange_circle: | Enroll MOK key |
+| `mokutil-status` | :orange_circle: | Show Secure Boot status |
+| `sbsign-sign` | :orange_circle: | Sign binary |
+| `sbsign-verify` | :orange_circle: | Verify signature |
+| `sbsign-hash` | :orange_circle: | Hash binary |
+| `sbsign-remove` | :orange_circle: | Remove signature |
+| `fwupd-list` | :orange_circle: | List firmware devices |
+| `fwupd-update` | :orange_circle: | Update firmware |
+| `fwupd-history` | :orange_circle: | Show update history |
+| `fwupd-security` | :orange_circle: | Show security attributes |
+
 ### Round 322 — Sysctl ext, Procfs ext, Sysfs ext, Devtmpfs ext, Udevadm ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 997d5c8..6414ec1 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -24159,4 +24159,58 @@
 
 (def (cmd-udevadm-monitor app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Udevadm: monitoring events")))
\ No newline at end of file
+    (echo-message! echo "Udevadm: monitoring events")))
+
+;;; Round 323 — Mokutil ext, Sbsign ext, Fwupd ext (batch 2)
+
+(def (cmd-mokutil-enroll app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key to enroll: "
+      (lambda (key)
+        (echo-message! echo (str "MOK: enrolling " key))))))
+
+(def (cmd-mokutil-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "MOK: showing Secure Boot status")))
+
+(def (cmd-sbsign-sign app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Binary to sign: "
+      (lambda (bin)
+        (echo-message! echo (str "Sbsign: signing " bin))))))
+
+(def (cmd-sbsign-verify app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Binary to verify: "
+      (lambda (bin)
+        (echo-message! echo (str "Sbsign: verifying " bin))))))
+
+(def (cmd-sbsign-hash app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Binary: "
+      (lambda (bin)
+        (echo-message! echo (str "Sbsign: hashing " bin))))))
+
+(def (cmd-sbsign-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Binary to remove signature: "
+      (lambda (bin)
+        (echo-message! echo (str "Sbsign: removing signature from " bin))))))
+
+(def (cmd-fwupd-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Fwupd: listing devices")))
+
+(def (cmd-fwupd-update app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "Fwupd: updating firmware on " dev))))))
+
+(def (cmd-fwupd-history app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Fwupd: showing update history")))
+
+(def (cmd-fwupd-security app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Fwupd: showing security attributes")))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 3151fe1..a141b69 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -24852,3 +24852,59 @@
       (lambda (attr)
         (echo-message! echo (str "Sysfs: searching for " attr))))))
 
+;;; Round 323 — Grub ext, Efibootmgr ext, Mokutil ext, Sbsign ext, Fwupd ext (batch 1)
+
+(def (cmd-grub-install app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Target device: "
+      (lambda (dev)
+        (echo-message! echo (str "GRUB: installing to " dev))))))
+
+(def (cmd-grub-mkconfig app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "GRUB: generating configuration")))
+
+(def (cmd-grub-editenv app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Variable=value: "
+      (lambda (var)
+        (echo-message! echo (str "GRUB: setting env " var))))))
+
+(def (cmd-grub-probe app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device/path: "
+      (lambda (dev)
+        (echo-message! echo (str "GRUB: probing " dev))))))
+
+(def (cmd-efibootmgr-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EFI: listing boot entries")))
+
+(def (cmd-efibootmgr-create app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Label and loader: "
+      (lambda (spec)
+        (echo-message! echo (str "EFI: creating entry " spec))))))
+
+(def (cmd-efibootmgr-delete app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Boot number: "
+      (lambda (num)
+        (echo-message! echo (str "EFI: deleting entry " num))))))
+
+(def (cmd-efibootmgr-order app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Boot order: "
+      (lambda (order)
+        (echo-message! echo (str "EFI: setting boot order " order))))))
+
+(def (cmd-mokutil-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "MOK: listing enrolled keys")))
+
+(def (cmd-mokutil-import app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Key file: "
+      (lambda (key)
+        (echo-message! echo (str "MOK: importing " key))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 08f2a76..fc26130 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8200,4 +8200,25 @@
   (register-command! 'udevadm-trigger cmd-udevadm-trigger)
   (register-command! 'udevadm-settle cmd-udevadm-settle)
   (register-command! 'udevadm-monitor cmd-udevadm-monitor)
+  ;; Round 323
+  (register-command! 'grub-install cmd-grub-install)
+  (register-command! 'grub-mkconfig cmd-grub-mkconfig)
+  (register-command! 'grub-editenv cmd-grub-editenv)
+  (register-command! 'grub-probe cmd-grub-probe)
+  (register-command! 'efibootmgr-list cmd-efibootmgr-list)
+  (register-command! 'efibootmgr-create cmd-efibootmgr-create)
+  (register-command! 'efibootmgr-delete cmd-efibootmgr-delete)
+  (register-command! 'efibootmgr-order cmd-efibootmgr-order)
+  (register-command! 'mokutil-list cmd-mokutil-list)
+  (register-command! 'mokutil-import cmd-mokutil-import)
+  (register-command! 'mokutil-enroll cmd-mokutil-enroll)
+  (register-command! 'mokutil-status cmd-mokutil-status)
+  (register-command! 'sbsign-sign cmd-sbsign-sign)
+  (register-command! 'sbsign-verify cmd-sbsign-verify)
+  (register-command! 'sbsign-hash cmd-sbsign-hash)
+  (register-command! 'sbsign-remove cmd-sbsign-remove)
+  (register-command! 'fwupd-list cmd-fwupd-list)
+  (register-command! 'fwupd-update cmd-fwupd-update)
+  (register-command! 'fwupd-history cmd-fwupd-history)
+  (register-command! 'fwupd-security cmd-fwupd-security)
 )