nixos-config/pkgs/mp4grep.nix

70 lines
1.6 KiB
Nix
Raw Normal View History

2022-11-27 08:53:32 +00:00
{ stdenv
, autoPatchelfHook
, fetchFromGitHub
, fetchzip
2022-01-01 09:37:51 +00:00
, gcc-unwrapped
, makeWrapper
2022-11-27 08:53:32 +00:00
, ocamlPackages
, model ? "small"
2022-01-01 09:37:51 +00:00
}:
let
2022-11-27 08:53:32 +00:00
# https://alphacephei.com/vosk/models
models = {
big = fetchzip {
url = "https://alphacephei.com/vosk/models/vosk-model-en-us-0.22.zip";
hash = "sha256-kakOhA7hEtDM6WY3oAnb8xKZil9WTA3xePpLIxr2+yM=";
2022-01-01 09:37:51 +00:00
};
2022-11-27 08:53:32 +00:00
small = fetchzip {
url = "https://alphacephei.com/vosk/models/vosk-model-small-en-us-0.15.zip";
hash = "sha256-CIoPZ/krX+UW2w7c84W3oc1n4zc9BBS/fc8rVYUthuY=";
};
};
installBin = bin: ''
install -D $MP4GREP_INSTALL_PREFIX/${bin} $out/share/mp4grep/${bin}
makeWrapper $out/share/mp4grep/${bin} $out/bin/${bin} \
--run 'export MP4GREP_CACHE="$HOME/.cache/mp4grep"' \
--run 'mkdir -p "$MP4GREP_CACHE"' \
--set MP4GREP_MODEL ${models.${model}}
'';
2022-01-01 09:37:51 +00:00
in
2022-11-27 08:53:32 +00:00
stdenv.mkDerivation rec
2022-01-01 09:37:51 +00:00
{
2022-11-27 08:53:32 +00:00
pname = "mp4grep";
version = "0.1.4";
src = fetchFromGitHub {
owner = "o-oconnell";
repo = "mp4grep";
rev = "${version}-linux-x86";
sha256 = "HsZZ+KDf4bpdvJjM42vh5u1gKhGSH+g6zYS0pRM5aTU=";
};
buildInputs = [
gcc-unwrapped.lib
];
nativeBuildInputs = [
autoPatchelfHook
makeWrapper
ocamlPackages.ocaml
];
dontStrip = true;
OPAM_SWITCH_PREFIX = ".";
MP4GREP_INSTALL_PREFIX = "./bin-nix";
preBuild = ''
mkdir $MP4GREP_INSTALL_PREFIX
ln -s ${ocamlPackages.parmap}/lib/ocaml/4.14.0/site-lib/parmap $OPAM_SWITCH_PREFIX/lib/
'';
2022-01-01 09:37:51 +00:00
installPhase = ''
2022-11-27 08:53:32 +00:00
install -D $MP4GREP_INSTALL_PREFIX/mp4grep-libs/libvosk.so $out/share/mp4grep/libvosk.so
${installBin "mp4grep"}
${installBin "mp4grep-convert"}
2022-01-01 09:37:51 +00:00
'';
}