Merge pull request 'Add yarr: Rust MCP server for media automation fleets' (#12) from feat/yarr into main
NixOS Configuration CI / Nix Flake Check (push) Successful in 13s
NixOS Configuration CI / Nix Flake Check (push) Successful in 13s
This commit was merged in pull request #12.
This commit is contained in:
commit
e9c4ae7273
5 files changed
+66
-6
No files matched your search
Generated
+18
-1
@@ -18,7 +18,24 @@
|
|||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs",
|
||||||
|
"rust-nixpkgs": "rust-nixpkgs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1786599213,
|
||||||
|
"narHash": "sha256-yNJd40f11EzXBjSByCB7IPpeFFAdeoSKKM67dGkfFoU=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0e251e24a4f24e036a084b6b4b2d2491af4167f4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0e251e24a4f24e036a084b6b4b2d2491af4167f4",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -12,10 +12,14 @@
|
|||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
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 =
|
outputs =
|
||||||
{ self, nixpkgs, ... }:
|
{ self, nixpkgs, rust-nixpkgs, ... }:
|
||||||
let
|
let
|
||||||
supportedSystems = [
|
supportedSystems = [
|
||||||
"x86_64-linux"
|
"x86_64-linux"
|
||||||
@@ -36,7 +40,10 @@
|
|||||||
inherit system;
|
inherit system;
|
||||||
overlays = [ self.overlays.default ];
|
overlays = [ self.overlays.default ];
|
||||||
};
|
};
|
||||||
mcpPackages = import ./packages { inherit pkgs; };
|
# 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
|
in
|
||||||
mcpPackages // {
|
mcpPackages // {
|
||||||
default = pkgs.symlinkJoin {
|
default = pkgs.symlinkJoin {
|
||||||
@@ -53,7 +60,8 @@
|
|||||||
inherit system;
|
inherit system;
|
||||||
overlays = [ self.overlays.default ];
|
overlays = [ self.overlays.default ];
|
||||||
};
|
};
|
||||||
mcpPackages = import ./packages { inherit pkgs; };
|
rustPkgs = import rust-nixpkgs { inherit system; };
|
||||||
|
mcpPackages = import ./packages { inherit pkgs rustPkgs; };
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
default = pkgs.mkShell {
|
default = pkgs.mkShell {
|
||||||
|
|||||||
@@ -16,8 +16,11 @@
|
|||||||
# };
|
# };
|
||||||
# }
|
# }
|
||||||
#
|
#
|
||||||
|
# Note: yarr is excluded from the overlay because it needs rustc 1.97.1
|
||||||
|
# from a specific nixpkgs input. Build it via nix build .#yarr on the
|
||||||
|
# flake directly.
|
||||||
final: prev:
|
final: prev:
|
||||||
let
|
let
|
||||||
mcpPackages = import ../packages { pkgs = final; };
|
mcpPackages = import ../packages { pkgs = final; };
|
||||||
in
|
in
|
||||||
mcpPackages
|
builtins.removeAttrs mcpPackages [ "yarr" ]
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
{ pkgs }:
|
{ pkgs, rustPkgs ? pkgs }:
|
||||||
|
|
||||||
{
|
{
|
||||||
manim-mcp-server = pkgs.callPackage ./manim-mcp-server/package.nix { };
|
manim-mcp-server = pkgs.callPackage ./manim-mcp-server/package.nix { };
|
||||||
@@ -28,5 +28,6 @@
|
|||||||
navidrome-mcp = pkgs.callPackage ./navidrome-mcp/package.nix { };
|
navidrome-mcp = pkgs.callPackage ./navidrome-mcp/package.nix { };
|
||||||
ovhcloud-mcp = pkgs.callPackage ./ovhcloud-mcp/package.nix { };
|
ovhcloud-mcp = pkgs.callPackage ./ovhcloud-mcp/package.nix { };
|
||||||
slskd-mcp = pkgs.callPackage ./slskd-mcp/package.nix { };
|
slskd-mcp = pkgs.callPackage ./slskd-mcp/package.nix { };
|
||||||
|
yarr = rustPkgs.callPackage ./yarr/package.nix { };
|
||||||
# example-mcp-server = pkgs.callPackage ./example-mcp-server/package.nix { };
|
# example-mcp-server = pkgs.callPackage ./example-mcp-server/package.nix { };
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
rustPlatform,
|
||||||
|
fetchFromGitHub,
|
||||||
|
}:
|
||||||
|
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "yarr";
|
||||||
|
version = "2.2.2";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "dinglebear-ai";
|
||||||
|
repo = "yarr";
|
||||||
|
rev = "15a599bab38a";
|
||||||
|
hash = "sha256-PlD2NYK06rVdKirUq2dw04WL9yFrM2TB1d67Weero0k=";
|
||||||
|
};
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in new issue
Block a user