96 lines
2.3 KiB
Nix
96 lines
2.3 KiB
Nix
|
# 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
|
||
|
, bash
|
||
|
, common-updater-scripts
|
||
|
, fetchFromGitHub
|
||
|
, genericUpdater
|
||
|
, jq
|
||
|
, makeWrapper
|
||
|
, mkYarnPackage
|
||
|
, which
|
||
|
, writers
|
||
|
, v4l-utils
|
||
|
, yarn
|
||
|
, yarn2nix
|
||
|
}:
|
||
|
|
||
|
stdenvNoCC.mkDerivation rec {
|
||
|
pname = "mirakurun";
|
||
|
version = "3.8.0";
|
||
|
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "Chinachu";
|
||
|
repo = "Mirakurun";
|
||
|
rev = version;
|
||
|
sha256 = "1fmzi3jc3havvpc1kz5z16k52lnrsmc3b5yqyxc7i911gqyjsxzr";
|
||
|
};
|
||
|
|
||
|
nativeBuildInputs = [ makeWrapper ];
|
||
|
|
||
|
mirakurun = mkYarnPackage rec {
|
||
|
name = "${pname}-${version}";
|
||
|
inherit version src;
|
||
|
|
||
|
yarnNix = ./yarn.nix;
|
||
|
yarnLock = ./yarn.lock;
|
||
|
packageJSON = ./package.json;
|
||
|
|
||
|
patches = [
|
||
|
# NOTE: fixes for hardcoded paths and assumptions about filesystem
|
||
|
# permissions
|
||
|
./nix-filesystem.patch
|
||
|
];
|
||
|
|
||
|
buildPhase = ''
|
||
|
yarn --offline build
|
||
|
'';
|
||
|
|
||
|
distPhase = "true";
|
||
|
};
|
||
|
|
||
|
installPhase =
|
||
|
let
|
||
|
runtimeDeps = [ bash which v4l-utils ];
|
||
|
in
|
||
|
''
|
||
|
mkdir -p $out/bin
|
||
|
|
||
|
makeWrapper ${mirakurun}/bin/mirakurun-epgdump $out/bin/mirakurun-epgdump \
|
||
|
--run "cd ${mirakurun}/libexec/mirakurun/node_modules/mirakurun" \
|
||
|
--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" \
|
||
|
--run "cd ${mirakurun}/libexec/mirakurun/node_modules/mirakurun" \
|
||
|
--prefix PATH : ${lib.makeBinPath runtimeDeps}
|
||
|
'';
|
||
|
|
||
|
passthru.updateScript = import ./update.nix {
|
||
|
inherit lib;
|
||
|
inherit (src.meta) homepage;
|
||
|
inherit
|
||
|
pname
|
||
|
version
|
||
|
common-updater-scripts
|
||
|
genericUpdater
|
||
|
writers
|
||
|
jq
|
||
|
yarn
|
||
|
yarn2nix;
|
||
|
};
|
||
|
|
||
|
meta = {
|
||
|
inherit (mirakurun.meta) description platforms;
|
||
|
maintainers = with lib.maintainers; [ midchildan ];
|
||
|
};
|
||
|
}
|