diff --git a/overlays/default.nix b/overlays/default.nix index aee2358..7a8abc1 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -7,7 +7,7 @@ # This one contains whatever you want to overlay # You can change versions, add patches, set compilation flags, anything really. # https://nixos.wiki/wiki/Overlays - modifications = final: prev: { + modifications = _final: _prev: { # n8n = import ./mods/n8n.nix {inherit prev;}; # brave = prev.brave.override { @@ -64,15 +64,36 @@ # recursion that occurs when accessing final/prev.system while the fixed-point # is still being computed. Exposed via outputs.lib, not outputs.overlays. # - # Filters out the 16 internal helpers (marked `passthru.hideFromDocs = true` + # Use llm-agents' shared-nixpkgs overlay so packages with optional GPU support + # (notably qmd) are built against this system's pkgs/config. Using the flake's + # pre-built `packages.${system}` set pins them to llm-agents' own nixpkgs, + # where allowUnfree is false; qmd.override { cudaSupport = true; } then fails + # on CUDA EULA packages during the m3-ares NVIDIA specialisation build. + # + # Keep the exposed top-level package names aligned with llm-agents' filtered + # flake packages, but take the package values from the shared package set. + # Filters out internal helpers (marked `passthru.hideFromDocs = true` # upstream) that would otherwise clobber nixpkgs attributes. Most critically # this excludes `buildNpmPackage` — llm-agents' buildNpmPackage is a guarded # re-export whose `__functor`/`override` interaction with makeOverridable # breaks any package (e.g. nixpkgs' webcord) that calls # `buildNpmPackage.override { nodejs = ...; }`. See numtide/llm-agents.nix # commit 40490259 and the wrapper at packages/buildNpmPackage/package.nix. - mkLlmAgentsOverlay = system: _final: _prev: - builtins.removeAttrs (inputs.llm-agents.packages.${system} or {}) [ + mkLlmAgentsOverlay = system: final: prev: let + sharedPackages = (inputs.llm-agents.overlays.shared-nixpkgs final prev).llm-agents or {}; + exposedPackageNames = + builtins.filter + (name: inputs.nixpkgs.lib.hasAttrByPath [name] sharedPackages) + (builtins.attrNames (inputs.llm-agents.packages.${system} or {})); + exposedPackages = + builtins.listToAttrs + (map (name: { + inherit name; + value = sharedPackages.${name}; + }) + exposedPackageNames); + in + builtins.removeAttrs exposedPackages [ # Internal helpers from packages/* marked hideFromDocs upstream: "antigravity" "auto-claude"