]> git.ekhem.eu.org Git - guix.git/commitdiff
[home] Add paseo CLI package and services.
authorJakub Czajka <jakub@ekhem.eu.org>
Tue, 7 Jul 2026 16:13:40 +0000 (18:13 +0200)
committerJakub Czajka <jakub@ekhem.eu.org>
Thu, 9 Jul 2026 12:34:55 +0000 (14:34 +0200)
The paseo daemon spawns Claude Code agents, so CLAUDE_CONFIG_DIR is
set in the daemon environment to point to ~/.config/claude/, where the
home claude service installs its configuration.  This ensures spawned
agents find their config without relying on shell init files.

.gitignore
README
conf/home/paseo.scm [new file with mode: 0644]
home.scm
scripts/generate-npm-hash

index 9fcd8f56e091200b4728470fff355b26eddb441e..889ccf35b94f8ba12b50dffe68b5de87390e2b4e 100644 (file)
@@ -1,3 +1,5 @@
 .dir-locals.el
 pi-built-*/
 pi-tmp/
+paseo-built-*/
+paseo-tmp/
diff --git a/README b/README
index de3ce28db318ee073178798eee061714932cfd70..a86d90ed02f0c818c373a35a737345c8c63e03f4 100644 (file)
--- a/README
+++ b/README
@@ -44,6 +44,15 @@ You only need to run this script when bumping the npm package version
 -- ``guix home reconfigure`` uses the hash baked into the definition and
 never runs ``npm install`` itself.
 
+Paseo
+-----
+
+Paseo's daemon starts automatically via Shepherd and listens on
+127.0.0.1:6767.
+
+- Pair: run ``paseo`` to get a pairing link (use --qr for a QR code), or
+  tail the log at ``~/.local/var/log/paseo-daemon.log``.
+
 TODO
 ----
 
diff --git a/conf/home/paseo.scm b/conf/home/paseo.scm
new file mode 100644 (file)
index 0000000..e2add79
--- /dev/null
@@ -0,0 +1,68 @@
+;; Copyright (c) 2026 Jakub Czajka <jakub@ekhem.eu.org>
+;; License: GPL-3.0 or later.
+;;
+;; paseo.scm — package and home service for the Paseo CLI.
+;;
+;; The hash is produced by scripts/generate-npm-hash:
+;;
+;;   scripts/generate-npm-hash paseo <version>
+
+(define-module (conf home paseo)
+  #:use-module (guix packages)
+  #:use-module (guix gexp)
+  #:use-module (guix base32)
+  #:use-module (conf home program)
+  #:use-module (conf home npm)
+  #:use-module (gnu home services)
+  #:use-module (gnu home services shepherd)
+  #:use-module (gnu services)
+  #:export (paseo paseo-service paseo-daemon-service))
+
+(define paseo
+  (package
+    (name "paseo")
+    (version "0.1.103")
+    (source
+     #f)
+    (build-system npm-install-build-system)
+    (arguments
+     (list
+      #:npm-package "@getpaseo/cli"
+      #:version "0.1.103"
+      #:entry "@getpaseo/cli/bin/paseo"
+      #:hash (nix-base32-string->bytevector
+              "0bf3ybl22y5p325plzvj053k9l9jbpky48nz0vp2zk71yx13wky6")
+      #:wrapper-name "paseo"))
+    (home-page "https://paseo.sh")
+    (synopsis "CLI for orchestrating AI coding agents")
+    (description
+     "Paseo provides a unified CLI interface for Claude Code,
+Codex, Copilot, OpenCode, and Pi agents.  It can manage multiple
+coding agents from desktop and mobile.")
+    (license #f)))
+
+(define paseo-service
+  (service home-program-service-type
+           (home-program-configuration (packages (list paseo))
+                                       (dotfiles '()))))
+
+(define paseo-daemon-start
+  #~(let* ((home (getenv "HOME"))
+           (prog #$(file-append paseo "/bin/paseo"))
+           (log (string-append home "/.local/var/log/paseo-daemon.log"))
+           (env (cons (string-append "CLAUDE_CONFIG_DIR=" home
+                                     "/.config/claude")
+                      (default-environment-variables))))
+      (make-forkexec-constructor (list prog "daemon" "start" "--foreground")
+                                 #:log-file log
+                                 #:environment-variables env)))
+
+(define paseo-daemon-shepherd-service
+  (shepherd-service (provision '(paseo-daemon))
+                    (start paseo-daemon-start)
+                    (stop #~(make-kill-destructor))
+                    (documentation "Shepherd service for the Paseo daemon.")))
+
+(define paseo-daemon-service
+  (simple-service 'paseo-daemon-service home-shepherd-service-type
+                  (list paseo-daemon-shepherd-service)))
index 227bb2e2f40111429b45b992a16d664fc3bf64c8..7e848c2cbc108330f9fcf727394e62b90c10c8fc 100644 (file)
--- a/home.scm
+++ b/home.scm
@@ -15,6 +15,7 @@
              (conf home emacs)
              (conf home guix)
              (conf home notify)
+             (conf home paseo)
              (conf home pi)
              (conf home suckless)
              (gnu packages gnuzilla)
index 61a0e4a4f4eae348f0f557ca397850fad712a704..884f03810cb94b7b50c369f39b073c7eaef71b10 100755 (executable)
@@ -28,6 +28,9 @@ case $name in
     pi)
         npm_pkg="@earendil-works/pi-coding-agent"
         ;;
+    paseo)
+        npm_pkg="@getpaseo/cli"
+        ;;
     *)
         echo "Unknown package: $name" >&2
         exit 1