about summary refs log tree commit diff
path: root/pkgs/applications/video/mirakurun/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/video/mirakurun/default.nix')
-rw-r--r--pkgs/applications/video/mirakurun/default.nix98
1 files changed, 38 insertions, 60 deletions
diff --git a/pkgs/applications/video/mirakurun/default.nix b/pkgs/applications/video/mirakurun/default.nix
index bc36039224758..3d8034521c89a 100644
--- a/pkgs/applications/video/mirakurun/default.nix
+++ b/pkgs/applications/video/mirakurun/default.nix
@@ -1,96 +1,74 @@
-# NOTE: Mirakurun is packaged outside of nodePackages because Node2nix can't
-# handle one of its subdependencies. See below link for details.
-#
-# https://github.com/Chinachu/node-aribts/blob/af84dbbbd81ea80b946e538083b64b5b2dc7e8f2/package.json#L26
-
 { lib
-, stdenvNoCC
+, stdenv
 , bash
+, buildNpmPackage
 , fetchFromGitHub
-, gitUpdater
-, jq
+, installShellFiles
 , makeWrapper
-, mkYarnPackage
-, which
-, writers
+, nodejs
+, substituteAll
 , v4l-utils
-, yarn
-, yarn2nix
+, which
 }:
 
-stdenvNoCC.mkDerivation rec {
+buildNpmPackage rec {
   pname = "mirakurun";
-  version = "3.8.0";
+  version = "3.9.0-rc.4";
 
   src = fetchFromGitHub {
     owner = "Chinachu";
     repo = "Mirakurun";
     rev = version;
-    sha256 = "1fmzi3jc3havvpc1kz5z16k52lnrsmc3b5yqyxc7i911gqyjsxzr";
+    sha256 = "sha256-Qg+wET5H9t3Mv2Hv0iT/C85/SEaQ+BHSBL3JjMQW5+Q=";
   };
 
-  nativeBuildInputs = [ makeWrapper ];
+  patches = [
+    # NOTE: fixes for hardcoded paths and assumptions about filesystem
+    # permissions
+    ./nix-filesystem.patch
+  ];
 
-  mirakurun = mkYarnPackage rec {
-    name = "${pname}-${version}";
-    inherit version src;
+  npmDepsHash = "sha256-e7m7xb7p1SBzLAyQ82TTR/qLXv4lRm37x0JJPWYYGvI=";
 
-    yarnNix = ./yarn.nix;
-    yarnLock = ./yarn.lock;
-    packageJSON = ./package.json;
+  nativeBuildInputs = [ installShellFiles makeWrapper ];
 
-    # workaround for https://github.com/webpack/webpack/issues/14532
-    NODE_OPTIONS = "--openssl-legacy-provider";
-
-    patches = [
-      # NOTE: fixes for hardcoded paths and assumptions about filesystem
-      # permissions
-      ./nix-filesystem.patch
-    ];
-
-    buildPhase = ''
-      yarn --offline build
-    '';
+  # workaround for https://github.com/webpack/webpack/issues/14532
+  NODE_OPTIONS = "--openssl-legacy-provider";
 
-    distPhase = "true";
-  };
-
-  installPhase =
+  postInstall =
     let
-      runtimeDeps = [ bash which v4l-utils ];
+      runtimeDeps = [
+        bash
+        nodejs
+        which
+      ] ++ lib.optionals stdenv.isLinux [ v4l-utils ];
+      crc32Patch = substituteAll {
+        src = ./fix-musl-detection.patch;
+        isMusl = if stdenv.hostPlatform.isMusl then "true" else "false";
+      };
     in
     ''
-      mkdir -p $out/bin
+      sed 's/@DESCRIPTION@/${meta.description}/g' ${./mirakurun.1} > mirakurun.1
+      installManPage mirakurun.1
 
-      makeWrapper ${mirakurun}/bin/mirakurun-epgdump $out/bin/mirakurun-epgdump \
-        --chdir "${mirakurun}/libexec/mirakurun/node_modules/mirakurun" \
+      wrapProgram $out/bin/mirakurun-epgdump \
         --prefix PATH : ${lib.makeBinPath runtimeDeps}
 
       # XXX: The original mirakurun command uses PM2 to manage the Mirakurun
       # server.  However, we invoke the server directly and let systemd
       # manage it to avoid complication. This is okay since no features
       # unique to PM2 is currently being used.
-      makeWrapper ${yarn}/bin/yarn $out/bin/mirakurun-start \
-        --add-flags "start" \
-        --chdir "${mirakurun}/libexec/mirakurun/node_modules/mirakurun" \
+      makeWrapper ${nodejs}/bin/npm $out/bin/mirakurun \
+        --chdir "$out/lib/node_modules/mirakurun" \
         --prefix PATH : ${lib.makeBinPath runtimeDeps}
-    '';
 
-  passthru.updateScript = import ./update.nix {
-    inherit lib;
-    inherit (src.meta) homepage;
-    inherit
-      pname
-      version
-      gitUpdater
-      writers
-      jq
-      yarn
-      yarn2nix;
-  };
+      pushd $out/lib/node_modules/mirakurun/node_modules/@node-rs/crc32
+      patch -p3 < ${crc32Patch}
+      popd
+    '';
 
   meta = with lib; {
-    inherit (mirakurun.meta) description platforms;
+    description = "Resource manager for TV tuners.";
     license = licenses.asl20;
     maintainers = with maintainers; [ midchildan ];
   };