diff options
author | midchildan <git@midchildan.org> | 2021-09-06 00:15:31 +0900 |
---|---|---|
committer | Raphael Megzari <raphael@megzari.com> | 2021-09-07 12:22:59 +0900 |
commit | 21a7695b8afb29c17ff47fbc0f4798b5a56ac23a (patch) | |
tree | fae4874b2a0c5e50dbbc1f1fdfb70b2dc5d9a0c5 /pkgs/applications/video/mirakurun/default.nix | |
parent | 9cbdd2655c340363f00fdb784015d495aac007d6 (diff) | |
download | nixpkgs-21a7695b8afb29c17ff47fbc0f4798b5a56ac23a.tar nixpkgs-21a7695b8afb29c17ff47fbc0f4798b5a56ac23a.tar.gz nixpkgs-21a7695b8afb29c17ff47fbc0f4798b5a56ac23a.tar.bz2 nixpkgs-21a7695b8afb29c17ff47fbc0f4798b5a56ac23a.tar.lz nixpkgs-21a7695b8afb29c17ff47fbc0f4798b5a56ac23a.tar.xz nixpkgs-21a7695b8afb29c17ff47fbc0f4798b5a56ac23a.tar.zst nixpkgs-21a7695b8afb29c17ff47fbc0f4798b5a56ac23a.zip |
mirakurun: build with yarn2nix
Diffstat (limited to 'pkgs/applications/video/mirakurun/default.nix')
-rw-r--r-- | pkgs/applications/video/mirakurun/default.nix | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/pkgs/applications/video/mirakurun/default.nix b/pkgs/applications/video/mirakurun/default.nix new file mode 100644 index 00000000000..3987e125284 --- /dev/null +++ b/pkgs/applications/video/mirakurun/default.nix @@ -0,0 +1,95 @@ +# 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 ]; + }; +} |