.dir-locals.el
+pi-built-*/
+pi-tmp/
Programs in the home configuration have dotfiles, which are installed alongside
the program and respect the XDG base directory specification. Each program's
dotfiles live in a <program>/ directory whose internal structure mirrors $HOME,
-e.g. emacs/.config/emacs/init.el → ~/.config/emacs/init.el.
+e.g. emacs/.config/emacs/init.el → ~/.config/emacs/init.el or
+pi/.config/pi/settings.json → ~/.config/pi/settings.json.
Core service types:
3. Or add a PreToolUse hook that auto-creates/switches to a per-session
branch before Edit/Write.
+
+* Go back to the upstream pi release tarball once Bun's --compile bug is
+ fixed. Bun 1.2.20-1.3.11 produces broken binaries; 1.3.14 fails entirely on
+ this system (kernel 7.0.12, glibc 2.39). When a fixed Bun is available, just
+ download the tarball, extract the binary, and wrap it - no build step needed.
+ Remove the npm-install-build-system wrapper and the Node.js dependency in
+ conf/home/pi.scm.
--- /dev/null
+;; Copyright (c) 2026 Jakub Czajka <jakub@ekhem.eu.org>
+;; License: GPL-3.0 or later.
+;;
+;; pi.scm — package for the Pi coding agent.
+;; Built from npm in a fixed-output derivation.
+
+(define-module (conf home pi)
+ #:use-module (guix packages)
+ #:use-module (guix base32)
+ #:use-module ((guix licenses)
+ #:prefix license:)
+ #:use-module (conf home npm)
+ #:export (pi))
+
+(define pi
+ (package
+ (name "pi-coding-agent")
+ (version "0.80.3")
+ (source
+ #f)
+ (build-system npm-install-build-system)
+ (arguments
+ (list
+ #:name "pi"
+ #:npm-package "@earendil-works/pi-coding-agent"
+ #:version "0.80.3"
+ #:entry
+ "@earendil-works/pi-coding-agent/packages/coding-agent/dist/cli.js"
+ #:hash (nix-base32-string->bytevector
+ "0ai50vd5kfd07ihmyj2kavhbdhh65pjj981cxpm0llg9hwxsg6ph")))
+ (home-page "https://github.com/earendil-works/pi")
+ (synopsis "Terminal-based AI coding agent")
+ (description "Pi is a minimal, extensible terminal coding agent harness.
+It provides an LLM with the tools to read, write, edit, and
+execute code in your project. Configuration is stored in
+@file{~/.config/pi/}.")
+ (license license:expat)))
+
+;;; Update: run ./scripts/generate-npm-hash pi NEW-VERSION, then
+;;; update the version strings and hash in the package definition
+;;; above.
(conf home emacs)
(conf home guix)
(conf home notify)
+ (conf home pi)
(conf home suckless)
(gnu packages gnuzilla)
(nongnu packages mozilla))
(home-environment
(packages (case profile
((nonfree)
- (list firefox select-emoji st-libxft-bgra))
+ (list firefox pi select-emoji st-libxft-bgra))
((libre)
(list icecat-minimal select-emoji st-libxft-bgra))))
(services
(case profile
((nonfree)
- (append (list autorandr-service channels-service claude-service
- notify-service screenshot-service) bash-services
- desktop-services emacs-services))
+ (append (list autorandr-service
+ channels-service
+ claude-service
+ notify-service
+ paseo-service
+ paseo-daemon-service
+ screenshot-service) bash-services desktop-services
+ emacs-services))
((libre)
(append (list autorandr-service notify-service screenshot-service)
bash-services desktop-services emacs-services))))))
version=$2
case $name in
+ pi)
+ npm_pkg="@earendil-works/pi-coding-agent"
+ ;;
*)
echo "Unknown package: $name" >&2
exit 1