about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeder Bergebakken Sundt <pbsds@hotmail.com>2023-12-29 17:03:54 +0100
committerGitHub <noreply@github.com>2023-12-29 17:03:54 +0100
commitf8a8904e9222c08520f03c0ccf3f5520cc311be1 (patch)
tree0ad66b2363a7662abdc339537a770d029e06a2c5
parent29760d773e4c3f5a395e68750297bf3b5c859fc6 (diff)
parentef51456d0f2b01674d62f658ff5f5b286e27d24b (diff)
Merge pull request #273158 from nbraud/mpvScripts/scope
mpvScripts: make into a scope
-rw-r--r--pkgs/applications/video/mpv/scripts/default.nix146
1 files changed, 80 insertions, 66 deletions
diff --git a/pkgs/applications/video/mpv/scripts/default.nix b/pkgs/applications/video/mpv/scripts/default.nix
index 3520138a7d60d..158a7c491007b 100644
--- a/pkgs/applications/video/mpv/scripts/default.nix
+++ b/pkgs/applications/video/mpv/scripts/default.nix
@@ -1,84 +1,98 @@
 { lib
-, callPackage
 , config
+, newScope
 , runCommand
 }:
 
 let
-  buildLua = callPackage ./buildLua.nix { };
-
   unionOfDisjoints = lib.fold lib.attrsets.unionOfDisjoint {};
 
