Compare commits

...

33 Commits

Author SHA1 Message Date
4bc5df11c4 feat(packages): add ds4 package with ROCm/Strix Halo backend
Some checks failed
CI / check (push) Has been cancelled
Add antirez/ds4 — DeepSeek V4 Flash/PRO local inference engine built
with the ROCm strix-halo target for AMD Radeon 8060S (gfx1151).
Wires up all 8 ROCm transitive dependencies (clr, hipblas, hipblas-common,
hipblaslt, hipcub, rocblas, rocprim, rocwmma) via explicit include/lib paths.
2026-06-19 23:06:42 +03:00
6afcc00165 feat(packages): add omniroute package
Some checks failed
CI / check (push) Has been cancelled
Add OmniRoute v3.8.28 - a unified AI router aggregating 160+ providers
with auto fallback, MCP/A2A support, and OpenAI-compatible APIs.

Uses a hybrid approach: GitHub source for dependency resolution via
fetchNpmDeps, combined with pre-built dist/ from the npm tarball to
avoid the complex Next.js build in the Nix sandbox.
2026-06-19 09:39:05 +03:00
744d2419e6 feat(packages): add relay-free-llm package
Add RelayFreeLLM, a RESTful API gateway that routes prompts to multiple
AI providers (Gemini, Cerebras, Groq, Mistral, etc.) with failover and
intent-based routing. Includes local cerebras-cloud-sdk build since it is
not yet in nixpkgs.
2026-06-19 08:49:29 +03:00
8d8f56664d fix(packages): correct pname typo, add missing category, add sed warning, fix indent
- graphify: fix pname typo graphifyy -> graphify
- container-use: add missing passthru.category
- radar: add brittleness warning on postPatch sed block
- freebuff: fix extractNpmPkg indentation
2026-06-17 14:11:20 +03:00
eae85ce989 chore: remove goose-cli package and cleanup configuration
Some checks failed
CI / check (push) Has been cancelled
2026-06-16 22:01:18 +03:00
4bf6faa2a7 chore: remove goose-cli package and cleanup configuration
- Delete packages/goose-cli/ (librusty_v8 pre-built binary dependency)
- Remove global nixpkgs.config.allowUnfree from flake.nix
  (goose-cli was the only package requiring unfree binaries)
- Add .claude/ to .gitignore
- Update README.md and AGENTS.md to remove all goose-cli references
2026-06-16 21:41:30 +03:00
bbd20d955d feat(loop): extract desktop file and icons from AppImage
Some checks failed
CI / check (push) Has been cancelled
- Use appimageTools.extractType2 to access embedded assets
- Install loop-desktop.desktop and rewrite Exec=AppRun → Exec=loop
- Copy hicolor icons (16–1024px) from AppImage tree
2026-06-09 13:17:16 +03:00
5ec513fe8c refactor(loop): switch from tar.gz to AppImage packaging
Some checks failed
CI / check (push) Has been cancelled
- Use appimageTools.wrapType2 instead of manual stdenv.mkDerivation
- Source: loop-desktop-6.0.3-linux-x86_64.AppImage
- Simplify dependencies via extraPkgs (gtk3, glib)
2026-06-09 11:16:33 +03:00
Hermes Agent
a0abf62d0d feat: add stakpak package (v0.3.86)
Some checks failed
CI / check (push) Has been cancelled
Stakpak is a DevOps AI agent that generates infrastructure code,
debugs Kubernetes, configures CI/CD, and automates deployments.

- Source: github.com/stakpak/agent v0.3.86
- Rust workspace (14 crates), default binary: stakpak
- Dependencies: openssl (transitive via native-tls), pkg-config
- License: Apache-2.0
2026-06-07 19:42:25 +00:00
37dd6d3295 fix(loop): Replace deprecated xorg dependencies with standalone packages
Some checks failed
CI / check (push) Has been cancelled
Replace deprecated xorg.* references with their standalone package
names to eliminate build warnings about renamed packages.
2026-05-30 19:50:29 +03:00
cb5ace4837 fix(loop): update homepage URL to loop.ru
Some checks failed
CI / check (push) Has been cancelled
2026-05-29 20:27:01 +03:00
cf676f951c fix(loop): keep only --ozone-platform=x11, remove --no-sandbox
Some checks failed
CI / check (push) Has been cancelled
User confirmed that --no-sandbox is unnecessary and that the app
crashes without --ozone-platform=x11. Keep the minimal working
wrapper flags.
2026-05-29 20:24:49 +03:00
bede48c22e fix(loop): remove forced X11, keep --no-sandbox
Some checks failed
CI / check (push) Has been cancelled
Revert the --ozone-platform=x11 flag since the user prefers native
Wayland. The flag was added to work around a zxdg_exporter_v1
Wayland protocol crash in Electron, but forcing X11 is not
acceptable for Wayland users. Keep --no-sandbox for NixOS store
compatibility.
2026-05-29 20:23:03 +03:00
3a86fe84f4 fix(loop): force X11 ozone platform and disable sandbox
Some checks failed
CI / check (push) Has been cancelled
- Add --ozone-platform=x11 to wrapper to fix Wayland crash
  (zxdg_exporter_v1 protocol error causing SIGTRAP on Wayland)
- Add --no-sandbox since chrome-sandbox lacks SUID on NixOS
2026-05-29 20:20:07 +03:00
d23dc7ab22 fix(loop): add runtime fixes for gsettings and GPU libraries
Some checks failed
CI / check (push) Has been cancelled
- Add LD_LIBRARY_PATH to wrapper so Electron GPU process finds bundled libEGL.so.1
- Add glib.bin to buildInputs and wrap gsettings into PATH
- Create versioned symlinks for bundled libEGL.so and libGLESv2.so
- Clean up formatting in package inputs
2026-05-29 20:04:32 +03:00
3b597af162 feat(loop): Add Loop corporate messenger package
Some checks failed
CI / check (push) Has been cancelled
Add Loop v6.0.3 - a corporate messenger distributed as a pre-built x86-64 binary.
Uses autoPatchelfHook and wrapGAppsHook3 for NixOS compatibility.
2026-05-29 19:51:21 +03:00
37af68cfd0 docs(AGENTS): add sequential-thinking MCP and caveman skill requirements
Some checks failed
CI / check (push) Has been cancelled
- Require sequentialthinking MCP for all planning/problem-solving
- Add caveman mode for compressed user-facing communication
- Clarify karpathy-guidelines usage for task execution quality
2026-05-27 22:06:38 +03:00
6f18e72272 docs(AGENTS): add mandatory beads workflow section before any work
Some checks failed
CI / check (push) Has been cancelled
Make bd usage explicit with a "Before Starting Any Work" section,
updated example workflow, and strengthened quick reference rules.
This prevents agents from using TodoWrite or other non-bd tracking.
2026-05-27 22:01:26 +03:00
bcf607c209 feat(hipengine): add ROCm-native LLM inference engine (v0.2.2)
Some checks failed
CI / check (push) Has been cancelled
2026-05-27 21:56:18 +03:00
7f0cec1a35 fix(aionui): Use production-only deps for runtime, hoist transitive deps
Some checks failed
CI / check (push) Has been cancelled
Replace full node_modules copy with production-only FOD (mirrors
the upstream Dockerfile pattern), reducing package output from
~6.9 GB to ~1.3 GB.

Hoist @sentry/node to top-level node_modules so Electron's
require() resolution can find it. Bun nests transitive deps
inside .bun/ but Electron resolves from the realpath, requiring
the dependency to be accessible from the walked-up directory
chain.
2026-05-27 14:35:57 +03:00
02947027ba feat(aionui): Add AionUi AI cowork desktop app (v2.1.4)
Some checks failed
CI / check (push) Has been cancelled
Build AionUi from source using bun for dependency fetching and
electron-vite for TypeScript compilation. Native addons
(better-sqlite3, sharp) are compiled against nixpkgs node-gyp.

The package uses a fixed-output derivation for bun install,
electron-vite for the build, and wraps the result with nixpkgs
electron for a fully self-contained runtime.

