# nix/packages.nix — Hermes Agent package built with uv2nix { inputs, ... }: { perSystem = { pkgs, lib, inputs', ... }: let minimal = pkgs.callPackage ./hermes-agent.nix { inherit (inputs) uv2nix pyproject-nix pyproject-build-systems; npm-lockfile-fix = inputs'.npm-lockfile-fix.packages.default; # Only embed clean revs — dirtyRev doesn't represent any upstream # commit, so comparing it would always claim "update available". rev = inputs.self.rev or null; }; # All platform-portable optional integrations pre-built. full = minimal.override { extraDependencyGroups = [ "anthropic" "azure-identity" "bedrock" "daytona" "dingtalk" "edge-tts" "exa" "fal" "feishu" "firecrawl" "hindsight" "honcho" "messaging" "modal" "parallel-web" "tts-premium" "voice" ] # matrix is Linux-only (oqs/liboqs lacks aarch64-darwin wheels). ++ lib.optionals pkgs.stdenv.isLinux [ "matrix" ]; }; in { packages = { default = full; inherit minimal; # Ships discord.py + python-telegram-bot + slack-sdk so a plain # `nix profile install .#messaging` connects to Discord/Telegram/Slack # on first run — lazy-install can't write to the read-only /nix/store. messaging = minimal.override { extraDependencyGroups = [ "messaging" ]; }; tui = full.hermesTui; web = full.hermesWeb; desktop = full.hermesDesktop; }; }; }