ocamlPackages.cpdf: 2.7.1 → 2.8 (#376363)
[NixPkgs.git] / pkgs / applications / video / mpv / scripts / occivink.nix
blobcadb4933e9b57338e675434b11f8acb75977555d
2   lib,
3   fetchFromGitHub,
4   unstableGitUpdater,
5   buildLua,
6   ffmpeg,
7 }:
9 let
10   camelToKebab =
11     let
12       inherit (lib.strings) match stringAsChars toLower;
13       isUpper = match "[A-Z]";
14     in
15     stringAsChars (c: if isUpper c != null then "-${toLower c}" else c);
17   mkScript =
18     name: args:
19     let
20       self = rec {
21         pname = camelToKebab name;
22         version = "0-unstable-2024-01-11";
23         src = fetchFromGitHub {
24           owner = "occivink";
25           repo = "mpv-scripts";
26           rev = "d0390c8e802c2e888ff4a2e1d5e4fb040f855b89";
27           hash = "sha256-pc2aaO7lZaoYMEXv5M0WI7PtmqgkNbdtNiLZZwVzppM=";
28         };
29         passthru.updateScript = unstableGitUpdater { };
31         scriptPath = "scripts/${pname}.lua";
33         meta = with lib; {
34           homepage = "https://github.com/occivink/mpv-scripts";
35           license = licenses.unlicense;
36           maintainers = with maintainers; [ nicoo ];
37         };
39         # Sadly needed to make `common-updaters` work here
40         pos = builtins.unsafeGetAttrPos "version" self;
41       };
42     in
43     buildLua (lib.attrsets.recursiveUpdate self args);
45 lib.recurseIntoAttrs (
46   lib.mapAttrs (name: lib.makeOverridable (mkScript name)) {
48     # Usage: `pkgs.mpv.override { scripts = [ pkgs.mpvScripts.seekTo ]; }`
49     crop.meta.description = "Crop the current video in a visual manner";
50     seekTo.meta.description = "Mpv script for seeking to a specific position";
51     blacklistExtensions.meta.description = "Automatically remove playlist entries based on their extension";
53     encode = {
54       meta.description = "Make an extract of the video currently playing using ffmpeg";
56       postPatch = ''
57         substituteInPlace scripts/encode.lua \
58             --replace-fail '"ffmpeg"' '"${lib.getExe ffmpeg}"'
59       '';
60     };
61   }