{ description = "Jellyswarrm - Bring all your Jellyfin servers together"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, flake-utils, rust-overlay }: flake-utils.lib.eachDefaultSystem (system: let overlays = [ (import rust-overlay) ]; pkgs = import nixpkgs { inherit system overlays; }; # Import jellyfin-web from nixpkgs instead of building ui jellyfinWeb = pkgs.jellyfin-web; rustToolchain = pkgs.rust-bin.stable.latest.default.override { extensions = [ "rust-src" ]; }; jellyswarrm = pkgs.rustPlatform.buildRustPackage rec{ pname = "jellyswarrm"; version = "0.2.0"; src = pkgs.fetchFromGitHub { owner = "LLukas22"; repo = "Jellyswarrm"; rev = "v${version}"; # Hash must be updated upon new release of Jellyswarrm sha256 = "sha256-UvHZ5u9mSzMc7OxJF+diQmaxmXt+wXsVA6bI23TW8vw="; }; # Hash must be updated upon new release of Jellyswarrm cargoHash = "sha256-aWMW/mACrdCQWCi+9+2jQXYYEE1e84xlFWexr+SzM2o="; buildInputs = with pkgs; [ jellyfin-web ]; env = { # Skip internal UI build since we are using the nix package for jellyfin-web JELLYSWARRM_SKIP_UI = "1"; }; preBuild = '' # Move the contents of pre-built jellyfin-web to the cargo mkdir -p crates/jellyswarrm-proxy/static cp -r ${jellyfinWeb}/share/jellyfin-web/* crates/jellyswarrm-proxy/static/ # ui-version.env is required for the cargo build cat > crates/jellyswarrm-proxy/static/ui-version.env <