nixpkgs/pkgs/by-name/rq/rqbit/package.nix
2024-10-30 11:16:43 +02:00

83 lines
1.7 KiB
Nix

{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
pkg-config,
openssl,
darwin,
buildNpmPackage,
nodejs_20,
}:
let
pname = "rqbit";
version = "7.0.1";
src = fetchFromGitHub {
owner = "ikatson";
repo = "rqbit";
rev = "v${version}";
hash = "sha256-Lt3HxK8fB1Xn2422wGkJ90muJjZ7r9ZHngGD/2tkaMM=";
};
rqbit-webui = buildNpmPackage {
pname = "rqbit-webui";
nodejs = nodejs_20;
inherit version src;
sourceRoot = "${src.name}/crates/librqbit/webui";
npmDepsHash = "sha256-VYPZXZx9rKLKZm5+d2wSVkoPLCQCffaeZVSi7mKRH/M=";
installPhase = ''
runHook preInstall
mkdir -p $out/dist
cp -r dist/** $out/dist
runHook postInstall
'';
};
in
rustPlatform.buildRustPackage {
inherit pname version src;
cargoHash = "sha256-esDUzzVm5J8fKftBfk5StJzN1YzLa1p0t7BsoxzrowI=";
nativeBuildInputs = lib.optionals stdenv.isLinux [
pkg-config
];
buildInputs =
lib.optionals stdenv.isLinux [ openssl ]
++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.SystemConfiguration ];
preConfigure = ''
mkdir -p crates/librqbit/webui/dist
cp -R ${rqbit-webui}/dist/** crates/librqbit/webui/dist
'';
postPatch = ''
# This script fascilitates the build of the webui,
# we've already built that
rm crates/librqbit/build.rs
'';
doCheck = false;
meta = with lib; {
description = "Bittorrent client in Rust";
homepage = "https://github.com/ikatson/rqbit";
changelog = "https://github.com/ikatson/rqbit/releases/tag/v${version}";
license = licenses.asl20;
maintainers = with maintainers; [
cafkafk
toasteruwu
];
mainProgram = "rqbit";
};
}