Round 257: Chef ext, Salt ext, Nix ext, Guix ext (20 commands)

ober

17f502d0b2e4766eda4cfa14819ad938114a8145

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index afc8e81..fa2443e 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 257 — Chef ext, Salt ext, Nix ext, Guix ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| chef-apply | :orange_circle: | Apply current Chef recipe |
+| chef-run-recipe | :orange_circle: | Run a Chef recipe |
+| chef-knife-status | :orange_circle: | Show Chef knife status |
+| chef-cookbook-upload | :orange_circle: | Upload Chef cookbook |
+| chef-role-edit | :orange_circle: | Edit a Chef role |
+| salt-apply | :orange_circle: | Apply Salt state |
+| salt-ping | :orange_circle: | Ping Salt minions |
+| salt-highstate | :orange_circle: | Run Salt highstate |
+| salt-pillar-get | :orange_circle: | Get Salt pillar value |
+| salt-grains-items | :orange_circle: | List Salt grains |
+| nix-search-packages | :orange_circle: | Search Nix packages |
+| nix-derivation-show | :orange_circle: | Show Nix derivation |
+| nix-profile-list | :orange_circle: | List Nix profile packages |
+| nix-develop | :orange_circle: | Enter Nix develop shell |
+| guix-package-install | :orange_circle: | Install a Guix package |
+| guix-package-remove | :orange_circle: | Remove a Guix package |
+| guix-shell | :orange_circle: | Open Guix shell environment |
+| guix-system-shepherd-status | :orange_circle: | Show Shepherd service status |
+| guix-size | :orange_circle: | Show Guix package size |
+| guix-describe | :orange_circle: | Describe current Guix profile |
+
 ### Round 256 — Kubernetes ext, Vagrant ext, Puppet ext, systemd, Ansible ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index c4f826c..dbfcade 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -20858,3 +20858,51 @@
 (def (cmd-ansible-vault-decrypt app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Ansible: decrypting vault file")))
+
+;;; Round 257 — Nix ext, Guix ext (batch 2)
+
+(def (cmd-nix-search-packages app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Search packages: "
+      (lambda (query)
+        (echo-message! echo (str "Nix: searching for " query))))))
+
+(def (cmd-nix-derivation-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nix: showing derivation")))
+
+(def (cmd-nix-profile-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nix: listing profile packages")))
+
+(def (cmd-nix-develop app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nix: entering develop shell")))
+
+(def (cmd-guix-package-install app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package to install: "
+      (lambda (pkg)
+        (echo-message! echo (str "Guix: installing " pkg))))))
+
+(def (cmd-guix-package-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Package to remove: "
+      (lambda (pkg)
+        (echo-message! echo (str "Guix: removing " pkg))))))
+
+(def (cmd-guix-shell app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Guix: opening shell environment")))
+
+(def (cmd-guix-system-shepherd-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Guix: showing Shepherd service status")))
+
+(def (cmd-guix-size app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Guix: showing package size")))
+
+(def (cmd-guix-describe app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Guix: describing current profile")))
\ 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 3c18f41..68232dd 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -21472,3 +21472,53 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Vagrant: listing available boxes")))
 
+;;; Round 257 — Chef ext, Salt ext, Nix ext, Guix ext (batch 1)
+
+(def (cmd-chef-apply app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Chef: applying current recipe")))
+
+(def (cmd-chef-run-recipe app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Recipe: "
+      (lambda (recipe)
+        (echo-message! echo (str "Chef: running recipe " recipe))))))
+
+(def (cmd-chef-knife-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Chef: knife status")))
+
+(def (cmd-chef-cookbook-upload app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Cookbook: "
+      (lambda (cb)
+        (echo-message! echo (str "Chef: uploading cookbook " cb))))))
+
+(def (cmd-chef-role-edit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Role: "
+      (lambda (role)
+        (echo-message! echo (str "Chef: editing role " role))))))
+
+(def (cmd-salt-apply app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Salt: applying state")))
+
+(def (cmd-salt-ping app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Salt: pinging minions")))
+
+(def (cmd-salt-highstate app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Salt: running highstate")))
+
+(def (cmd-salt-pillar-get app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Pillar key: "
+      (lambda (key)
+        (echo-message! echo (str "Salt: pillar " key))))))
+
+(def (cmd-salt-grains-items app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Salt: listing grains")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 057d629..aea9272 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -6814,4 +6814,25 @@
   (register-command! 'systemd-reload-daemon cmd-systemd-reload-daemon)
   (register-command! 'ansible-vault-encrypt cmd-ansible-vault-encrypt)
   (register-command! 'ansible-vault-decrypt cmd-ansible-vault-decrypt)
+  ;; Round 257
+  (register-command! 'chef-apply cmd-chef-apply)
+  (register-command! 'chef-run-recipe cmd-chef-run-recipe)
+  (register-command! 'chef-knife-status cmd-chef-knife-status)
+  (register-command! 'chef-cookbook-upload cmd-chef-cookbook-upload)
+  (register-command! 'chef-role-edit cmd-chef-role-edit)
+  (register-command! 'salt-apply cmd-salt-apply)
+  (register-command! 'salt-ping cmd-salt-ping)
+  (register-command! 'salt-highstate cmd-salt-highstate)
+  (register-command! 'salt-pillar-get cmd-salt-pillar-get)
+  (register-command! 'salt-grains-items cmd-salt-grains-items)
+  (register-command! 'nix-search-packages cmd-nix-search-packages)
+  (register-command! 'nix-derivation-show cmd-nix-derivation-show)
+  (register-command! 'nix-profile-list cmd-nix-profile-list)
+  (register-command! 'nix-develop cmd-nix-develop)
+  (register-command! 'guix-package-install cmd-guix-package-install)
+  (register-command! 'guix-package-remove cmd-guix-package-remove)
+  (register-command! 'guix-shell cmd-guix-shell)
+  (register-command! 'guix-system-shepherd-status cmd-guix-system-shepherd-status)
+  (register-command! 'guix-size cmd-guix-size)
+  (register-command! 'guix-describe cmd-guix-describe)
 )