diff --git a/flake.nix b/flake.nix index a3e63e1..d1a3b1d 100644 --- a/flake.nix +++ b/flake.nix @@ -12,14 +12,10 @@ 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, ... }: + { self, nixpkgs, ... }: let supportedSystems = [ "x86_64-linux" @@ -40,10 +36,7 @@ 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; }; + mcpPackages = import ./packages { inherit pkgs; }; in mcpPackages // { default = pkgs.symlinkJoin { @@ -60,8 +53,7 @@ inherit system; overlays = [ self.overlays.default ]; }; - rustPkgs = import rust-nixpkgs { inherit system; }; - mcpPackages = import ./packages { inherit pkgs rustPkgs; }; + mcpPackages = import ./packages { inherit pkgs; }; in { default = pkgs.mkShell { diff --git a/packages/default.nix b/packages/default.nix index 1fff09f..81325d5 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -1,4 +1,4 @@ -{ pkgs, rustPkgs ? pkgs }: +{ pkgs }: { manim-mcp-server = pkgs.callPackage ./manim-mcp-server/package.nix { }; @@ -28,6 +28,6 @@ navidrome-mcp = pkgs.callPackage ./navidrome-mcp/package.nix { }; ovhcloud-mcp = pkgs.callPackage ./ovhcloud-mcp/package.nix { }; slskd-mcp = pkgs.callPackage ./slskd-mcp/package.nix { }; - yarr = rustPkgs.callPackage ./yarr/package.nix { }; + yarr = pkgs.callPackage ./yarr/package.nix { }; # example-mcp-server = pkgs.callPackage ./example-mcp-server/package.nix { }; } \ No newline at end of file diff --git a/packages/yarr/package.nix b/packages/yarr/package.nix index f29f417..7377342 100644 --- a/packages/yarr/package.nix +++ b/packages/yarr/package.nix @@ -1,31 +1,29 @@ { lib, - rustPlatform, - fetchFromGitHub, + stdenv, + fetchzip, }: -rustPlatform.buildRustPackage rec { +stdenv.mkDerivation rec { pname = "yarr"; version = "2.2.2"; - src = fetchFromGitHub { - owner = "dinglebear-ai"; - repo = "yarr"; - rev = "15a599bab38a"; - hash = "sha256-PlD2NYK06rVdKirUq2dw04WL9yFrM2TB1d67Weero0k="; + src = fetchzip { + url = "https://github.com/dinglebear-ai/yarr/releases/download/v${version}/yarr-x86_64.tar.gz"; + hash = "sha256-2L1slCN/zigS4eMIXK7vexAyLNQZs8Q4BMdA7GHIIiM="; }; - cargoHash = "sha256-e89uYPLqwhh1epedUvVEDTT4y35nuwLWlco4AVvKoK4="; - - # The cargo test phase hangs (0% CPU, no rustc procs) — likely a test - # blocking on network. Skip tests; we only need the binary. - doCheck = false; + installPhase = '' + mkdir -p $out/bin + cp yarr $out/bin/ + chmod +x $out/bin/yarr + ''; meta = with lib; { description = "Rust MCP server for media automation fleets - Sonarr, Radarr, Prowlarr, Jellyfin, SABnzbd, qBittorrent, Plex"; homepage = "https://github.com/dinglebear-ai/yarr"; license = licenses.agpl3Only; mainProgram = "yarr"; - platforms = platforms.all; + platforms = [ "x86_64-linux" ]; }; } \ No newline at end of file