easytier: 2.1.1 -> 2.1.2 (#376259)
[NixPkgs.git] / pkgs / by-name / rn / rnnoise / package.nix
blob96127916b5ccade06eefd810436a5c53dda1b106
2   stdenv,
3   lib,
4   fetchurl,
5   fetchzip,
6   autoreconfHook,
7   writeScript,
8   fetchpatch,
9   modelUrl ? "",
10   modelHash ? "", # Allow overriding the model URL and hash
13 let
14   modelVersionJSON = lib.importJSON ./model-version.json;
16   # Copy from https://gitlab.xiph.org/xiph/rnnoise/-/raw/v${version}/model_version
17   default_model_version = modelVersionJSON.version;
19   # Either use the default model or the one provided by package override
20   model_url =
21     if (modelUrl == "") then
22       "https://media.xiph.org/rnnoise/models/rnnoise_data-${default_model_version}.tar.gz"
23     else
24       modelUrl;
25   model_hash = if (modelHash == "") then modelVersionJSON.hash else modelHash;
28 stdenv.mkDerivation (finalAttrs: {
29   pname = "rnnoise";
30   version = "0.2";
32   src = fetchzip {
33     urls = [
34       "https://gitlab.xiph.org/xiph/rnnoise/-/archive/v${finalAttrs.version}/rnnoise-v${finalAttrs.version}.tar.gz"
35       "https://github.com/xiph/rnnoise/archive/v${finalAttrs.version}.tar.gz"
36     ];
37     hash = "sha256-Qaf+0iOprq7ILRWNRkBjsniByctRa/lFVqiU5ZInF/Q=";
38   };
40   patches = [
41     # remove when updating
42     (fetchpatch {
43       url = "https://github.com/xiph/rnnoise/commit/372f7b4b76cde4ca1ec4605353dd17898a99de38.patch";
44       hash = "sha256-Dzikb59hjVxd1XIEj/Je4evxtGORkaNcqE+zxOJMSvs=";
45     })
46   ];
48   model = fetchurl {
49     url = model_url;
50     hash = model_hash;
51   };
53   postPatch = ''
54     tar xvomf ${finalAttrs.model}
55   '';
57   nativeBuildInputs = [ autoreconfHook ];
59   postInstall = ''
60     install -Dt $out/bin examples/.libs/rnnoise_demo
61   '';
63   passthru.updateScript = writeScript "update-rnnoise.sh" ''
64     #!/usr/bin/env nix-shell
65     #!nix-shell -i bash -p curl jq common-updater-scripts nix nix-prefetch findutils moreutils
67     prefetch-sri() {
68         nix-prefetch-url "$1" | xargs nix hash to-sri --type sha256
69     }
71     res="$(curl ''${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
72       -sL "https://api.github.com/repos/xiph/rnnoise/tags?per_page=1")"
74     version="$(echo $res | jq '.[0].name | split("v") | .[1]' --raw-output)"
75     update-source-version ${finalAttrs.pname} "$version" --ignore-same-hash
77     model_version=$(curl -sL "https://raw.githubusercontent.com/xiph/rnnoise/v$version/model_version")
78     model_url="https://media.xiph.org/rnnoise/models/rnnoise_data-$model_version.tar.gz"
79     model_hash="$(prefetch-sri $model_url)"
81     modelJson=pkgs/development/libraries/rnnoise/model-version.json
83     jq --arg version "$model_version" \
84         --arg hash "$model_hash" \
85         '.version = $version | .hash = $hash' \
86         "$modelJson" | sponge "$modelJson"
87   '';
89   meta = {
90     description = "Recurrent neural network for audio noise reduction";
91     homepage = "https://people.xiph.org/~jm/demo/rnnoise/";
92     license = lib.licenses.bsd3;
93     maintainers = with lib.maintainers; [ nh2 ];
94     mainProgram = "rnnoise_demo";
95     platforms = lib.platforms.all;
96   };