Also includes desktop entry and icon generation.
2026-05-27 13:48:18 +03:00
efc1ad85e2 chore(beads): update issues
Some checks failed
CI / check (push) Has been cancelled
2026-05-17 16:03:47 +03:00
c805ff1d69 chore(radar): update to v1.6.1 2026-05-17 16:03:33 +03:00
e3adb2e906 docs(AGENTS): add required skills section for nix, nix-flakes, karpathy-guidelines
Some checks failed
CI / check (push) Has been cancelled
2026-05-17 15:55:36 +03:00
bb3c53b40b refactor(freebuff): run engine directly from nix-store
Some checks failed
CI / check (push) Has been cancelled
Remove unnecessary copy to ~/.config/manicode/. The patched ELF
binary and tree-sitter.wasm stay in the nix store alongside a minimal
JS launcher that spawns the engine with terminal cleanup handling.
2026-05-12 11:48:46 +03:00
6c5fdd7331 fix(freebuff): patch pre-built binary with patchelf for NixOS compatibility
- Download and extract the engine binary from codebuff.com releases
- Use patchelf to set correct glibc interpreter path
- Create wrapper launcher that copies patched binary to user config
- Pre-fetch all npm dependencies (no network needed in sandbox)
- Set dontStrip/dontPatchelf to prevent fixupPhase corruption
2026-05-12 09:31:40 +03:00
c7029a0d34 docs(README): add missing packages to project structure section 2026-05-11 20:55:16 +03:00
a7ddc90e17 feat: add freebuff package (Codebuff AI coding agent)
Some checks failed
CI / check (push) Has been cancelled
Add freebuff v0.0.85 from npm registry — a pure JS CLI tool for
AI-assisted coding. Pre-fetches all transitive npm dependencies to
work within the Nix sandbox (no network access during build).
2026-05-11 20:04:22 +03:00
52971ae66b Merge pull request 'refactor/radar-native-build' (#1) from refactor/radar-native-build into main
Some checks failed
CI / check (push) Has been cancelled
Reviewed-on: #1
2026-05-11 18:55:51 +03:00
cbaa6b6bca fix(radar): inject correct build version via ldflags
Some checks failed
CI / check (pull_request) Has been cancelled
Version was showing as "dev" instead of "v1.5.14" because ldflags
targeted the wrong variable. Changed from internal/version.Current
to main.version which is the variable actually used by cmd/explorer.
2026-05-11 18:49:47 +03:00
3b0bc435c4 refactor(radar): build from source instead of prebuilt binary
Replace fetchurl + prebuilt binary with buildGoModule + buildNpmPackage
to compile radar natively from source. Frontend (React/Vite) is built
as a separate derivation, then embedded into the Go binary via go:embed.

Also patches the npm lockfile to add missing resolved URLs for
workspace packages that lacked them, enabling proper dependency fetching.

Closes nix-overlay-qlc
2026-05-11 18:09:02 +03:00
0d6b74045e Update package.nix
Some checks failed
CI / check (push) Has been cancelled
2026-05-11 11:31:25 +03:00
ca9a8050df chore(beads): update issue status for nix-overlay-2lr
Some checks failed
CI / check (push) Has been cancelled
2026-05-11 11:30:02 +03:00
30 changed files with 1049 additions and 207 deletions

View File

@@ -1 +1,13 @@
{"_type":"issue","id":"nix-overlay-2lr","title":"radar","description":"Используй karpathy-guidelines и Sequential Thinking для планирования шаг за шагом добавления нового пакета https://github.com/skyhook-io/radar.git в данный NIXOS overlay-репозиторий. Разбей задачу на подзадачи, используя beads. В написании кода используй refContext и context7.\n\n\n\n## Required Skills\ncaveman,karpathy-guidelines,nix,nix-flakes","status":"in_progress","priority":2,"issue_type":"feature","assignee":"Alexander Miroshnichenko","owner":"alex@millerson.name","created_at":"2026-05-10T19:28:56Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-10T19:35:29Z","started_at":"2026-05-10T19:30:31Z","dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"nix-overlay-6y6","title":"Add Loop corporate messenger package","description":"Add Loop - Corporate messenger for your team. Distributed as x86-64 binary from https://artifacts.wilix.dev/repository/loop-files/loop-6.0.3/loop-desktop-6.0.3-linux-x64.tar.gz","status":"closed","priority":2,"issue_type":"feature","assignee":"Alexander Miroshnichenko","owner":"alex@millerson.name","created_at":"2026-05-29T16:41:37Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-29T16:51:32Z","started_at":"2026-05-29T16:42:02Z","closed_at":"2026-05-29T16:51:32Z","close_reason":"Closed","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"nix-overlay-cdt","title":"radar-1.6.1","description":"update package radar to v1.6.1","status":"closed","priority":2,"issue_type":"task","owner":"alex@millerson.name","created_at":"2026-05-17T12:41:54Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-17T13:03:38Z","closed_at":"2026-05-17T13:03:38Z","close_reason":"Closed","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"nix-overlay-27z","title":"freebuff","description":"В данный nixos overlay репозиторй необходимо добавить новый пакет https://www.npmjs.com/package/freebuff .\nИспользуй mcp: nixos, karpathy-guidelines и Sequential Thinking для планирования шаг за шагом задачи. Управление тасками используй beads. Разбей задачу на подзадачи, используя beads с указанием parent task.\n\nRequired Skills\ncaveman,karpathy-guidelines,nix,nix-flakes","status":"closed","priority":2,"issue_type":"feature","assignee":"Alexander Miroshnichenko","owner":"alex@millerson.name","created_at":"2026-05-11T16:11:44Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-11T17:03:53Z","started_at":"2026-05-11T16:17:34Z","closed_at":"2026-05-11T17:03:53Z","close_reason":"Closed","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"nix-overlay-qlc.5","title":"Update package metadata and updateScript","description":"Remove binaryNativeCode sourceProvenance, update meta, adjust updateScript for source build","status":"closed","priority":2,"issue_type":"task","assignee":"Alexander Miroshnichenko","owner":"alex@millerson.name","created_at":"2026-05-11T13:51:22Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-11T15:01:06Z","started_at":"2026-05-11T14:59:33Z","closed_at":"2026-05-11T15:01:06Z","close_reason":"Closed","dependencies":[{"issue_id":"nix-overlay-qlc.5","depends_on_id":"nix-overlay-qlc","type":"parent-child","created_at":"2026-05-11T16:51:21Z","created_by":"Alexander Miroshnichenko","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"nix-overlay-qlc.4","title":"Test build and verify functionality","description":"Build radar from source and verify it runs correctly","status":"closed","priority":2,"issue_type":"task","owner":"alex@millerson.name","created_at":"2026-05-11T13:51:11Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-11T14:59:55Z","closed_at":"2026-05-11T14:59:55Z","close_reason":"Closed","dependencies":[{"issue_id":"nix-overlay-qlc.4","depends_on_id":"nix-overlay-qlc","type":"parent-child","created_at":"2026-05-11T16:51:10Z","created_by":"Alexander Miroshnichenko","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"nix-overlay-qlc.3","title":"Handle go:embed frontend assets","description":"Ensure frontend assets are copied to internal/static/dist before Go build so go:embed works correctly","status":"closed","priority":2,"issue_type":"task","owner":"alex@millerson.name","created_at":"2026-05-11T13:51:02Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-11T14:59:55Z","closed_at":"2026-05-11T14:59:55Z","close_reason":"Closed","dependencies":[{"issue_id":"nix-overlay-qlc.3","depends_on_id":"nix-overlay-qlc","type":"parent-child","created_at":"2026-05-11T16:51:02Z","created_by":"Alexander Miroshnichenko","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"nix-overlay-qlc.2","title":"Configure npm dependencies for frontend build","description":"Set up npmDependencies hash for the Vite/React frontend build within buildGoModule","status":"closed","priority":2,"issue_type":"task","owner":"alex@millerson.name","created_at":"2026-05-11T13:50:53Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-11T14:59:55Z","closed_at":"2026-05-11T14:59:55Z","close_reason":"Closed","dependencies":[{"issue_id":"nix-overlay-qlc.2","depends_on_id":"nix-overlay-qlc","type":"parent-child","created_at":"2026-05-11T16:50:52Z","created_by":"Alexander Miroshnichenko","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"nix-overlay-qlc.1","title":"Update radar default.nix to use buildGoModule","description":"Change package.nix from stdenv.mkDerivation with fetchurl to buildGoModule pattern","status":"closed","priority":2,"issue_type":"task","assignee":"Alexander Miroshnichenko","owner":"alex@millerson.name","created_at":"2026-05-11T13:50:42Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-11T14:59:55Z","started_at":"2026-05-11T13:51:49Z","closed_at":"2026-05-11T14:59:55Z","close_reason":"Closed","dependencies":[{"issue_id":"nix-overlay-qlc.1","depends_on_id":"nix-overlay-qlc","type":"parent-child","created_at":"2026-05-11T16:50:41Z","created_by":"Alexander Miroshnichenko","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"nix-overlay-qlc","title":"Rebuild radar package from source instead of prebuilt binary","description":"Current radar package uses prebuilt binary from GitHub releases. Need to rebuild from source using nix native tooling (buildGoModule + npm for frontend). Build pipeline: 1) npm run build for frontend, 2) copy assets to internal/static/dist, 3) CGO_ENABLED=0 go build with embedded assets.","status":"closed","priority":2,"issue_type":"task","owner":"alex@millerson.name","created_at":"2026-05-11T13:50:27Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-11T15:01:06Z","closed_at":"2026-05-11T15:01:06Z","close_reason":"Closed","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"nix-overlay-y8r","title":"nix-overlay-2lr-3 · Approach 3: ручной npm cache + buildGoModule [parent:nix-overlay-2lr]","notes":"BLOCKED: fetchNpmDeps v2 не загружает workspace-scoped пакеты (@vitejs/plugin-react ENOTCACHED) даже с makeCacheWritable=true. Все 3 подхода заблокированы одним ограничением — fetchNpmDeps v2 не поддерживает npm workspaces корректно, вопреки release notes.","status":"closed","priority":2,"issue_type":"task","assignee":"Alexander Miroshnichenko","owner":"alex@millerson.name","created_at":"2026-05-11T09:38:34Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-11T11:14:40Z","started_at":"2026-05-11T10:23:41Z","closed_at":"2026-05-11T11:14:40Z","dependencies":[{"issue_id":"nix-overlay-y8r","depends_on_id":"nix-overlay-2lr","type":"parent-child","created_at":"2026-05-11T12:42:18Z","created_by":"Alexander Miroshnichenko","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"nix-overlay-dcx","title":"nix-overlay-2lr-2 · Approach 2: bun2nix генерация пакетов [parent:nix-overlay-2lr]","notes":"Skipping bun2nix — требует staging branch, неочевидная поддержка npm lockfiles. Проще перейти к Approach 3 (ручной stdenv.mkDerivation с nodejs/npm).","status":"closed","priority":2,"issue_type":"task","assignee":"Alexander Miroshnichenko","owner":"alex@millerson.name","created_at":"2026-05-11T09:38:06Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-11T10:23:18Z","started_at":"2026-05-11T10:21:04Z","closed_at":"2026-05-11T10:23:18Z","dependencies":[{"issue_id":"nix-overlay-dcx","depends_on_id":"nix-overlay-2lr","type":"parent-child","created_at":"2026-05-11T12:42:12Z","created_by":"Alexander Miroshnichenko","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"nix-overlay-3ik","title":"nix-overlay-2lr-1 · Approach 1: buildNpmPackage + buildGoModule с npmDepsFetcherVersion=2 [parent:nix-overlay-2lr]","notes":"fetchNpmDeps v2 не resolves workspace-scoped packages (@vitejs/plugin-react ENOTCACHED). Approach blocked — same issue as previous attempt. Moving to Approach 2 (bun2nix).","status":"closed","priority":2,"issue_type":"task","assignee":"Alexander Miroshnichenko","owner":"alex@millerson.name","created_at":"2026-05-11T09:37:43Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-11T10:20:38Z","started_at":"2026-05-11T09:39:05Z","closed_at":"2026-05-11T10:20:38Z","dependencies":[{"issue_id":"nix-overlay-3ik","depends_on_id":"nix-overlay-2lr","type":"parent-child","created_at":"2026-05-11T12:41:54Z","created_by":"Alexander Miroshnichenko","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"nix-overlay-2lr","title":"radar","description":"Используй karpathy-guidelines и Sequential Thinking для планирования шаг за шагом добавления нового пакета https://github.com/skyhook-io/radar.git в данный NIXOS overlay-репозиторий. Разбей задачу на подзадачи, используя beads. В написании кода используй mcp: nixos, refContext и context7.\n\n\n\n## Required Skills\ncaveman,karpathy-guidelines,nix,nix-flakes","notes":"Все 3 подхода провалены. fetchNpmDeps v2 НЕ работает с npm workspaces вопреки release notes - ENOTCACHED для workspace-scoped пакетов (@vitejs/plugin-react). Ручной сбор node_modules без npm ci слишком сложен (требует reimplement fetchNpmDeps). Текущее решение: pre-built binary из GitHub Releases. Нужно дождаться исправления fetchNpmDeps v2 в nixpkgs или upstream поддержки standalone lockfile для web/.","status":"closed","priority":2,"issue_type":"feature","assignee":"Alexander Miroshnichenko","owner":"alex@millerson.name","created_at":"2026-05-10T19:28:56Z","created_by":"Alexander Miroshnichenko","updated_at":"2026-05-11T11:24:40Z","started_at":"2026-05-10T19:30:31Z","closed_at":"2026-05-11T11:24:40Z","dependency_count":0,"dependent_count":0,"comment_count":0}

1
.gitignore vendored
View File

@@ -1,5 +1,6 @@
.qoder .qoder
.qwen .qwen
.claude/
result result
result-* result-*
.direnv/ .direnv/

View File

@@ -15,6 +15,45 @@ This is a **Nix flake overlay** repository that provides additional packages for
3. Touch only what you must. Clean up only your own mess. 3. Touch only what you must. Clean up only your own mess.
4. Define success criteria. Loop until verified. 4. Define success criteria. Loop until verified.
## Before Starting Any Work
**MANDATORY** — Before writing code, running builds, or making any changes:
1. **Run `bd prime`** — Get full workflow context and available commands
2. **Check for existing issues** — Run `bd ready` to find available work
3. **Claim the task** — Use `bd update <id> --claim` before starting
4. **Track via `bd` ONLY** — NEVER use TodoWrite, TaskCreate, or markdown TODO lists. All task tracking goes through `bd`.
Violating this rule means the agent is working outside the project's workflow. Stop and re-claim via `bd` first.
### Required Skills
Always use these skills when working with this repository:
- **nix** - For nixpkgs package lookups, option searches, and NixOS/Home Manager queries
- **nix-flakes** - For reproducible builds, flake management, and devShell operations
- **karpathy-guidelines** - For high-quality task execution best practices
### Required MCP Server
- **sequentialthinking** — MUST be used for ANY planning, problem-solving, or decision-making.
Invoke `sequentialthinking` MCP before:
- Designing implementation approaches
- Debugging non-obvious issues
- Evaluating trade-offs between approaches
- Breaking down complex tasks
- When you're uncertain about the best path forward
Do NOT skip deliberative thinking. Surface reasoning through sequentialthinking before acting.
### Communication: Caveman Mode
Use **caveman** skill for all user-facing communication. Responses should be:
- Ultra-compressed — cut token waste, keep technical substance
- Direct — no filler, no hedging, no "I'd recommend"
- Action-oriented — state what was done and what's next
Trigger: `skill: "caveman"` before responding to the user.
### Blueprint Framework ### Blueprint Framework
This project uses `numtide/blueprint` which: This project uses `numtide/blueprint` which:
@@ -49,12 +88,6 @@ nix-overlay/
│ ├── default/ # Meta-package listing all visible packages │ ├── default/ # Meta-package listing all visible packages
│ │ ├── default.nix │ │ ├── default.nix
│ │ └── package.nix │ │ └── package.nix
│ ├── goose-cli/ # Example package: Goose AI agent CLI
│ │ ├── default.nix
│ │ ├── package.nix # Main package definition
│ │ ├── fetchers.nix # Custom fetchers (if needed)
│ │ ├── librusty_v8.nix # V8 library pre-built binary
│ │ └── update.py # Update script for version bumps
│ └── flake-inputs/ # Utility to cache all flake inputs │ └── flake-inputs/ # Utility to cache all flake inputs
│ └── default.nix │ └── default.nix
├── README.md # User-facing documentation ├── README.md # User-facing documentation
@@ -193,7 +226,7 @@ When adding a new package:
```bash ```bash
# Build specific package # Build specific package
nix build .#goose-cli nix build .#mcp-gateway
# Build all packages for current system # Build all packages for current system
nix build .#packages nix build .#packages
@@ -280,7 +313,6 @@ nix build .#<package-name>
### Package-Specific Notes ### Package-Specific Notes
- **goose-cli**: Also updates `librusty_v8` hashes automatically via the custom fetcher
- **mcp-gateway**: Standard Rust package, `nix-update` handles version + cargoHash - **mcp-gateway**: Standard Rust package, `nix-update` handles version + cargoHash
- **skillsmcp**: Pinned to a commit hash; use `--version=branch=main` or specify the target commit with `--commit` - **skillsmcp**: Pinned to a commit hash; use `--version=branch=main` or specify the target commit with `--commit`
@@ -309,6 +341,11 @@ This skill provides:
## Example Workflow: Adding a New Package ## Example Workflow: Adding a New Package
```bash ```bash
# 0. Claim the task via beads (MANDATORY before any work)
bd ready # Find available work
bd show <id> # Review task details
bd update <id> --claim # Claim the task
# 1. Create package directory # 1. Create package directory
mkdir -p packages/my-tool mkdir -p packages/my-tool
@@ -320,6 +357,9 @@ cat > packages/my-tool/default.nix << 'EOF'
pkgs.callPackage ./package.nix { } pkgs.callPackage ./package.nix { }
EOF EOF
# 3.5. Stage for Blueprint discovery
git add packages/my-tool/
# 4. Test build # 4. Test build
nix build .#my-tool nix build .#my-tool
@@ -330,6 +370,9 @@ nix build .#my-tool
# 7. Commit changes using conventional-commit skill # 7. Commit changes using conventional-commit skill
git add packages/my-tool README.md git add packages/my-tool README.md
# Then invoke: skill: "conventional-commit" # Then invoke: skill: "conventional-commit"
# 8. Close the task via beads
bd close <id> # Mark task as complete
``` ```
<!-- BEGIN BEADS INTEGRATION v:1 profile:minimal hash:ca08a54f --> <!-- BEGIN BEADS INTEGRATION v:1 profile:minimal hash:ca08a54f -->
@@ -340,17 +383,20 @@ This project uses **bd (beads)** for issue tracking. Run `bd prime` to see full
### Quick Reference ### Quick Reference
```bash ```bash
bd prime # ALWAYS run first — get full context and command reference
bd ready # Find available work bd ready # Find available work
bd show <id> # View issue details bd show <id> # View issue details
bd update <id> --claim # Claim work bd update <id> --claim # Claim work (do this BEFORE starting any task)
bd close <id> # Complete work bd close <id> # Complete work (do this AFTER pushing changes)
bd remember # Save persistent knowledge (use instead of MEMORY.md files)
``` ```
### Rules ### Rules
- Use `bd` for ALL task tracking — do NOT use TodoWrite, TaskCreate, or markdown TODO lists - **Use `bd` for ALL task tracking** — do NOT use TodoWrite, TaskCreate, or markdown TODO lists
- Run `bd prime` for detailed command reference and session close protocol - **Run `bd prime` BEFORE starting any work** — this provides session context and close protocol
- Use `bd remember` for persistent knowledge — do NOT use MEMORY.md files - **Run `bd remember` for persistent knowledge** — do NOT use MEMORY.md files
- **If you forgot to claim** — stop working and claim via `bd` immediately
## Session Completion ## Session Completion

View File

@@ -12,14 +12,21 @@ A custom Nix overlay and flake providing additional packages not found in upstre
| Package | Description | Category | | Package | Description | Category |
|---------|-------------|----------| |---------|-------------|----------|
| `aionui` | Free, open-source, Cowork app with AI Agents | AI Coding Agents |
| `container-use` | Containerized environments for coding agents | AI Coding Agents | | `container-use` | Containerized environments for coding agents | AI Coding Agents |
| `desloppify` | Multi-language codebase health scanner and technical debt tracker for AI agents | AI Coding Agents | | `desloppify` | Multi-language codebase health scanner and technical debt tracker for AI agents | AI Coding Agents |
| `goose-cli` | CLI for Goose - a local, extensible, open source AI agent that automates engineering tasks | AI Coding Agents | | `ds4` | DeepSeek 4 Flash and PRO local inference engine for ROCm (Strix Halo) | AI Inference |
| `freebuff` | The world's strongest free coding agent | AI Coding Agents |
| `graphify` | Turn any folder of code, docs, papers, images, or videos into a queryable knowledge graph | AI Coding Agents | | `graphify` | Turn any folder of code, docs, papers, images, or videos into a queryable knowledge graph | AI Coding Agents |
| `hipengine` | ROCm-native local LLM inference engine with torch-free runtime for AMD RDNA GPUs | AI Inference |
| `mcp-gateway` | Universal Model Context Protocol gateway that sits between AI client and MCP tools/servers | MCP Servers | | `mcp-gateway` | Universal Model Context Protocol gateway that sits between AI client and MCP tools/servers | MCP Servers |
| `skillsmcp` | MCP server that exposes Agent Skills to AI agents via the Model Context Protocol | MCP Servers | | `skillsmcp` | MCP server that exposes Agent Skills to AI agents via the Model Context Protocol | MCP Servers |
| `kubernetes-mcp-server` | Model Context Protocol (MCP) server for Kubernetes and OpenShift | MCP Servers | | `kubernetes-mcp-server` | Model Context Protocol (MCP) server for Kubernetes and OpenShift | MCP Servers |
| `loop` | Corporate messenger for your team | Communication |
| `radar` | Modern Kubernetes visibility — topology, event timeline, service traffic, resource browsing, Helm management, and GitOps support | Kubernetes | | `radar` | Modern Kubernetes visibility — topology, event timeline, service traffic, resource browsing, Helm management, and GitOps support | Kubernetes |
| `omniroute` | Unified AI router with 160+ providers, auto fallback, MCP/A2A, OpenAI-compatible APIs | AI LLM Gateway |
| `relay-free-llm` | RESTful API to route user prompts to various AI model providers with automatic failover and intent-based routing | AI LLM Gateway |
| `stakpak` | DevOps AI agent that generates infrastructure code, debugs Kubernetes, configures CI/CD, and automates deployments | AI Agents |
## Usage ## Usage
@@ -69,10 +76,10 @@ With flakes enabled:
```bash ```bash
# Try a package # Try a package
nix run git+https://git.millerson.name/alex/millerson-overlay.nix.git#goose-cli nix run git+https://git.millerson.name/alex/millerson-overlay.nix.git#mcp-gateway
# Install permanently # Install permanently
nix profile install git+https://git.millerson.name/alex/millerson-overlay.nix.git#goose-cli nix profile install git+https://git.millerson.name/alex/millerson-overlay.nix.git#mcp-gateway
``` ```
## Development ## Development
@@ -89,7 +96,7 @@ nix profile install git+https://git.millerson.name/alex/millerson-overlay.nix.gi
nix build .#packages nix build .#packages
# Build specific package # Build specific package
nix build .#goose-cli nix build .#mcp-gateway
# Enter development shell # Enter development shell
nix develop nix develop
@@ -105,14 +112,23 @@ nix-overlay/
│ ├── default.nix # Binary-cache-friendly overlay │ ├── default.nix # Binary-cache-friendly overlay
│ └── shared-nixpkgs.nix # Dependency-sharing overlay │ └── shared-nixpkgs.nix # Dependency-sharing overlay
├── packages/ # Package definitions ├── packages/ # Package definitions
│ ├── aionui/ # AionUi - AI Cowork desktop app
│ ├── container-use/ # Containerized environments for coding agents
│ ├── default/ # Meta-package listing all packages │ ├── default/ # Meta-package listing all packages
│ ├── desloppify/ # Codebase health scanner for AI agents │ ├── desloppify/ # Codebase health scanner for AI agents
│ ├── ds4/ # DeepSeek V4 Flash/PRO inference engine (ROCm)
│ ├── flake-inputs/ # Utility for caching flake inputs │ ├── flake-inputs/ # Utility for caching flake inputs
│ ├── goose-cli/ # Goose AI agent CLI │ ├── freebuff/ # Free coding agent (Codebuff)
│ ├── graphify/ # Knowledge graph generator for code folders │ ├── graphify/ # Knowledge graph generator for code folders
│ ├── hipengine/ # ROCm-native LLM inference engine for AMD GPUs
│ ├── kubernetes-mcp-server/ # MCP server for Kubernetes and OpenShift
│ ├── loop/ # Corporate messenger for your team
│ ├── mcp-gateway/ # MCP protocol gateway │ ├── mcp-gateway/ # MCP protocol gateway
│ ├── omniroute/ # Unified AI router with 160+ providers
│ ├── radar/ # Kubernetes UI (topology, timeline, Helm, GitOps) │ ├── radar/ # Kubernetes UI (topology, timeline, Helm, GitOps)
── skillsmcp/ # MCP server for Agent Skills ── relay-free-llm/ # AI model provider routing gateway
│ ├── skillsmcp/ # MCP server for Agent Skills
│ └── stakpak/ # DevOps AI agent for infrastructure automation
└── README.md └── README.md
``` ```

View File

@@ -33,9 +33,6 @@
let let
blueprintOutputs = inputs.blueprint { blueprintOutputs = inputs.blueprint {
inherit inputs; inherit inputs;
# allowUnfree is needed for packages that depend on pre-built
# binaries (e.g., goose-cli's librusty_v8)
nixpkgs.config.allowUnfree = true;
}; };
in in
blueprintOutputs blueprintOutputs

View File

@@ -0,0 +1,5 @@
{
pkgs,
...
}:
pkgs.callPackage ./package.nix { }

230
packages/aionui/package.nix Normal file
View File

@@ -0,0 +1,230 @@
{
lib,
stdenv,
fetchFromGitHub,
bun,
nodejs,
node-gyp,
electron,
autoPatchelfHook,
makeWrapper,
copyDesktopItems,
imagemagick,
python3,
cacert,
}:
let
version = "2.1.4";
src = fetchFromGitHub {
owner = "iOfficeAI";
repo = "AionUi";
rev = "v${version}";
hash = "sha256-A7dKGEuo5n+M7D9fJR3TN95q1P7En/ulsTO+ev6SAUY=";
};
# FOD 1: All dependencies (dev + prod) for the build phase.
bunBuildDeps = stdenv.mkDerivation {
name = "aionui-build-deps-${version}";
inherit src;
nativeBuildInputs = [
bun
cacert
];
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = "sha256-Fuj55vxDgpx5A4iwnU/5IZKPfaYMH3DeZ1yauuZHn8g=";
dontPatchShebangs = true;
dontFixup = true;
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
buildPhase = ''
export HOME=$TMPDIR
bun install --frozen-lockfile --ignore-scripts
'';
installPhase = ''
mkdir -p $out
cp -r node_modules $out/
cp -r packages $out/
cp tsconfig.json $out/
'';
};
# FOD 2: Production-only dependencies for the runtime output.
# Mirrors the Dockerfile's `bun install --production --ignore-scripts`.
bunProdDeps = stdenv.mkDerivation {
name = "aionui-prod-deps-${version}";
inherit src;
nativeBuildInputs = [
bun
cacert
];
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = "sha256-eCQ9ObhttZ10CehRRvl4IaOKkdK9m1TQJuhLmhiMkBY=";
dontPatchShebangs = true;
dontFixup = true;
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
buildPhase = ''
export HOME=$TMPDIR
bun install --frozen-lockfile --production --ignore-scripts
'';
installPhase = ''
mkdir -p $out
cp -r node_modules $out/
'';
};
in
stdenv.mkDerivation rec {
pname = "aionui";
inherit version src;
nativeBuildInputs = [
bun
nodejs
node-gyp
autoPatchelfHook
makeWrapper
copyDesktopItems
imagemagick
python3
];
buildInputs = [
stdenv.cc.cc.lib
];
buildPhase = ''
runHook preBuild
export HOME=$TMPDIR
# Use the full dependency set for the build
ln -sf ${bunBuildDeps}/node_modules .
# Build better-sqlite3 native addon
echo "Building better-sqlite3 from source..."
BT3_SRC=$TMPDIR/bts3-src
BT3_OUT=$TMPDIR/bts3-out
mkdir -p "$BT3_SRC" "$BT3_OUT"
cp -rL node_modules/better-sqlite3/* "$BT3_SRC/"
chmod -R u+w "$BT3_SRC"
(
cd "$BT3_SRC"
export npm_config_nodedir=${nodejs}
node-gyp rebuild
mkdir -p "$BT3_OUT/build/Release"
cp build/Release/better_sqlite3.node "$BT3_OUT/build/Release/" 2>/dev/null || true
)
# electron-vite build
echo "Running electron-vite build..."
${nodejs}/bin/node node_modules/.bin/electron-vite build \
--config packages/desktop/electron.vite.config.ts
# Bundle MCP servers
echo "Building MCP servers..."
${nodejs}/bin/node scripts/build-mcp-servers.js
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,lib/aionui}
# Built output
cp -r out $out/lib/aionui/
cp -r public $out/lib/aionui/
cp package.json $out/lib/aionui/
# Production-only node_modules (mirrors Dockerfile)
cp -a ${bunProdDeps}/node_modules $out/lib/aionui/node_modules
chmod -R u+w $out/lib/aionui/node_modules
# Remove workspace symlink @aionui/web-host is bundled by
# electron-vite (excluded from externalizeDepsPlugin), so the
# symlink to packages/web-host is not needed at runtime.
rm -f $out/lib/aionui/node_modules/@aionui/web-host
# @sentry/electron requires @sentry/node at runtime, but bun
# nests it inside .bun/ rather than hoisting to top-level.
# Electron's require() walks up from the resolved realpath
# and needs it accessible either at top-level or via the
# symlink target's node_modules. We ensure top-level access.
if [ ! -e $out/lib/aionui/node_modules/@sentry/node ]; then
SRC=$(echo $out/lib/aionui/node_modules/.bun/@sentry+node@*/node_modules/@sentry/node)
if [ -d "$SRC" ]; then
ln -sf "$(realpath --relative-to=$out/lib/aionui/node_modules/@sentry "$SRC")" \
$out/lib/aionui/node_modules/@sentry/node
fi
fi
# Inject compiled better-sqlite3 .node into the runtime tree
if [ -f "$TMPDIR/bts3-out/build/Release/better_sqlite3.node" ]; then
rm -rf $out/lib/aionui/node_modules/better-sqlite3
cp -rL ${bunProdDeps}/node_modules/better-sqlite3 $out/lib/aionui/node_modules/better-sqlite3 2>/dev/null || true
chmod -R u+w $out/lib/aionui/node_modules/better-sqlite3
mkdir -p $out/lib/aionui/node_modules/better-sqlite3/build/Release
cp "$TMPDIR/bts3-out/build/Release/better_sqlite3.node" \
$out/lib/aionui/node_modules/better-sqlite3/build/Release/
fi
# Desktop entry
mkdir -p $out/share/applications
cat > $out/share/applications/aionui.desktop << EOF
[Desktop Entry]
Name=AionUi
Comment=Free, open-source Cowork app with AI Agents
Exec=$out/bin/aionui
Icon=aionui
Terminal=false
Type=Application
Categories=Office;Utility;
EOF
mkdir -p $out/share/icons/hicolor/256x256/apps
if [ -f resources/app.png ]; then
convert resources/app.png -resize 256x256 \
$out/share/icons/hicolor/256x256/apps/aionui.png
fi
# Launcher
makeWrapper ${electron}/bin/electron $out/bin/aionui \
--add-flags "$out/lib/aionui"
runHook postInstall
'';
dontStrip = true;
autoPatchelfIgnoreMissingDeps = true;
desktopItems = [ "aionui.desktop" ];
doCheck = false;
passthru = {
category = "AI Coding Agents";
updateScript = [
"nix-update"
"--flake"
".#aionui"
];
};
meta = with lib; {
description = "Free, open-source, Cowork app with AI Agents";
homepage = "https://github.com/iOfficeAI/AionUi";
changelog = "https://github.com/iOfficeAI/AionUi/releases/tag/v${version}";
license = licenses.asl20;
sourceProvenance = with sourceTypes; [ fromSource ];
mainProgram = "aionui";
platforms = platforms.linux;
};
}

View File

@@ -34,6 +34,7 @@ buildGoModule rec {
]; ];
passthru = { passthru = {
category = "AI Coding Agents";
updateScript = [ updateScript = [
"nix-update" "nix-update"
"--flake" "--flake"

2
packages/ds4/default.nix Normal file
View File

@@ -0,0 +1,2 @@
{ pkgs, ... }:
pkgs.callPackage ./package.nix { }

102
packages/ds4/package.nix Normal file
View File

@@ -0,0 +1,102 @@
{
lib,
stdenv,
fetchFromGitHub,
gnumake,
rocmPackages,
autoPatchelfHook,
}:
stdenv.mkDerivation {
pname = "ds4";
version = "0-unstable-2026-06-17";
src = fetchFromGitHub {
owner = "antirez";
repo = "ds4";
rev = "80ebbc396aee40eedc1d829222f3362d10fa4c6c";
hash = "sha256-Ieuc72GHZs20ModQfnvI5Me31n4Pj+WFYtsuqaKJceo=";
};
nativeBuildInputs = [
gnumake
rocmPackages.hipcc
autoPatchelfHook
];
buildInputs = [
rocmPackages.clr
rocmPackages.hipblas
rocmPackages.hipblas-common
rocmPackages.hipblaslt
rocmPackages.hipcub
rocmPackages.rocblas
rocmPackages.rocprim
rocmPackages.rocwmma
];
# STRIXHALO.md: rocwmma/internal/ headers may be missing in distro packages.
# nixpkgs builds rocwmma from source so all headers (including internal/) are present.
# ROCM_ARCH defaults to gfx1151 (Strix Halo / Radeon 8060S) in the upstream Makefile.
buildPhase = ''
runHook preBuild
make strix-halo -j"$NIX_BUILD_CORES" \
HIPCC="${rocmPackages.hipcc}/bin/hipcc" \
ROCM_CFLAGS="-O3 -ffast-math -g -fno-finite-math-only -pthread -D__HIP_PLATFORM_AMD__ -Wno-unused-command-line-argument --offload-arch=gfx1151 \
-I${rocmPackages.clr}/include \
-I${rocmPackages.hipblas}/include \
-I${rocmPackages.hipblas-common}/include \
-I${rocmPackages.hipblaslt}/include \
-I${rocmPackages.hipcub}/include \
-I${rocmPackages.rocblas}/include \
-I${rocmPackages.rocprim}/include \
-I${rocmPackages.rocwmma}/include" \
ROCM_LDLIBS="-lm -pthread \
-L${rocmPackages.hipblas}/lib -lhipblas \
-L${rocmPackages.hipblaslt}/lib -lhipblaslt \
-L${rocmPackages.rocblas}/lib -lrocblas \
-L${rocmPackages.clr}/lib -lamdhip64"
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp ds4 ds4-server ds4-bench ds4-eval ds4-agent $out/bin/
runHook postInstall
'';
passthru = {
category = "AI Inference";
updateScript = [
"nix-update"
"--flake"
"--version=branch=main"
".#ds4"
];
};
meta = {
description = "DeepSeek 4 Flash and PRO local inference engine for ROCm (Strix Halo)";
longDescription = ''
DS4 is a self-contained local inference engine specifically built for
DeepSeek V4 Flash and PRO. It bundles a CLI, HTTP server, and native
coding agent. This package is built with the ROCm backend for AMD
Strix Halo GPUs (gfx1151, Radeon 8060S).
Runtime requirements (from STRIXHALO.md):
- User must be in 'render' and 'video' groups for /dev/kfd and DRM access
- GPU-visible memory must be increased via kernel parameters:
amd_iommu=off amdgpu.gttsize=126976 ttm.pages_limit=32505856 ttm.page_pool_size=32505856
'';
homepage = "https://github.com/antirez/ds4";
changelog = "https://github.com/antirez/ds4/commits/main";
license = lib.licenses.mit;
platforms = [ "x86_64-linux" ];
mainProgram = "ds4";
};
}

View File

@@ -0,0 +1 @@
{ pkgs, ... }: pkgs.callPackage ./package.nix { glibc = pkgs.stdenv.cc.libc; }

View File

@@ -0,0 +1,153 @@
{
lib,
stdenv,
fetchurl,
nodejs,
makeWrapper,
patchelf,
glibc,
}:
let
version = "0.0.85";
freebuffSrc = fetchurl {
url = "https://registry.npmjs.org/freebuff/-/freebuff-${version}.tgz";
hash = "sha256-1x593yLMkoFIO5O+k5NKeEpi729VhINQlW1xFbYGnXM=";
};
pkgTar = fetchurl {
url = "https://registry.npmjs.org/tar/-/tar-7.5.15.tgz";
hash = "sha256-hl60jJtM1W2THQyGZj8G72GEG8QvVrHvNnr7EU1liBw=";
};
pkgFsMinipass = fetchurl {
url = "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz";
hash = "sha256-esKG48zMHqiYDnniA53va7l9MYLheVHNkJTwQA7ZgjY=";
};
pkgChownr = fetchurl {
url = "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz";
hash = "sha256-TCT12qYwFCJS2oneZV998JDqR5RQqIJYl3UdeDIbE2A=";
};
pkgMinipass = fetchurl {
url = "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz";
hash = "sha256-UqxhvnQ3VeP9yY5WAIbQ1KHix/02Qzh3kts44yLSfRI=";
};
pkgMinizlib = fetchurl {
url = "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz";
hash = "sha256-mb8uKWGBct1x8GVHN0kMaPcbx+I3nUc+OPn+8tvs4uM=";
};
pkgYallist = fetchurl {
url = "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz";
hash = "sha256-fJ1D26t8qzsxM7Dmpa8UAUSCKFMWs57J9QjvrdnrzpU=";
};
binarySrc = fetchurl {
url = "https://codebuff.com/api/releases/download/${version}/freebuff-linux-x64.tar.gz";
hash = "sha256-WRTEXqKDww4ZPAnDLAAkAd0jxl+z6+dRbcQORmN7QfM=";
};
in
stdenv.mkDerivation rec {
pname = "freebuff";
version = "0.0.85";
src = freebuffSrc;
nativeBuildInputs = [
makeWrapper
patchelf
];
dontStrip = true;
dontPatchelf = true;
installPhase = ''
runHook preInstall
# Extract and patch the pre-built binary for NixOS compatibility
mkdir -p "$out/bin" /tmp/fb-engine
tar xzf "${binarySrc}" -C /tmp/fb-engine --strip-components=0
cp /tmp/fb-engine/freebuff "$out/bin/freebuff-engine"
chmod 755 "$out/bin/freebuff-engine"
patchelf \
--set-interpreter "${glibc}/lib/ld-linux-x86-64.so.2" \
--set-rpath "${glibc}/lib:" \
"$out/bin/freebuff-engine"
if [ -f /tmp/fb-engine/tree-sitter.wasm ]; then
cp /tmp/fb-engine/tree-sitter.wasm "$out/bin/"
fi
rm -rf /tmp/fb-engine
# Extract npm dependencies from pre-fetched tarballs
extractNpmPkg() {
local src="$1" target="$2"
mkdir -p "$target"
tar xzf "$src" -C "$target" --strip-components=1
}
mkdir -p "$out/lib/node_modules/tar"
mkdir -p "$out/lib/node_modules/chownr"
mkdir -p "$out/lib/node_modules/minipass"
mkdir -p "$out/lib/node_modules/minizlib"
mkdir -p "$out/lib/node_modules/yallist"
mkdir -p "$out/lib/node_modules/@isaacs/fs-minipass"
extractNpmPkg "${pkgTar}" "$out/lib/node_modules/tar"
extractNpmPkg "${pkgChownr}" "$out/lib/node_modules/chownr"
extractNpmPkg "${pkgMinipass}" "$out/lib/node_modules/minipass"
extractNpmPkg "${pkgMinizlib}" "$out/lib/node_modules/minizlib"
extractNpmPkg "${pkgYallist}" "$out/lib/node_modules/yallist"
extractNpmPkg "${pkgFsMinipass}" "$out/lib/node_modules/@isaacs/fs-minipass"
# Launcher: run the patched engine directly from nix-store
cat > "$out/bin/launcher.js" << LAUNCHER_EOF
#!/usr/bin/env node
const { spawn } = require('child_process');
const TERMINAL_RESET = '\x1b[?1049l\x1b[?1000l\x1b[?1002l\x1b[?1003l\x1b[?1006l\x1b[?2004l\x1b[?25h';
const engine = '${placeholder "out"}/bin/freebuff-engine';
function reset() {
try { if (process.stdin.isTTY && process.stdin.setRawMode) process.stdin.setRawMode(false); } catch(e){}
try { if (process.stdout.isTTY) process.stdout.write(TERMINAL_RESET); } catch(e){}
}
const child = spawn(engine, process.argv.slice(2), { stdio: 'inherit' });
child.on('exit', (code, signal) => { reset(); process.exit(signal ? 1 : code || 0); });
child.on('error', (e) => { console.error('Failed to start freebuff:', e.message); process.exit(1); });
LAUNCHER_EOF
makeWrapper "${nodejs}/bin/node" "$out/bin/freebuff" \
--set NODE_PATH "$out/lib/node_modules" \
--add-flags "$out/bin/launcher.js"
runHook postInstall
'';
doCheck = false;
passthru = {
category = "AI Coding Agents";
updateScript = [
"nix-update"
"--flake"
".#freebuff"
];
};
meta = with lib; {
description = "The world's strongest free coding agent";
homepage = "https://codebuff.com";
license = licenses.mit;
mainProgram = "freebuff";
platforms = platforms.linux;
};
}

View File

@@ -1,9 +0,0 @@
{
pkgs,
...
}:
pkgs.callPackage ./package.nix {
librusty_v8 = pkgs.callPackage ./librusty_v8.nix {
inherit (pkgs.callPackage ./fetchers.nix { }) fetchLibrustyV8;
};
}

View File

@@ -1,21 +0,0 @@
# Fetchers for goose-cli pre-built dependencies
# Based on deno's approach for handling rusty_v8
{
lib,
stdenv,
fetchurl,
}:
{
fetchLibrustyV8 =
args:
fetchurl {
name = "librusty_v8-${args.version}";
url = "https://github.com/denoland/rusty_v8/releases/download/v${args.version}/librusty_v8_release_${stdenv.hostPlatform.rust.rustcTarget}.a.gz";
hash = args.shas.${stdenv.hostPlatform.system};
meta = {
inherit (args) version;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
};
}

View File

@@ -1,13 +0,0 @@
# Pre-built librusty_v8 library for goose-cli
# This file specifies the rusty_v8 version and hashes for all supported platforms
{ fetchLibrustyV8 }:
fetchLibrustyV8 {
version = "145.0.0";
shas = {
x86_64-linux = "sha256-chV1PAx40UH3Ute5k3lLrgfhih39Rm3KqE+mTna6ysE=";
aarch64-linux = "sha256-4IivYskhUSsMLZY97+g23UtUYh4p5jk7CzhMbMyqXyY=";
x86_64-darwin = "sha256-1jUuC+z7saQfPYILNyRJanD4+zOOhXU2ac/LFoytwho=";
aarch64-darwin = "sha256-yHa1eydVCrfYGgrZANbzgmmf25p7ui1VMas2A7BhG6k=";
};
}

View File

@@ -1,94 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
rustPlatform,
pkg-config,
cmake,
cacert,
openssl,
libxcb,
dbus,
versionCheckHook,
librusty_v8,
llvmPackages,
}:
rustPlatform.buildRustPackage rec {
pname = "goose-cli";
version = "1.33.1";
src = fetchFromGitHub {
owner = "block";
repo = "goose";
rev = "v${version}";
hash = "sha256-FBICGOfVs2jbOdLWSInqfTYBdnCcbcGWHwqY/b6v8eg=";
};
cargoHash = "sha256-fN0FKDYFkZrQQPWdUlemOaGzIAZhqFyskz9TEmG+X4o=";
nativeBuildInputs = [
pkg-config
cmake
llvmPackages.libclang
];
buildInputs = [
openssl
libxcb
dbus
];
# The v8 package will try to download a `librusty_v8.a` release at build time to our read-only filesystem
# To avoid this we pre-download the file and export it via RUSTY_V8_ARCHIVE
env.RUSTY_V8_ARCHIVE = librusty_v8;
# bindgen (used by llama-cpp-sys-2) needs libclang and C headers
env.LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
env.BINDGEN_EXTRA_CLANG_ARGS = "-isystem ${lib.getDev stdenv.cc.libc}/include";
# reqwest needs CA certificates in the sandbox
env.SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
# Build only the CLI package
cargoBuildFlags = [
"--package"
"goose-cli"
];
# Enable tests with proper environment
doCheck = true;
checkPhase = ''
export HOME=$(mktemp -d)
export XDG_CONFIG_HOME=$HOME/.config
export XDG_DATA_HOME=$HOME/.local/share
export XDG_STATE_HOME=$HOME/.local/state
export XDG_CACHE_HOME=$HOME/.cache
mkdir -p $XDG_CONFIG_HOME $XDG_DATA_HOME $XDG_STATE_HOME $XDG_CACHE_HOME
# Run tests for goose-cli package only
cargo test --package goose-cli
'';
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
passthru = {
category = "AI Coding Agents";
updateScript = [
"nix-update"
"--flake"
".#goose-cli"
];
};
meta = {
description = "CLI for Goose - a local, extensible, open source AI agent that automates engineering tasks";
homepage = "https://github.com/block/goose";
changelog = "https://github.com/block/goose/releases/tag/v${version}";
license = lib.licenses.asl20;
sourceProvenance = with lib.sourceTypes; [ fromSource ];
mainProgram = "goose";
platforms = lib.platforms.all;
};
}

View File

@@ -1,26 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -i python3 -p python3 nix-update
"""
Update script for goose-cli package.
This script uses nix-update to fetch the latest version of goose-cli
and update the package.nix file with the new version, src hash, and cargoHash.
It also updates the librusty_v8 hashes via the custom fetchers.nix.
Usage:
./update.py # Update to latest release
./update.py --version 1.34.0 # Update to specific version
"""
import subprocess
import sys
def main():
args = ["nix-update", "--flake", ".#goose-cli"] + sys.argv[1:]
subprocess.check_call(args)
if __name__ == "__main__":
main()

View File

@@ -5,7 +5,7 @@
}: }:
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "graphifyy"; pname = "graphify";
version = "0.7.10"; version = "0.7.10";
pyproject = true; pyproject = true;

View File

@@ -0,0 +1,2 @@
{ pkgs, ... }:
pkgs.callPackage ./package.nix { }

View File

@@ -0,0 +1,52 @@
{
lib,
python3Packages,
fetchFromGitHub,
}:
python3Packages.buildPythonApplication rec {
pname = "hipengine";
version = "0.2.2";
pyproject = true;
src = fetchFromGitHub {
owner = "shisa-ai";
repo = "hipEngine";
rev = "v${version}";
hash = "sha256-ljgXDQfUTx64i1+yAKFE13GkcE9AE+1YICfSScQ9nuA=";
};
build-system = with python3Packages; [
hatchling
];
dependencies = with python3Packages; [
fastapi
jinja2
numpy
safetensors
tokenizers
uvicorn
];
doCheck = false;
pythonImportsCheck = [ "hipengine" ];
passthru = {
category = "AI Inference";
updateScript = [
"nix-update"
"--flake"
".#hipengine"
];
};
meta = {
description = "ROCm-native local LLM inference engine with a torch-free runtime hot path for AMD RDNA GPUs";
homepage = "https://github.com/shisa-ai/hipEngine";
changelog = "https://github.com/shisa-ai/hipEngine/releases/tag/v${version}";
license = lib.licenses.agpl3Plus;
platforms = lib.platforms.linux;
mainProgram = "hipengine-server";
};
}

View File

@@ -0,0 +1,2 @@
{ pkgs, ... }:
pkgs.callPackage ./package.nix { }

56
packages/loop/package.nix Normal file
View File

@@ -0,0 +1,56 @@
{
lib,
appimageTools,
fetchurl,
}:
let
version = "6.0.3";
src = fetchurl {
url = "https://artifacts.wilix.dev/repository/loop-files/loop-${version}/loop-desktop-${version}-linux-x86_64.AppImage";
hash = "sha256-zGWKlY6XwuL0e2mDpB/1t0UnW73bhCPcg6XkBJBCEFY=";
};
appimageContents = appimageTools.extractType2 {
pname = "loop";
inherit version src;
};
in
appimageTools.wrapType2 {
pname = "loop";
inherit version src;
extraPkgs = pkgsWith: [
pkgsWith.gtk3
pkgsWith.glib
];
extraInstallCommands = ''
mkdir -p $out/share/applications
install -m 444 ${appimageContents}/loop-desktop.desktop $out/share/applications/loop.desktop
substituteInPlace $out/share/applications/loop.desktop \
--replace-fail 'Exec=AppRun %U' 'Exec=loop %U'
mkdir -p $out/share/icons/hicolor
cp -r ${appimageContents}/usr/share/icons/hicolor/* $out/share/icons/hicolor/
'';
passthru = {
category = "Communication";
updateScript = [
"nix-update"
"--flake"
".#loop"
];
};
meta = {
description = "Corporate messenger for your team";
homepage = "https://loop.ru";
license = lib.licenses.unfree;
maintainers = [ ];
platforms = [ "x86_64-linux" ];
mainProgram = "loop";
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
};
}

View File

@@ -0,0 +1,5 @@
{
pkgs,
...
}:
pkgs.callPackage ./package.nix { }

View File

@@ -0,0 +1,88 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
fetchurl,
nodejs_22,
makeBinaryWrapper,
}:
let
version = "3.8.28";
npmTarball = fetchurl {
url = "https://registry.npmjs.org/omniroute/-/omniroute-${version}.tgz";
hash = "sha256-/le4p5DSX5T7/srNuxVBLepzUPw8BgIVio+h0JnbfyY=";
};
in
buildNpmPackage (finalAttrs: {
pname = "omniroute";
inherit version;
src = fetchFromGitHub {
owner = "diegosouzapw";
repo = "OmniRoute";
rev = "v${finalAttrs.version}";
hash = "sha256-BRvpbhhLTYj2rKw+nZloaXkpu3ySs5sWZo9425xvAPs=";
};
nodejs = nodejs_22;
npmDepsHash = "sha256-Q1KLR3NkeFBB+tQzBazy+XWyIfpG8Magv+rdeqISNxw=";
# Skip Next.js build (requires network for Google Fonts).
# Pre-built dist/ is copied from the npm tarball in preConfigure.
dontNpmBuild = true;
nativeBuildInputs = [
makeBinaryWrapper
];
npmInstallFlags = [ "--ignore-scripts" ];
npmRebuildFlags = [ "--ignore-scripts" ];
env = {
HOME = "$TMPDIR";
};
preConfigure = ''
mkdir -p _npm_tmp
tar xzf ${npmTarball} -C _npm_tmp
cp -r _npm_tmp/package/dist .
rm -rf _npm_tmp
'';
installPhase = ''
runHook preInstall
mkdir -p $out/lib/node_modules/omniroute
cp -r . $out/lib/node_modules/omniroute/
mkdir -p $out/bin
makeWrapper "${nodejs_22}/bin/node" "$out/bin/omniroute" \
--add-flags "$out/lib/node_modules/omniroute/bin/omniroute.mjs"
makeWrapper "${nodejs_22}/bin/node" "$out/bin/omniroute-reset-password" \
--add-flags "$out/lib/node_modules/omniroute/bin/reset-password.mjs"
runHook postInstall
'';
passthru = {
category = "AI LLM Gateway";
updateScript = [
"nix-update"
"--flake"
".#omniroute"
];
};
meta = {
description = "Unified AI router with 160+ providers, RTK+Caveman compression, auto fallback, MCP/A2A, OpenAI-compatible APIs";
homepage = "https://github.com/diegosouzapw/OmniRoute";
changelog = "https://github.com/diegosouzapw/OmniRoute/releases/tag/v${finalAttrs.version}";
license = lib.licenses.mit;
mainProgram = "omniroute";
platforms = lib.platforms.all;
};
})

View File

@@ -1,33 +1,110 @@
{ {
lib, lib,
stdenv, buildGoModule,
fetchurl, buildNpmPackage,
fetchFromGitHub,
}: }:
let let
version = "1.5.10"; version = "1.6.1";
in
stdenv.mkDerivation rec {
pname = "radar";
inherit version;
src = fetchurl { src = fetchFromGitHub {
url = "https://github.com/skyhook-io/radar/releases/download/v${version}/radar_v${version}_linux_amd64.tar.gz"; owner = "skyhook-io";
hash = "sha256-B+u3jdnScJUzsnoPAFPEk0dYFNDPe9hhvY1OaXttj9c="; repo = "radar";
rev = "v${version}";
hash = "sha256-vctvMD7sca7HgEM1ufnUClhc04ucnvl3Zx4jTfaAzyE=";
}; };
sourceRoot = "."; # Build the frontend as a separate derivation.
# The lockfile has some workspace packages without resolved URLs,
# so we patch them in postPatch before fetching dependencies.
frontend = buildNpmPackage {
pname = "radar-frontend";
inherit version src;
sourceRoot = "source";
installPhase = '' postPatch = ''
mkdir -p $out/bin # Fix missing resolved URLs for packages under web/node_modules/
cp kubectl-radar $out/bin/radar # WARNING: This sed is version-specific if upstream bumps a
chmod +x $out/bin/radar # transitive dep version, the patterns silently fail and the
# build breaks. Update resolved/integrity values when bumping radar.
# that are actually external npm packages (not workspace links).
# Insert "resolved" and "integrity" after the "version" field
# for each affected package using sed.
sed -i \
-e '/"web\/node_modules\/@vitejs\/plugin-react"/,/^[[:space:]]*}/{
/"version"/a\
"resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.1.tgz",\
"integrity": "sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==",
}' \
-e '/"web\/node_modules\/@rolldown\/pluginutils"/,/^[[:space:]]*}/{
/"version"/a\
"resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.7.tgz",\
"integrity": "sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==",
}' \
-e '/"web\/node_modules\/@types\/diff"/,/^[[:space:]]*}/{
/"version"/a\
"resolved": "https://registry.npmjs.org/@types/diff/-/diff-8.0.0.tgz",\
"integrity": "sha512-o7jqJM04gfaYrdCecCVMbZhNdG6T1MHg/oQoRFdERLV+4d+V7FijhiEAbFu0Usww84Yijk9yH58U4Jk4HbtzZw==",
}' \
package-lock.json
''; '';
npmDepsHash = "sha256-6t0Q3Xzrk1w8zC00H721o/OzHxNhAfCH7EdRXrKQsAg=";
npmDepsFetcherVersion = 2;
makeCacheWritable = true;
doCheck = false; doCheck = false;
# Build the web workspace and install its output
buildPhase = ''
runHook preBuild
cd web
HOME=$TMPDIR ../node_modules/.bin/vite build
cd ..
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r web/dist/* $out/
runHook postInstall
'';
};
in
buildGoModule {
pname = "radar";
inherit version src;
vendorHash = "sha256-vhp0dNPKTOg2NUVD5QoLuTnCumdwzDypvh/rUEhGbL4=";
# Copy pre-built frontend assets before Go compilation for go:embed
preBuild = ''
mkdir -p internal/static/dist
cp -r ${frontend}/* internal/static/dist/
'';
env.CGO_ENABLED = 0;
ldflags = [
"-s"
"-w"
"-X main.version=v${version}"
];
subPackages = [ "cmd/explorer" ];
doCheck = false;
postInstall = ''
ln -s $out/bin/explorer $out/bin/radar
'';
passthru = { passthru = {
category = "Kubernetes"; category = "Kubernetes";
inherit frontend;
updateScript = [ updateScript = [
"nix-update" "nix-update"
"--flake" "--flake"
@@ -40,8 +117,7 @@ stdenv.mkDerivation rec {
homepage = "https://github.com/skyhook-io/radar"; homepage = "https://github.com/skyhook-io/radar";
changelog = "https://github.com/skyhook-io/radar/releases/tag/v${version}"; changelog = "https://github.com/skyhook-io/radar/releases/tag/v${version}";
license = licenses.asl20; license = licenses.asl20;
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
mainProgram = "radar"; mainProgram = "radar";
platforms = [ "x86_64-linux" ]; platforms = platforms.linux;
}; };
} }

View File

@@ -0,0 +1,5 @@
{
pkgs,
...
}:
pkgs.callPackage ./package.nix { }

View File

@@ -0,0 +1,107 @@
{
lib,
python3Packages,
fetchFromGitHub,
fetchurl,
makeWrapper,
}:
let
cerebras-cloud-sdk = python3Packages.buildPythonPackage rec {
pname = "cerebras-cloud-sdk";
version = "1.67.0";
pyproject = true;
src = fetchurl {
url = "https://files.pythonhosted.org/packages/92/12/c201f07582068141e88f9a523ab02fdc97de58f2f7c0df775c6c52b9d8dd/cerebras_cloud_sdk-1.67.0.tar.gz";
hash = "sha256-Ou1vhsbHqD7p1M+wiirOoInOvyr1uK7RFu95mVpPSBM=";
};
build-system = with python3Packages; [
hatchling
hatch-fancy-pypi-readme
];
postPatch = ''
sed -i 's/hatchling==[0-9.]*/hatchling/' pyproject.toml
'';
dependencies = with python3Packages; [
anyio
distro
httpx
pydantic
sniffio
typing-extensions
];
doCheck = false;
meta = {
description = "Python SDK for Cerebras AI platform";
homepage = "https://github.com/CerebrasAI/cerebras-cloud-sdk-python";
license = lib.licenses.asl20;
};
};
pyDeps = with python3Packages; [
fastapi
uvicorn
google-genai
cerebras-cloud-sdk
groq
mistralai
requests
python-dotenv
pydantic
httpx
];
in
python3Packages.buildPythonApplication {
pname = "relay-free-llm";
version = "0.1.0+unstable";
format = "other";
src = fetchFromGitHub {
owner = "msmarkgu";
repo = "RelayFreeLLM";
rev = "fea9e1642dbbc5c0980885f41b21aa04a30090a2";
hash = "sha256-ZLAVhJFrVFjqAz0f4qOi2REBDccIc8g2H9b7dcqcYRU=";
};
nativeBuildInputs = [ makeWrapper ];
propagatedBuildInputs = pyDeps;
installPhase = ''
runHook preInstall
mkdir -p $out/lib/relay-free-llm
cp -r src $out/lib/relay-free-llm/
runHook postInstall
'';
postInstall = ''
makeWrapper ${python3Packages.python.interpreter} $out/bin/relay-free-llm \
--add-flags "-m src.server" \
--prefix PYTHONPATH : "$out/lib/relay-free-llm:$PYTHONPATH"
'';
doCheck = false;
passthru = {
category = "AI LLM Gateway";
updateScript = [
"nix-update"
"--flake"
".#relay-free-llm"
"--version=branch=main"
];
};
meta = {
description = "RESTful API to route user prompts to various AI model providers";
homepage = "https://github.com/msmarkgu/RelayFreeLLM";
license = lib.licenses.mit;
mainProgram = "relay-free-llm";
platforms = lib.platforms.all;
};
}

View File

@@ -4,7 +4,7 @@
fetchFromGitHub, fetchFromGitHub,
}: }:
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication {
pname = "skillsmcp"; pname = "skillsmcp";
# Pinned to a commit rather than a release tag because upstream # Pinned to a commit rather than a release tag because upstream
# has not yet published a tagged release containing all features. # has not yet published a tagged release containing all features.

View File

@@ -0,0 +1,5 @@
{
pkgs,
...
}:
pkgs.callPackage ./package.nix { }

View File

@@ -0,0 +1,41 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
openssl,
}:
rustPlatform.buildRustPackage rec {
pname = "stakpak";
version = "0.3.86";
src = fetchFromGitHub {
owner = "stakpak";
repo = "agent";
rev = "v${version}";
hash = "sha256-k8fOgwn1Sh3Yg62ROzfKJym8AGewpZ3/2e3tHNRL7/0=";
};
cargoHash = "sha256-aa1YjyShoSNv9sC18gIx/kuAbxrNAsCE+2if8Rm2uiw=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [
openssl
];
doCheck = false;
passthru.category = "AI Agents";
meta = with lib; {
description = "DevOps AI agent that generates infrastructure code, debugs Kubernetes, configures CI/CD, and automates deployments";
homepage = "https://stakpak.io";
changelog = "https://github.com/stakpak/agent/releases/tag/v${version}";
license = licenses.asl20;
sourceProvenance = with sourceTypes; [ fromSource ];
mainProgram = "stakpak";
platforms = platforms.all;
};
}