Round 301: Snap ext, Flatpak ext, AppImage ext, Nix ext, Brew ext (20 commands)

ober

29fca349be2ea8bb1564139111a1a486eea92c63

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 06c9a5a..707fbab 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 301 — Snap ext, Flatpak ext, AppImage ext, Nix ext, Brew ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| snap-list | :orange_circle: | List installed snaps |
+| snap-install | :orange_circle: | Install snap |
+| snap-remove | :orange_circle: | Remove snap |
+| snap-info | :orange_circle: | Show snap info |
+| flatpak-list | :orange_circle: | List flatpak apps |
+| flatpak-install | :orange_circle: | Install flatpak |
+| flatpak-remove | :orange_circle: | Remove flatpak |
+| flatpak-info | :orange_circle: | Show flatpak info |
+| appimage-run | :orange_circle: | Run AppImage |
+| appimage-extract | :orange_circle: | Extract AppImage |
+| appimage-info | :orange_circle: | Show AppImage info |
+| appimage-update | :orange_circle: | Update AppImage |
+| nix-install | :orange_circle: | Install nix package |
+| nix-remove | :orange_circle: | Remove nix package |
+| nix-info | :orange_circle: | Show nix package info |
+| nix-profile | :orange_circle: | Show nix profile |
+| brew-search | :orange_circle: | Search brew packages |
+| brew-install | :orange_circle: | Install brew formula |
+| brew-remove | :orange_circle: | Remove brew formula |
+| brew-info | :orange_circle: | Show brew info |
+
 ### Round 300 — Dpkg ext, Apt ext, RPM ext, Yum ext, Pacman ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 91a9008..bd56094 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -22971,4 +22971,64 @@
 
 (def (cmd-pacman-orphans app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Pacman: listing orphaned packages")))
\ No newline at end of file
+    (echo-message! echo "Pacman: listing orphaned packages")))
+
+;;; Round 301 — AppImage ext, Nix ext, Brew ext (batch 2)
+
+(def (cmd-appimage-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "AppImage file: "
+      (lambda (file)
+        (echo-message! echo (str "AppImage: info for " file))))))
+
+(def (cmd-appimage-update app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "AppImage file: "
+      (lambda (file)
+        (echo-message! echo (str "AppImage: updating " file))))))
+
+(def (cmd-nix-install app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Nix: installing " pkg))))))
+
+(def (cmd-nix-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Nix: removing " pkg))))))
+
+(def (cmd-nix-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Nix: info for " pkg))))))
+
+(def (cmd-nix-profile app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nix: showing profile")))
+
+(def (cmd-brew-search app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Query: "
+      (lambda (q)
+        (echo-message! echo (str "Brew: searching " q))))))
+
+(def (cmd-brew-install app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Formula: "
+      (lambda (formula)
+        (echo-message! echo (str "Brew: installing " formula))))))
+
+(def (cmd-brew-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Formula: "
+      (lambda (formula)
+        (echo-message! echo (str "Brew: removing " formula))))))
+
+(def (cmd-brew-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Formula: "
+      (lambda (formula)
+        (echo-message! echo (str "Brew: info for " formula))))))
\ 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 ef3b89a..265f039 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -23694,3 +23694,61 @@
       (lambda (pkg)
         (echo-message! echo (str "RPM: installing " pkg))))))
 
+;;; Round 301 — Snap ext, Flatpak ext, AppImage ext (batch 1)
+
+(def (cmd-snap-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Snap: listing installed snaps")))
+
+(def (cmd-snap-install app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Snap: "
+      (lambda (snap)
+        (echo-message! echo (str "Snap: installing " snap))))))
+
+(def (cmd-snap-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Snap: "
+      (lambda (snap)
+        (echo-message! echo (str "Snap: removing " snap))))))
+
+(def (cmd-snap-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Snap: "
+      (lambda (snap)
+        (echo-message! echo (str "Snap: info for " snap))))))
+
+(def (cmd-flatpak-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Flatpak: listing installed apps")))
+
+(def (cmd-flatpak-install app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "App ID: "
+      (lambda (app-id)
+        (echo-message! echo (str "Flatpak: installing " app-id))))))
+
+(def (cmd-flatpak-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "App ID: "
+      (lambda (app-id)
+        (echo-message! echo (str "Flatpak: removing " app-id))))))
+
+(def (cmd-flatpak-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "App ID: "
+      (lambda (app-id)
+        (echo-message! echo (str "Flatpak: info for " app-id))))))
+
+(def (cmd-appimage-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "AppImage file: "
+      (lambda (file)
+        (echo-message! echo (str "AppImage: running " file))))))
+
+(def (cmd-appimage-extract app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "AppImage file: "
+      (lambda (file)
+        (echo-message! echo (str "AppImage: extracting " file))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 4d084c0..57f84a7 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7738,4 +7738,25 @@
   (register-command! 'pacman-info cmd-pacman-info)
   (register-command! 'pacman-files cmd-pacman-files)
   (register-command! 'pacman-orphans cmd-pacman-orphans)
+  ;; Round 301
+  (register-command! 'snap-list cmd-snap-list)
+  (register-command! 'snap-install cmd-snap-install)
+  (register-command! 'snap-remove cmd-snap-remove)
+  (register-command! 'snap-info cmd-snap-info)
+  (register-command! 'flatpak-list cmd-flatpak-list)
+  (register-command! 'flatpak-install cmd-flatpak-install)
+  (register-command! 'flatpak-remove cmd-flatpak-remove)
+  (register-command! 'flatpak-info cmd-flatpak-info)
+  (register-command! 'appimage-run cmd-appimage-run)
+  (register-command! 'appimage-extract cmd-appimage-extract)
+  (register-command! 'appimage-info cmd-appimage-info)
+  (register-command! 'appimage-update cmd-appimage-update)
+  (register-command! 'nix-install cmd-nix-install)
+  (register-command! 'nix-remove cmd-nix-remove)
+  (register-command! 'nix-info cmd-nix-info)
+  (register-command! 'nix-profile cmd-nix-profile)
+  (register-command! 'brew-search cmd-brew-search)
+  (register-command! 'brew-install cmd-brew-install)
+  (register-command! 'brew-remove cmd-brew-remove)
+  (register-command! 'brew-info cmd-brew-info)
 )