Round 321: Kmod ext, Modprobe ext, Dkms ext, Dracut ext, Mkinitcpio ext (20 commands)

ober

8769631067986014e2ab490abcab1624662c8f02

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 98c1a28..2e5a1cf 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 321 — Kmod ext, Modprobe ext, Dkms ext, Dracut ext, Mkinitcpio ext
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `kmod-list` | :orange_circle: | List loaded modules |
+| `kmod-info` | :orange_circle: | Show module info |
+| `kmod-load` | :orange_circle: | Load kernel module |
+| `kmod-unload` | :orange_circle: | Unload kernel module |
+| `modprobe-show` | :orange_circle: | Show module config |
+| `modprobe-config` | :orange_circle: | Show modprobe configuration |
+| `modprobe-blacklist` | :orange_circle: | Blacklist module |
+| `modprobe-dependencies` | :orange_circle: | Show module dependencies |
+| `dkms-status` | :orange_circle: | Show DKMS status |
+| `dkms-add` | :orange_circle: | Add DKMS module |
+| `dkms-build` | :orange_circle: | Build DKMS module |
+| `dkms-install` | :orange_circle: | Install DKMS module |
+| `dracut-generate` | :orange_circle: | Generate initramfs |
+| `dracut-list` | :orange_circle: | List dracut modules |
+| `dracut-config` | :orange_circle: | Show dracut config |
+| `dracut-rebuild` | :orange_circle: | Rebuild initramfs |
+| `mkinitcpio-generate` | :orange_circle: | Generate initramfs |
+| `mkinitcpio-list` | :orange_circle: | List hooks |
+| `mkinitcpio-preset` | :orange_circle: | Use preset |
+| `mkinitcpio-hooks` | :orange_circle: | Show available hooks |
+
 ### Round 320 — Bpftool ext, Bpftrace ext, Xdp ext, Tc-bpf ext, Libbpf ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 862483d..68e9ae4 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -24055,4 +24055,54 @@
   (let* ((echo (app-state-echo app)))
     (echo-read-string echo "Program: "
       (lambda (prog)
-        (echo-message! echo (str "Libbpf: debugging " prog))))))
\ No newline at end of file
+        (echo-message! echo (str "Libbpf: debugging " prog))))))
+
+;;; Round 321 — Dkms ext, Dracut ext, Mkinitcpio ext (batch 2)
+
+(def (cmd-dkms-build app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Module/version: "
+      (lambda (mv)
+        (echo-message! echo (str "DKMS: building " mv))))))
+
+(def (cmd-dkms-install app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Module/version: "
+      (lambda (mv)
+        (echo-message! echo (str "DKMS: installing " mv))))))
+
+(def (cmd-dracut-generate app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dracut: generating initramfs")))
+
+(def (cmd-dracut-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dracut: listing modules")))
+
+(def (cmd-dracut-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dracut: showing configuration")))
+
+(def (cmd-dracut-rebuild app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Kernel version: "
+      (lambda (ver)
+        (echo-message! echo (str "Dracut: rebuilding initramfs for " ver))))))
+
+(def (cmd-mkinitcpio-generate app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Mkinitcpio: generating initramfs")))
+
+(def (cmd-mkinitcpio-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Mkinitcpio: listing hooks")))
+
+(def (cmd-mkinitcpio-preset app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Preset: "
+      (lambda (preset)
+        (echo-message! echo (str "Mkinitcpio: using preset " preset))))))
+
+(def (cmd-mkinitcpio-hooks app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Mkinitcpio: showing available hooks")))
\ 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 9ffda94..da78898 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -24744,3 +24744,59 @@
       (lambda (iface)
         (echo-message! echo (str "XDP: unloading from " iface))))))
 
+;;; Round 321 — Kmod ext, Modprobe ext, Dkms ext, Dracut ext, Mkinitcpio ext (batch 1)
+
+(def (cmd-kmod-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Kmod: listing loaded modules")))
+
+(def (cmd-kmod-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Module name: "
+      (lambda (mod)
+        (echo-message! echo (str "Kmod: info for " mod))))))
+
+(def (cmd-kmod-load app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Module to load: "
+      (lambda (mod)
+        (echo-message! echo (str "Kmod: loading " mod))))))
+
+(def (cmd-kmod-unload app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Module to unload: "
+      (lambda (mod)
+        (echo-message! echo (str "Kmod: unloading " mod))))))
+
+(def (cmd-modprobe-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Module: "
+      (lambda (mod)
+        (echo-message! echo (str "Modprobe: showing config for " mod))))))
+
+(def (cmd-modprobe-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Modprobe: showing configuration")))
+
+(def (cmd-modprobe-blacklist app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Module to blacklist: "
+      (lambda (mod)
+        (echo-message! echo (str "Modprobe: blacklisting " mod))))))
+
+(def (cmd-modprobe-dependencies app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Module: "
+      (lambda (mod)
+        (echo-message! echo (str "Modprobe: showing dependencies of " mod))))))
+
+(def (cmd-dkms-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "DKMS: showing module status")))
+
+(def (cmd-dkms-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Module source dir: "
+      (lambda (dir)
+        (echo-message! echo (str "DKMS: adding " dir))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index ccb8d54..e4e15da 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8158,4 +8158,25 @@
   (register-command! 'libbpf-load cmd-libbpf-load)
   (register-command! 'libbpf-skeleton cmd-libbpf-skeleton)
   (register-command! 'libbpf-debug cmd-libbpf-debug)
+  ;; Round 321
+  (register-command! 'kmod-list cmd-kmod-list)
+  (register-command! 'kmod-info cmd-kmod-info)
+  (register-command! 'kmod-load cmd-kmod-load)
+  (register-command! 'kmod-unload cmd-kmod-unload)
+  (register-command! 'modprobe-show cmd-modprobe-show)
+  (register-command! 'modprobe-config cmd-modprobe-config)
+  (register-command! 'modprobe-blacklist cmd-modprobe-blacklist)
+  (register-command! 'modprobe-dependencies cmd-modprobe-dependencies)
+  (register-command! 'dkms-status cmd-dkms-status)
+  (register-command! 'dkms-add cmd-dkms-add)
+  (register-command! 'dkms-build cmd-dkms-build)
+  (register-command! 'dkms-install cmd-dkms-install)
+  (register-command! 'dracut-generate cmd-dracut-generate)
+  (register-command! 'dracut-list cmd-dracut-list)
+  (register-command! 'dracut-config cmd-dracut-config)
+  (register-command! 'dracut-rebuild cmd-dracut-rebuild)
+  (register-command! 'mkinitcpio-generate cmd-mkinitcpio-generate)
+  (register-command! 'mkinitcpio-list cmd-mkinitcpio-list)
+  (register-command! 'mkinitcpio-preset cmd-mkinitcpio-preset)
+  (register-command! 'mkinitcpio-hooks cmd-mkinitcpio-hooks)
 )