about summary refs log tree commit diff
path: root/pkgs/by-name/rq/rqbit/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/rq/rqbit/package.nix')
-rw-r--r--pkgs/by-name/rq/rqbit/package.nix72
1 files changed, 59 insertions, 13 deletions
diff --git a/pkgs/by-name/rq/rqbit/package.nix b/pkgs/by-name/rq/rqbit/package.nix
index d02fe269203b..9be8715f9cb1 100644
--- a/pkgs/by-name/rq/rqbit/package.nix
+++ b/pkgs/by-name/rq/rqbit/package.nix
@@ -1,28 +1,71 @@
-{ lib, stdenv, rustPlatform, fetchFromGitHub, pkg-config, openssl, darwin }:
-
-rustPlatform.buildRustPackage rec {
+{
+  lib,
+  stdenv,
+  rustPlatform,
+  fetchFromGitHub,
+  pkg-config,
+  openssl,
+  darwin,
+  buildNpmPackage,
+  nodejs_20,
+}:
+let
   pname = "rqbit";
-  version = "6.0.0";
+
+  version = "7.0.1";
 
   src = fetchFromGitHub {
     owner = "ikatson";
     repo = "rqbit";
     rev = "v${version}";
-    hash = "sha256-YOjFCX1Ckk0M2QOGoYKoY80TFnHs00aVJJAWv2RIp4A=";
+    hash = "sha256-Lt3HxK8fB1Xn2422wGkJ90muJjZ7r9ZHngGD/2tkaMM=";
   };
 
-  cargoLock = {
-    lockFile = ./Cargo.lock;
-    outputHashes = {
-      "network-interface-1.1.1" = "sha256-9fWdR5nr73oFP9FzHhDsbA4ifQf3LkzBygspxI9/ufs=";
-    };
+  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;
 
-  nativeBuildInputs = lib.optionals stdenv.isLinux [ pkg-config ];
+  cargoHash = "sha256-esDUzzVm5J8fKftBfk5StJzN1YzLa1p0t7BsoxzrowI=";
 
-  buildInputs = lib.optionals stdenv.isLinux [ openssl ]
+  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; {
@@ -30,7 +73,10 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/ikatson/rqbit";
     changelog = "https://github.com/ikatson/rqbit/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ cafkafk toasteruwu ];
+    maintainers = with maintainers; [
+      cafkafk
+      toasteruwu
+    ];
     mainProgram = "rqbit";
   };
 }