{ lib, pkgs, ... }: let jcode = pkgs.callPackage ./nix-bin/jcode.nix { }; pi = pkgs.callPackage ./nix-bin/pi.nix { }; devenvSummary = pkgs.callPackage ./devenv.custom-code.nix { }; in { packages = [ pkgs.asciinema # terminal session recorder pkgs.claude-code # Claude Code CLI pkgs.gh # GitHub CLI tool pkgs.herdr # supervises multiple coding agents in one terminal jcode # jcode coding agent pkgs.jq # JSON wrangling for agent scripts pi # pi coding agent pkgs.rtk # used by coding agent pkgs.skills # used to manage .agents/skills ]; # Playwright MCP is registered per-project in .mcp.json (via `npx @playwright/mcp`). # Run `npx playwright install` once for the browser binaries. # mkAfter so this block prints below devenv.nix's own summary. enterShell = lib.mkAfter (devenvSummary { title = "\nCoding agents:"; rows = [ { pkg = pkgs.asciinema; } { pkg = pkgs.claude-code; } { pkg = pkgs.herdr; } { pkg = jcode; } { pkg = pkgs.jq; } { pkg = pi; } { pkg = pkgs.rtk; } { pkg = pkgs.skills; } ]; }); env.RTK_TELEMETRY_DISABLED = 1; env.JCODE_NO_TELEMETRY = 1; # jcode phones home with usage stats by default. env.PI_SKIP_VERSION_CHECK = 1; # pi is pinned by nix-bin/pi.nix, so its startup update check is noise. }