{ nixConfig = { extra-substituters = [ "https://nix-community.cachix.org" ]; extra-trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ]; }; description = "MCP Server Packages for Nix"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # Newer nixpkgs for yarr: the pinned nixpkgs has rustc 1.95 but yarr # needs 1.97.1. Bumping the main nixpkgs input breaks aioimaplib # (email server dep), so use a separate input just for yarr's rust. rust-nixpkgs.url = "github:NixOS/nixpkgs/0e251e24a4f24e036a084b6b4b2d2491af4167f4"; }; outputs = { self, nixpkgs, rust-nixpkgs, ... }: let supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; forAllSystems = nixpkgs.lib.genAttrs supportedSystems; in { overlays.default = import ./overlays/default.nix; } // { packages = forAllSystems ( system: let pkgs = import nixpkgs { inherit system; overlays = [ self.overlays.default ]; }; # yarr needs rustc 1.97.1; the main nixpkgs input only has 1.95. # Build its rust toolchain from the newer rust-nixpkgs input. rustPkgs = import rust-nixpkgs { inherit system; }; mcpPackages = import ./packages { inherit pkgs rustPkgs; }; in mcpPackages // { default = pkgs.symlinkJoin { name = "mcp-servers"; paths = builtins.attrValues mcpPackages; }; } ); devShells = forAllSystems ( system: let pkgs = import nixpkgs { inherit system; overlays = [ self.overlays.default ]; }; rustPkgs = import rust-nixpkgs { inherit system; }; mcpPackages = import ./packages { inherit pkgs rustPkgs; }; in { default = pkgs.mkShell { packages = builtins.attrValues mcpPackages ++ [ pkgs.mcp-nixos pkgs.git ]; shellHook = '' export SEARXNG_BASE_URL="https://search.bueso.eu" ''; }; } ); checks.x86_64-linux = builtins.removeAttrs self.packages.x86_64-linux [ "default" ]; }; }