Commit 33c79d4700c0

Vincent Demeester <vincent@sbr.pm>
2026-05-19 09:34:29
feat: consolidate AI tools via llm-agents.nix
Replaced individual flake inputs and nixpkgs-master pins with numtide/llm-agents.nix overlay for all AI coding agents. Removed copilot-cli flake input. Added cursor-agent. All packages now track a single, daily-updated source.
1 parent 2d3d0a6
Changed files (6)
home
common
pkgs
systems
tools
nix-flake-update
home/common/dev/ai.nix
@@ -1,5 +1,4 @@
 {
-  inputs,
   pkgs,
   config,
   ...
@@ -87,26 +86,25 @@ in
   home.packages = with pkgs; [
     chmouzies-ai
     aichat
-    skills
     # aider-chat
-    master.claude-code
-    master.claude-agent-acp
-    master.gemini-cli
-    master.opencode
-    pi-coding-agent
+    # AI coding agents (from numtide/llm-agents.nix)
+    llm-agents.claude-code
+    llm-agents.claude-agent-acp
+    llm-agents.gemini-cli
+    llm-agents.opencode
+    llm-agents.pi
+    llm-agents.skills
+    llm-agents.cursor-agent
+    llm-agents.copilot-cli
     # llm
     # openai-whisper
     # whisper-cpp
     # python312Packages.google-generativeai
     # python313Packages.google-generativeai
     ddgr # DuckDuckGo CLI for Pi search extension fallback
-    # editors
-    master.cursor-cli
-    # inputs.code-cursor-nix.packages.x86_64-linux.cursor
     # mcp-servers
     github-mcp-server
     playwright-mcp
-    inputs.copilot-cli.packages.x86_64-linux.default
     # amp-cli
     # pi sandbox dependencies (Linux)
     bubblewrap # OS-level sandboxing via bwrap
pkgs/default.nix
@@ -33,7 +33,7 @@ in
   jellyfin-manage-playlist = pkgs.callPackage ../tools/jellyfin-manage-playlist { };
   music-playlist-dl = pkgs.callPackage ../tools/music-playlist-dl { };
   readwise-reader = pkgs.callPackage ../tools/readwise-reader { };
-  nix-flake-update = pkgs.callPackage ../tools/nix-flake-update { };
+  nix-flake-update = pkgs.callPackage ../tools/nix-flake-update { pi = pkgs.llm-agents.pi; };
   slack-archive = pkgs.callPackage ../tools/slack-archive { };
   gcal-to-org = pkgs.callPackage ../tools/gcal-to-org { };
   daily-plan = pkgs.callPackage ../tools/daily-plan { };
systems/default.nix
@@ -41,6 +41,7 @@
       inputs.radian.overlays.default
       inputs.agenix.overlays.default
       inputs.nix-cachyos-kernel.overlays.default
+      inputs.llm-agents.overlays.default
 
       # Migrate to "modifications"
       (_: prev: {
tools/nix-flake-update/default.nix
@@ -7,7 +7,7 @@
   jq,
   curl,
   openssh,
-  pi-coding-agent,
+  pi,
 }:
 
 stdenv.mkDerivation {
@@ -33,7 +33,7 @@ stdenv.mkDerivation {
           jq
           curl
           openssh
-          pi-coding-agent
+          pi
         ]
       }
 
flake.lock
@@ -66,6 +66,31 @@
         "type": "github"
       }
     },
+    "blueprint": {
+      "inputs": {
+        "nixpkgs": [
+          "llm-agents",
+          "nixpkgs"
+        ],
+        "systems": [
+          "llm-agents",
+          "systems"
+        ]
+      },
+      "locked": {
+        "lastModified": 1776249299,
+        "narHash": "sha256-Dt9t1TGRmJFc0xVYhttNBD6QsAgHOHCArqGa0AyjrJY=",
+        "owner": "numtide",
+        "repo": "blueprint",
+        "rev": "56131e8628f173d24a27f6d27c0215eff57e40dd",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "blueprint",
+        "type": "github"
+      }
+    },
     "buildkit-tekton": {
       "inputs": {
         "nix-github-actions": "nix-github-actions",
@@ -87,6 +112,40 @@
         "type": "github"
       }
     },
+    "bun2nix": {
+      "inputs": {
+        "flake-parts": [
+          "llm-agents",
+          "flake-parts"
+        ],
+        "nixpkgs": [
+          "llm-agents",
+          "nixpkgs"
+        ],
+        "systems": [
+          "llm-agents",
+          "systems"
+        ],
+        "treefmt-nix": [
+          "llm-agents",
+          "treefmt-nix"
+        ]
+      },
+      "locked": {
+        "lastModified": 1778445566,
+        "narHash": "sha256-oQvcadh2BCkrog+SGrG6YffKJrveYpjj3TdQJWaKhaM=",
+        "owner": "nix-community",
+        "repo": "bun2nix",
+        "rev": "2499dedd70744dba1815875b854818a3019e9e4c",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-community",
+        "ref": "staging-2.1.0",
+        "repo": "bun2nix",
+        "type": "github"
+      }
+    },
     "cachyos-kernel": {
       "flake": false,
       "locked": {
@@ -173,26 +232,6 @@
         "type": "github"
       }
     },
-    "copilot-cli": {
-      "inputs": {
-        "nixpkgs": [
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1777551333,
-        "narHash": "sha256-KT1gKH7jUUvHv3YT9F9VWkf1tI1cOsUkd0Ta/42FNB8=",
-        "owner": "scarisey",
-        "repo": "copilot-cli-flake",
-        "rev": "9c2c4795d8cd5b5b838791e9627e585bab2bb4c3",
-        "type": "github"
-      },
-      "original": {
-        "owner": "scarisey",
-        "repo": "copilot-cli-flake",
-        "type": "github"
-      }
-    },
     "crane": {
       "locked": {
         "lastModified": 1777689689,
@@ -510,7 +549,7 @@
     },
     "flake-utils_2": {
       "inputs": {
-        "systems": "systems_4"
+        "systems": "systems_5"
       },
       "locked": {
         "lastModified": 1731533236,
@@ -702,6 +741,33 @@
         "type": "github"
       }
     },
+    "llm-agents": {
+      "inputs": {
+        "blueprint": "blueprint",
+        "bun2nix": "bun2nix",
+        "flake-parts": [
+          "flake-parts"
+        ],
+        "nixpkgs": [
+          "nixpkgs"
+        ],
+        "systems": "systems_3",
+        "treefmt-nix": "treefmt-nix_2"
+      },
+      "locked": {
+        "lastModified": 1779169598,
+        "narHash": "sha256-kDqwhShM5QO23wtV19ABgMK7tERiAH9SG9Tq78QkL8Y=",
+        "owner": "numtide",
+        "repo": "llm-agents.nix",
+        "rev": "66fdac12b5c15aa5c6161d9890e09b378a775cc2",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "llm-agents.nix",
+        "type": "github"
+      }
+    },
     "nix": {
       "flake": false,
       "locked": {
@@ -1112,7 +1178,6 @@
         "buildkit-tekton": "buildkit-tekton",
         "chapeau-rouge": "chapeau-rouge",
         "chick-group": "chick-group",
-        "copilot-cli": "copilot-cli",
         "dagger": "dagger",
         "daneel": "daneel",
         "disko": "disko",
@@ -1125,6 +1190,7 @@
         "home-manager": "home-manager",
         "home-manager-25_11": "home-manager-25_11",
         "lanzaboote": "lanzaboote",
+        "llm-agents": "llm-agents",
         "nix-cachyos-kernel": "nix-cachyos-kernel",
         "nix-github-actions": "nix-github-actions_4",
         "nixos-hardware": "nixos-hardware",
@@ -1243,6 +1309,21 @@
         "type": "github"
       }
     },
+    "systems_5": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
     "treefmt-nix": {
       "inputs": {
         "nixpkgs": [
@@ -1264,6 +1345,27 @@
         "type": "github"
       }
     },
+    "treefmt-nix_2": {
+      "inputs": {
+        "nixpkgs": [
+          "llm-agents",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1775636079,
+        "narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
+        "owner": "numtide",
+        "repo": "treefmt-nix",
+        "rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "treefmt-nix",
+        "type": "github"
+      }
+    },
     "userborn": {
       "inputs": {
         "flake-compat": [
@@ -1276,7 +1378,7 @@
           "nixpkgs"
         ],
         "pre-commit-hooks-nix": "pre-commit-hooks-nix",
-        "systems": "systems_3"
+        "systems": "systems_4"
       },
       "locked": {
         "lastModified": 1770377964,
flake.nix
@@ -426,8 +426,9 @@
     nixos-raspberrypi.inputs.nixpkgs.follows = "nixpkgs";
     nixos-raspberrypi.inputs.flake-compat.follows = "flake-compat";
 
-    copilot-cli.url = "github:scarisey/copilot-cli-flake";
-    copilot-cli.inputs.nixpkgs.follows = "nixpkgs";
+    llm-agents.url = "github:numtide/llm-agents.nix";
+    llm-agents.inputs.nixpkgs.follows = "nixpkgs";
+    llm-agents.inputs.flake-parts.follows = "flake-parts";
 
     voxtype.url = "github:peteonrails/voxtype/main";
     voxtype.inputs.nixpkgs.follows = "nixpkgs";