-  addTests = name: drv: let
-    inherit (drv) scriptName;
-    scriptPath = "share/mpv/scripts/${scriptName}";
-    fullScriptPath = "${drv}/${scriptPath}";
+  addTests = name: drv:
+    if ! lib.isDerivation drv then
+      drv
+    else let
+      inherit (drv) scriptName;
+      scriptPath = "share/mpv/scripts/${scriptName}";
+      fullScriptPath = "${drv}/${scriptPath}";
+    in drv.overrideAttrs (old: { passthru = (old.passthru or {}) // { tests = unionOfDisjoints [
+      (old.passthru.tests or {})
 
-  in drv.overrideAttrs (old: { passthru = (old.passthru or {}) // { tests = unionOfDisjoints [
-    (old.passthru.tests or {})
+      {
+        scriptName-is-valid = runCommand "mpvScripts.${name}.passthru.tests.scriptName-is-valid" {
+          meta.maintainers = with lib.maintainers; [ nicoo ];
+          preferLocalBuild = true;
+        } ''
+          if [ -e "${fullScriptPath}" ]; then
+            touch $out
+          else
+            echo "mpvScripts.\"${name}\" does not contain a script named \"${scriptName}\"" >&2
+            exit 1
+          fi
+        '';
+      }
 
-    {
-      scriptName-is-valid = runCommand "mpvScripts.${name}.passthru.tests.scriptName-is-valid" {
-        meta.maintainers = with lib.maintainers; [ nicoo ];
-        preferLocalBuild = true;
-      } ''
-        if [ -e "${fullScriptPath}" ]; then
-          touch $out
-        else
-          echo "mpvScripts.\"${name}\" does not contain a script named \"${scriptName}\"" >&2
-          exit 1
-        fi
-      '';
-    }
+      # can't check whether `fullScriptPath` is a directory, in pure-evaluation mode
+      (with lib; optionalAttrs (! any (s: hasSuffix s drv.passthru.scriptName) [ ".js" ".lua" ".so" ]) {
+        single-main-in-script-dir = runCommand "mpvScripts.${name}.passthru.tests.single-main-in-script-dir" {
+          meta.maintainers = with lib.maintainers; [ nicoo ];
+          preferLocalBuild = true;
+        } ''
+          die() {
+            echo "$@" >&2
+            exit 1
+          }
 
-    # can't check whether `fullScriptPath` is a directory, in pure-evaluation mode
-    (with lib; optionalAttrs (! any (s: hasSuffix s drv.passthru.scriptName) [ ".js" ".lua" ".so" ]) {
-      single-main-in-script-dir = runCommand "mpvScripts.${name}.passthru.tests.single-main-in-script-dir" {
-        meta.maintainers = with lib.maintainers; [ nicoo ];
-        preferLocalBuild = true;
-      } ''
-        die() {
-          echo "$@" >&2
-          exit 1
-        }
+          cd "${drv}/${scriptPath}"  # so the glob expands to filenames only
+          mains=( main.* )
+          if [ "''${#mains[*]}" -eq 1 ]; then
+            touch $out
+          elif [ "''${#mains[*]}" -eq 0 ]; then
+            die "'${scriptPath}' contains no 'main.*' file"
+          else
+            die "'${scriptPath}' contains multiple 'main.*' files:" "''${mains[*]}"
+          fi
+        '';
+      })
+    ]; }; });
 
-        cd "${drv}/${scriptPath}"  # so the glob expands to filenames only
-        mains=( main.* )
-        if [ "''${#mains[*]}" -eq 1 ]; then
-          touch $out
-        elif [ "''${#mains[*]}" -eq 0 ]; then
-          die "'${scriptPath}' contains no 'main.*' file"
-        else
-          die "'${scriptPath}' contains multiple 'main.*' files:" "''${mains[*]}"
-        fi
-      '';
-    })
-  ]; }; });
-in
+  scope = self: let
+    inherit (self) callPackage;
+  in lib.mapAttrs addTests {
+    inherit (callPackage ./mpv.nix { })
+      acompressor autocrop autodeint autoload;
+    inherit (callPackage ./occivink.nix { })
+      blacklistExtensions seekTo;
 
-lib.recurseIntoAttrs
-  (lib.mapAttrs addTests ({
-    chapterskip = callPackage ./chapterskip.nix { inherit buildLua; };
-    convert = callPackage ./convert.nix { inherit buildLua; };
-    cutter = callPackage ./cutter.nix { inherit buildLua; };
+    buildLua = callPackage ./buildLua.nix { };
+    chapterskip = callPackage ./chapterskip.nix { };
+    convert = callPackage ./convert.nix { };
+    cutter = callPackage ./cutter.nix { };
     inhibit-gnome = callPackage ./inhibit-gnome.nix { };
     mpris = callPackage ./mpris.nix { };
-    mpv-playlistmanager = callPackage ./mpv-playlistmanager.nix { inherit buildLua; };
-    mpv-webm = callPackage ./mpv-webm.nix { inherit buildLua; };
-    mpvacious = callPackage ./mpvacious.nix { inherit buildLua; };
-    quality-menu = callPackage ./quality-menu.nix { inherit buildLua; };
-    simple-mpv-webui = callPackage ./simple-mpv-webui.nix { inherit buildLua; };
+    mpv-playlistmanager = callPackage ./mpv-playlistmanager.nix { };
+    mpv-webm = callPackage ./mpv-webm.nix { };
+    mpvacious = callPackage ./mpvacious.nix { };
+    quality-menu = callPackage ./quality-menu.nix { };
+    simple-mpv-webui = callPackage ./simple-mpv-webui.nix { };
     sponsorblock = callPackage ./sponsorblock.nix { };
-    sponsorblock-minimal = callPackage ./sponsorblock-minimal.nix { inherit buildLua; };
-    thumbfast = callPackage ./thumbfast.nix { inherit buildLua; };
-    thumbnail = callPackage ./thumbnail.nix { inherit buildLua; };
-    uosc = callPackage ./uosc.nix { inherit buildLua; };
-    visualizer = callPackage ./visualizer.nix { inherit buildLua; };
+    sponsorblock-minimal = callPackage ./sponsorblock-minimal.nix { };
+    thumbfast = callPackage ./thumbfast.nix { };
+    thumbnail = callPackage ./thumbnail.nix { };
+    uosc = callPackage ./uosc.nix { };
+    visualizer = callPackage ./visualizer.nix { };
     vr-reversal = callPackage ./vr-reversal.nix { };
     webtorrent-mpv-hook = callPackage ./webtorrent-mpv-hook.nix { };
-  }
-  // (callPackage ./mpv.nix      { inherit buildLua; })
-  // (callPackage ./occivink.nix { inherit buildLua; })))
-  // lib.optionalAttrs config.allowAliases {
-  youtube-quality = throw "'youtube-quality' is no longer maintained, use 'quality-menu' instead"; # added 2023-07-14
-}
+  };
+
+  aliases = {
+    youtube-quality = throw "'youtube-quality' is no longer maintained, use 'quality-menu' instead"; # added 2023-07-14
+  };
+in
+
+with lib; pipe scope [
+  (makeScope newScope)
+  (self:
+    assert builtins.intersectAttrs self aliases == {};
+    self // optionalAttrs config.allowAliases aliases)
+  recurseIntoAttrs
+]