Round 180: Nix, Guix, Bazel, CMake commands

ober

3bc8c50978ebab2ecffc8b40d9814a74c324c939

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 657dcf5..1fb743b 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 180 — Nix, Guix, Bazel, CMake
+
+| Feature | Status | Notes |
+|---|---|---|
+| nix-search | :orange_circle: | Search Nix packages |
+| nix-flake-init | :orange_circle: | Initialize Nix flake |
+| nix-store-gc | :orange_circle: | Nix store garbage collection |
+| nix-env-install | :orange_circle: | Install Nix package |
+| nix-env-remove | :orange_circle: | Remove Nix package |
+| guix-profiles | :orange_circle: | Show Guix profiles |
+| guix-installed-packages | :orange_circle: | List Guix installed packages |
+| guix-available-packages | :orange_circle: | List Guix available packages |
+| guix-system-reconfigure | :orange_circle: | Reconfigure Guix system |
+| guix-pull | :orange_circle: | Pull Guix channel updates |
+| bazel-build | :orange_circle: | Build Bazel target |
+| bazel-test | :orange_circle: | Test Bazel target |
+| bazel-run | :orange_circle: | Run Bazel target |
+| bazel-query | :orange_circle: | Query Bazel workspace |
+| bazel-clean | :orange_circle: | Clean Bazel artifacts |
+| bazel-info | :orange_circle: | Show Bazel workspace info |
+| cmake-configure | :orange_circle: | Configure CMake project |
+| cmake-build | :orange_circle: | Build CMake project |
+| cmake-build-current | :orange_circle: | Build current CMake target |
+| cmake-install | :orange_circle: | Install CMake project |
+
 ### Round 179 — Restclient, Verb, Plz, Request
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 8803e46..2c9e939 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -17210,3 +17210,52 @@
 (def (cmd-request-log-buffer app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Request: showing log buffer")))
+
+;; Round 180 — Nix, Guix, Bazel, CMake (batch 2)
+(def (cmd-bazel-build app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Build target: "
+      (lambda (target)
+        (echo-message! echo (str "Bazel: building " target))))))
+
+(def (cmd-bazel-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Test target: "
+      (lambda (target)
+        (echo-message! echo (str "Bazel: testing " target))))))
+
+(def (cmd-bazel-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Run target: "
+      (lambda (target)
+        (echo-message! echo (str "Bazel: running " target))))))
+
+(def (cmd-bazel-query app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Query: "
+      (lambda (query)
+        (echo-message! echo (str "Bazel: query " query))))))
+
+(def (cmd-bazel-clean app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bazel: cleaned build artifacts")))
+
+(def (cmd-bazel-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bazel: showing workspace info")))
+
+(def (cmd-cmake-configure app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CMake: configuring project...")))
+
+(def (cmd-cmake-build app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CMake: building project...")))
+
+(def (cmd-cmake-build-current app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CMake: building current target...")))
+
+(def (cmd-cmake-install app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "CMake: installing...")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 04294ce..d8d6c90 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -17834,3 +17834,50 @@
 (def (cmd-verb-export-request-on-point app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Verb: exported request as curl command")))
+
+;; Round 180 — Nix, Guix, Bazel, CMake (batch 1)
+(def (cmd-nix-search app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Nix search: "
+      (lambda (query)
+        (echo-message! echo (str "Nix: searching for " query))))))
+
+(def (cmd-nix-flake-init app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nix: initialized flake")))
+
+(def (cmd-nix-store-gc app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nix: running store garbage collection...")))
+
+(def (cmd-nix-env-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-env-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Remove package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Nix: removing " pkg))))))
+
+(def (cmd-guix-profiles app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Guix: showing profiles")))
+
+(def (cmd-guix-installed-packages app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Guix: listing installed packages")))
+
+(def (cmd-guix-available-packages app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Guix: listing available packages")))
+
+(def (cmd-guix-system-reconfigure app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Guix: reconfiguring system...")))
+
+(def (cmd-guix-pull app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Guix: pulling latest channel updates...")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 56d72f3..15a4641 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5213,4 +5213,25 @@
   (register-command! 'request-response-header cmd-request-response-header)
   (register-command! 'request-abort cmd-request-abort)
   (register-command! 'request-log-buffer cmd-request-log-buffer)
+  ;; Round 180 — Nix, Guix, Bazel, CMake
+  (register-command! 'nix-search cmd-nix-search)
+  (register-command! 'nix-flake-init cmd-nix-flake-init)
+  (register-command! 'nix-store-gc cmd-nix-store-gc)
+  (register-command! 'nix-env-install cmd-nix-env-install)
+  (register-command! 'nix-env-remove cmd-nix-env-remove)
+  (register-command! 'guix-profiles cmd-guix-profiles)
+  (register-command! 'guix-installed-packages cmd-guix-installed-packages)
+  (register-command! 'guix-available-packages cmd-guix-available-packages)
+  (register-command! 'guix-system-reconfigure cmd-guix-system-reconfigure)
+  (register-command! 'guix-pull cmd-guix-pull)
+  (register-command! 'bazel-build cmd-bazel-build)
+  (register-command! 'bazel-test cmd-bazel-test)
+  (register-command! 'bazel-run cmd-bazel-run)
+  (register-command! 'bazel-query cmd-bazel-query)
+  (register-command! 'bazel-clean cmd-bazel-clean)
+  (register-command! 'bazel-info cmd-bazel-info)
+  (register-command! 'cmake-configure cmd-cmake-configure)
+  (register-command! 'cmake-build cmd-cmake-build)
+  (register-command! 'cmake-build-current cmd-cmake-build-current)
+  (register-command! 'cmake-install cmd-cmake-install)
 )