{inputs, ...}: { # This one brings our custom packages from the 'pkgs' directory additions = final: prev: (import ../pkgs { pkgs = final; atrocore-docker = inputs.atrocore-docker; }) // { zugferd-service = inputs.zugferd-service.packages.${prev.stdenv.hostPlatform.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;}; snipe-it = import ./mods/snipe-it.nix {inherit prev;}; vivaldi = prev.vivaldi.override { commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland"; }; # example = prev.example.overrideAttrs (oldAttrs: rec { # ... # }); }; stable-packages = final: _prev: { stable = import inputs.nixpkgs { system = final.stdenv.hostPlatform.system; config.allowUnfree = true; }; }; unstable-packages = final: _prev: { unstable = import inputs.nixpkgs-unstable { system = final.stdenv.hostPlatform.system; config.allowUnfree = true; }; }; # Flatten llm-agents packages into top-level pkgs namespace. # Keep plain derivations only. llm-agents exports `buildNpmPackage` as an # emptyDirectory derivation ("buildNpmPackage-guard") carrying a __functor # that forwards to its OWN nixpkgs pin's builder. Flattening it would shadow # nixpkgs' pkgs.buildNpmPackage and break unrelated packages — e.g. # vaultwarden-webvault (npmDepsFetcherVersion = 3) failed with # "fetchNpmDeps: fetcher version must be one of: 1, 2." because llm-agents' # pinned fetchNpmDeps only allows 1 and 2. Real packages never have a # __functor, so this filter drops such traps generically. mkLlmAgentsOverlay = system: _final: _prev: inputs.nixpkgs.lib.filterAttrs ( _: v: inputs.nixpkgs.lib.isDerivation v && !v ? __functor ) (inputs.llm-agents.packages.${system} or {}); }