{inputs, ...}: { # This one brings our custom packages from the 'pkgs' directory # additions = final: prev: # (import ../pkgs {pkgs = final;}) # // {rose-pine-hyprcursor = inputs.rose-pine-hyprcursor.packages.${prev.system}.default;}; # 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: { # n8n = import ./mods/n8n.nix {inherit prev;}; # brave = prev.brave.override { # commandLineArgs = "--password-store=gnome-libsecret"; # }; # hyprpanel = inputs.hyprpanel.packages.${prev.system}.default.overrideAttrs (prev: { # version = "latest"; # or whatever version you want # src = final.fetchFromGitHub { # owner = "Jas-SinghFSU"; # repo = "HyprPanel"; # rev = "master"; # or a specific commit hash # hash = "sha256-l623fIVhVCU/ylbBmohAtQNbK0YrWlEny0sC/vBJ+dU="; # }; # }); }; # temp-packages = final: _prev: { # temp = import inputs.nixpkgs-9e9486b { # system = final.stdenv.hostPlatform.system; # config.allowUnfree = true; # }; # }; stable-packages = final: _prev: { stable = import inputs.nixpkgs-stable { system = final.stdenv.hostPlatform.system; config.allowUnfree = true; }; }; # pinned-packages = final: _prev: { # pinned = import inputs.nixpkgs-9472de4 { # system = final.stdenv.hostPlatform.system; # config.allowUnfree = true; # }; # }; # locked-packages = final: _prev: { # locked = import inputs.nixpkgs-locked { # system = final.stdenv.hostPlatform.system; # config.allowUnfree = true; # }; # }; master-packages = final: _prev: { master = import inputs.nixpkgs-master { system = final.stdenv.hostPlatform.system; config.allowUnfree = true; }; }; # 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" ]; }