diff --git a/flake.nix b/flake.nix index cb8c56f..aff871e 100644 --- a/flake.nix +++ b/flake.nix @@ -23,8 +23,9 @@ nixpkgs-master.url = "github:nixos/nixpkgs/master"; m3ta-nixpkgs = { - url = "git+ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs"; - # url = "path:/home/m3tam3re/p/NIX/nixpkgs"; + # url = "git+ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs"; + inputs.nixpkgs.follows = "nixpkgs"; + url = "path:/home/m3tam3re/p/NIX/nixpkgs"; }; llm-agents.url = "github:numtide/llm-agents.nix"; @@ -76,8 +77,7 @@ in { packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system}); - overlays = removeAttrs allOverlays ["mkLlmAgentsOverlay"]; - lib.mkLlmAgentsOverlay = allOverlays.mkLlmAgentsOverlay; + overlays = allOverlays; homeManagerModules = import ./modules/home-manager; nixosConfigurations = { diff --git a/hosts/common/default.nix b/hosts/common/default.nix index d7c6e64..343ad97 100644 --- a/hosts/common/default.nix +++ b/hosts/common/default.nix @@ -40,7 +40,11 @@ inputs.m3ta-nixpkgs.overlays.default # inputs.m3ta-nixpkgs.overlays.modifications - (outputs.lib.mkLlmAgentsOverlay system) + # llm-agent packages under the `pkgs.llm-agents.*` namespace, built + # against this system's nixpkgs (needed for qmd.override cudaSupport + # with allowUnfree). Do NOT flatten to top-level attrs — see + # overlays/default.nix. + inputs.llm-agents.overlays.shared-nixpkgs # You can also add overlays exported from other flakes: # neovim-nightly-overlay.overlays.default diff --git a/hosts/m3-hermes/services/hermes-agent.nix b/hosts/m3-hermes/services/hermes-agent.nix index 4d90f3e..32403d3 100644 --- a/hosts/m3-hermes/services/hermes-agent.nix +++ b/hosts/m3-hermes/services/hermes-agent.nix @@ -73,8 +73,8 @@ in { extraPackages = with pkgs; [ basecamp docker - herdr - opencode + llm-agents.herdr + llm-agents.opencode pi-coding-agent bun git @@ -83,7 +83,7 @@ in { tea nix python3Minimal - qmd + llm-agents.qmd uv zellij ]; diff --git a/overlays/default.nix b/overlays/default.nix index 61a3f44..f98d68e 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -48,56 +48,10 @@ }; }; - # Factory: not a proper overlay itself — takes system to avoid the infinite - # recursion that occurs when accessing final/prev.system while the fixed-point - # is still being computed. Exposed via outputs.lib, not outputs.overlays. - # - # 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: 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" - "buildNpmPackage" # ← the culprit; breaks webcord's `buildNpmPackage.override { nodejs = ...; }` - "bun2nix" - "darwinOpenptyHook" - "default" # fzf launcher; collides with nothing in nixpkgs but kept out for hygiene - "dolt" # collides with nixpkgs.dolt (Dolt database); not used in this config - "flake-inputs" - "forge" - "formatelf" - "formatter" # collides conceptually with pkgs.formatter; not used here - "go-bin" - "unpinCargoMsrvHook" - "unpinGoModVersionHook" - "versionCheckHomeHook" - "wrapBuddy" - ]; + # llm-agent packages (qmd, herdr, beads, …) come from + # inputs.llm-agents.overlays.shared-nixpkgs, applied directly in + # hosts/common/default.nix. They are consumed via the `pkgs.llm-agents.*` + # namespace — no flattening to top-level attributes (that clobbered + # nixpkgs attrs like buildNpmPackage/fetchPnpmDeps and needed a + # hard-to-maintain blocklist). }