diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/prowlarr')
-rw-r--r-- | nixpkgs/pkgs/servers/prowlarr/default.nix | 74 | ||||
-rwxr-xr-x | nixpkgs/pkgs/servers/prowlarr/update.sh | 45 |
2 files changed, 119 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/prowlarr/default.nix b/nixpkgs/pkgs/servers/prowlarr/default.nix new file mode 100644 index 000000000000..8bb1f29de42d --- /dev/null +++ b/nixpkgs/pkgs/servers/prowlarr/default.nix @@ -0,0 +1,74 @@ +{ lib, stdenv, fetchurl, mono, libmediainfo, sqlite, curl, makeWrapper, icu, dotnet-runtime, openssl, nixosTests, zlib }: + +let + pname = "prowlarr"; + + unsupported = throw "Unsupported system ${stdenv.hostPlatform.system} for ${pname}"; + + os = + if stdenv.isDarwin then + "osx" + else if stdenv.isLinux then + "linux" + else + unsupported; + + arch = { + aarch64-darwin = "arm64"; + aarch64-linux = "arm64"; + x86_64-darwin = "x64"; + x86_64-linux = "x64"; + }.${stdenv.hostPlatform.system} or unsupported; + + hash = { + aarch64-darwin = "sha256-mHXoX526X0PYNViHgAdCPTRX6cqzlCyYLybdY1LRS8c="; + aarch64-linux = "sha256-wgHASkz6RMtKzBehnbqXsNbF057eK0i6xpOmuefMVx8="; + x86_64-darwin = "sha256-3EkGKDDsuUdbTvBILBClwPVvXN5JzTWGHBaG2lmHQ7s="; + x86_64-linux = "sha256-l24/thKqDCJQbeirSYiL5sqH8LRs7k3rk0qY6DZQvD8="; + }.${stdenv.hostPlatform.system} or unsupported; + +in stdenv.mkDerivation rec { + inherit pname; + version = "1.14.3.4333"; + + src = fetchurl { + url = "https://github.com/Prowlarr/Prowlarr/releases/download/v${version}/Prowlarr.master.${version}.${os}-core-${arch}.tar.gz"; + inherit hash; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/{bin,share/${pname}-${version}} + cp -r * $out/share/${pname}-${version}/. + + makeWrapper "${dotnet-runtime}/bin/dotnet" $out/bin/Prowlarr \ + --add-flags "$out/share/${pname}-${version}/Prowlarr.dll" \ + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ + curl sqlite libmediainfo mono openssl icu zlib ]} + + runHook postInstall + ''; + + passthru = { + updateScript = ./update.sh; + tests.smoke-test = nixosTests.prowlarr; + }; + + meta = with lib; { + description = "An indexer manager/proxy built on the popular arr .net/reactjs base stack"; + homepage = "https://wiki.servarr.com/prowlarr"; + changelog = "https://github.com/Prowlarr/Prowlarr/releases/tag/v${version}"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ jdreaver ]; + mainProgram = "Prowlarr"; + platforms = [ + "aarch64-darwin" + "aarch64-linux" + "x86_64-darwin" + "x86_64-linux" + ]; + }; +} diff --git a/nixpkgs/pkgs/servers/prowlarr/update.sh b/nixpkgs/pkgs/servers/prowlarr/update.sh new file mode 100755 index 000000000000..883f299d9aa0 --- /dev/null +++ b/nixpkgs/pkgs/servers/prowlarr/update.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl gnused nix-prefetch jq + +set -eou pipefail + +dirname="$(dirname "$0")" + +updateHash() +{ + # nixos + version=$1 + system=$2 + + # prowlarr + arch=$3 + os=$4 + + url="https://github.com/Prowlarr/Prowlarr/releases/download/v$version/Prowlarr.master.$version.$os-core-$arch.tar.gz" + hash=$(nix-prefetch-url --type sha256 $url) + sriHash="$(nix hash to-sri --type sha256 $hash)" + + sed -i "s|$system = \"sha256-[a-zA-Z0-9\/+-=]*\";|$system = \"$sriHash\";|g" "$dirname/default.nix" +} + +updateVersion() +{ + sed -i "s/version = \"[0-9.]*\";/version = \"$1\";/g" "$dirname/default.nix" +} + +currentVersion=$(cd $dirname && nix eval --raw -f ../../.. prowlarr.version) + +latestTag=$(curl https://api.github.com/repos/Prowlarr/Prowlarr/releases/latest | jq -r ".tag_name") +latestVersion="$(expr $latestTag : 'v\(.*\)')" + +if [[ "$currentVersion" == "$latestVersion" ]]; then + echo "Prowlarr is up-to-date: ${currentVersion}" + exit 0 +fi + +updateVersion $latestVersion + +updateHash $latestVersion aarch64-darwin arm64 osx +updateHash $latestVersion aarch64-linux arm64 linux +updateHash $latestVersion x86_64-darwin x64 osx +updateHash $latestVersion x86_64-linux x64 linux |