Loading pkgs/tools/audio/beets/builtin-plugins.nix +71 −40 Original line number Diff line number Diff line { aacgain , ffmpeg , flac , imagemagick , keyfinder-cli , mp3gain , mp3val , python3Packages , ... }: { { aacgain, ffmpeg, flac, imagemagick, keyfinder-cli, mp3gain, mp3val, python3Packages, ... }: { absubmit = { deprecated = true; testPaths = [ ]; }; acousticbrainz.propagatedBuildInputs = [ python3Packages.requests ]; advancedrewrite = { testPaths = [ ]; }; acousticbrainz = { deprecated = true; propagatedBuildInputs = [ python3Packages.requests ]; }; albumtypes = { }; aura = { propagatedBuildInputs = with python3Packages; [ flask pillow ]; testPaths = [ ]; propagatedBuildInputs = with python3Packages; [ flask flask-cors pillow ]; }; autobpm = { propagatedBuildInputs = with python3Packages; [ librosa # An optional dependency of librosa, needed for beets' autobpm resampy ]; }; badfiles = { testPaths = [ ]; wrapperBins = [ mp3val flac ]; wrapperBins = [ mp3val flac ]; }; bareasc = { }; beatport.propagatedBuildInputs = [ python3Packages.requests-oauthlib ]; Loading @@ -39,7 +59,10 @@ propagatedBuildInputs = [ python3Packages.requests ]; testPaths = [ ]; }; discogs.propagatedBuildInputs = with python3Packages; [ discogs-client requests ]; discogs.propagatedBuildInputs = with python3Packages; [ discogs-client requests ]; duplicates.testPaths = [ ]; edit = { }; embedart = { Loading @@ -49,7 +72,12 @@ embyupdate.propagatedBuildInputs = [ python3Packages.requests ]; export = { }; fetchart = { propagatedBuildInputs = with python3Packages; [ requests pillow ]; propagatedBuildInputs = with python3Packages; [ beautifulsoup4 langdetect pillow requests ]; wrapperBins = [ imagemagick ]; }; filefilter = { }; Loading @@ -76,11 +104,19 @@ propagatedBuildInputs = [ python3Packages.pylast ]; testPaths = [ ]; }; limit = { }; listenbrainz = { testPaths = [ ]; }; loadext = { propagatedBuildInputs = [ python3Packages.requests ]; testPaths = [ ]; }; lyrics.propagatedBuildInputs = [ python3Packages.beautifulsoup4 ]; lyrics.propagatedBuildInputs = with python3Packages; [ beautifulsoup4 langdetect requests ]; mbcollection.testPaths = [ ]; mbsubmit = { }; mbsync = { }; Loading @@ -97,7 +133,11 @@ playlist.propagatedBuildInputs = [ python3Packages.requests ]; plexupdate = { }; random = { }; replaygain.wrapperBins = [ aacgain ffmpeg mp3gain ]; replaygain.wrapperBins = [ aacgain ffmpeg mp3gain ]; rewrite.testPaths = [ ]; scrub.testPaths = [ ]; smartplaylist = { }; Loading @@ -111,31 +151,22 @@ testPaths = [ ]; }; subsonicupdate.propagatedBuildInputs = [ python3Packages.requests ]; substitute = { testPaths = [ ]; }; the = { }; thumbnails = { propagatedBuildInputs = with python3Packages; [ pillow pyxdg ]; propagatedBuildInputs = with python3Packages; [ pillow pyxdg ]; wrapperBins = [ imagemagick ]; }; types.testPaths = [ "test/plugins/test_types_plugin.py" ]; unimported.testPaths = [ ]; web.propagatedBuildInputs = [ python3Packages.flask ]; zero = { }; limit = { }; substitute = { testPaths = [ ]; }; advancedrewrite = { testPaths = [ ]; }; autobpm = { propagatedBuildInputs = with python3Packages; [ librosa # An optional dependency of librosa, needed for beets' autobpm resampy web.propagatedBuildInputs = with python3Packages; [ flask flask-cors ]; testPaths = [ ]; }; listenbrainz = { testPaths = [ ]; }; zero = { }; } pkgs/tools/audio/beets/common.nix +145 −107 Original line number Diff line number Diff line { fetchpatch , bashInteractive , diffPlugins , glibcLocales , gobject-introspection , gst_all_1 , lib , python3Packages , sphinxHook , runtimeShell , writeScript # plugin deps , aacgain , essentia-extractor , ffmpeg , flac , imagemagick , keyfinder-cli , mp3gain , mp3val , src , version , extraPatches ? [ ] , pluginOverrides ? { } , disableAllPlugins ? false , disabledTests ? [] , extraNativeBuildInputs ? [] { lib, src, version, bashInteractive, diffPlugins, gobject-introspection, gst_all_1, python3Packages, sphinxHook, runtimeShell, writeScript, # plugin deps, used indirectly by the @inputs when we `import ./builtin-plugins.nix` aacgain, essentia-extractor, ffmpeg, flac, imagemagick, keyfinder-cli, mp3gain, mp3val, extraPatches ? [ ], pluginOverrides ? { }, disableAllPlugins ? false, disabledTests ? [ ], extraNativeBuildInputs ? [ ], # tests , runCommand , beets runCommand, beets, }@inputs: let inherit (lib) attrNames attrValues concatMap; mkPlugin = { name , enable ? !disableAllPlugins , builtin ? false , propagatedBuildInputs ? [ ] , testPaths ? [ # NOTE: This conditional can be removed when beets-stable is updated and # the default plugins test path is changed (if (lib.versions.majorMinor version) == "1.6" then "test/test_${name}.py" else mkPlugin = { name, enable ? !disableAllPlugins, builtin ? false, propagatedBuildInputs ? [ ], testPaths ? [ "test/plugins/test_${name}.py" ) ] , wrapperBins ? [ ] }: { inherit name enable builtin propagatedBuildInputs testPaths wrapperBins; ], wrapperBins ? [ ], }: { inherit name enable builtin propagatedBuildInputs testPaths wrapperBins ; }; basePlugins = lib.mapAttrs (_: a: { builtin = true; } // a) (import ./builtin-plugins.nix inputs); pluginOverrides' = lib.mapAttrs (plugName: lib.throwIf (basePlugins.${plugName}.deprecated or false) pluginOverrides' = lib.mapAttrs ( plugName: lib.throwIf (basePlugins.${plugName}.deprecated or false) "beets evaluation error: Plugin ${plugName} was enabled in pluginOverrides, but it has been removed. Remove the override to fix evaluation." ) pluginOverrides ; ) pluginOverrides; allPlugins = lib.mapAttrs ( n: a: mkPlugin { name = n; } // a) (lib.recursiveUpdate basePlugins pluginOverrides'); allPlugins = lib.mapAttrs (n: a: mkPlugin { name = n; } // a) ( lib.recursiveUpdate basePlugins pluginOverrides' ); builtinPlugins = lib.filterAttrs (_: p: p.builtin) allPlugins; enabledPlugins = lib.filterAttrs (_: p: p.enable) allPlugins; disabledPlugins = lib.filterAttrs (_: p: !p.enable) allPlugins; disabledTestPaths = lib.flatten (attrValues (lib.mapAttrs (_: v: v.testPaths) disabledPlugins)); pluginWrapperBins = concatMap (p: p.wrapperBins) (attrValues enabledPlugins); in python3Packages.buildPythonApplication { pname = "beets"; inherit src version; pyproject = true; patches = extraPatches; propagatedBuildInputs = with python3Packages; [ build-system = [ python3Packages.poetry-core ]; dependencies = with python3Packages; [ confuse gst-python jellyfish mediafile munkres musicbrainzngs mutagen pygobject3 platformdirs pyyaml reflink unidecode typing-extensions ] ++ (concatMap (p: p.propagatedBuildInputs) (attrValues enabledPlugins)); ] ++ (concatMap (p: p.propagatedBuildInputs) (attrValues enabledPlugins)); nativeBuildInputs = [ gobject-introspection Loading @@ -96,15 +106,24 @@ python3Packages.buildPythonApplication { python3Packages.pydata-sphinx-theme ] ++ extraNativeBuildInputs; buildInputs = [ ] ++ (with gst_all_1; [ buildInputs = [ ] ++ (with gst_all_1; [ gst-plugins-base gst-plugins-good gst-plugins-ugly ]); outputs = [ "out" "doc" "man" ]; sphinxBuilders = [ "html" "man" ]; outputs = [ "out" "doc" "man" ]; sphinxBuilders = [ "html" "man" ]; postInstall = '' mkdir -p $out/share/zsh/site-functions Loading @@ -117,18 +136,29 @@ python3Packages.buildPythonApplication { "--prefix PATH : ${lib.makeBinPath pluginWrapperBins}" ]; nativeCheckInputs = with python3Packages; [ nativeCheckInputs = with python3Packages; [ pytestCheckHook pytest-cov mock rarfile responses ] ++ pluginWrapperBins; ] ++ pluginWrapperBins; __darwinAllowLocalNetworking = true; disabledTestPaths = lib.flatten (attrValues (lib.mapAttrs (_: v: v.testPaths) disabledPlugins)); inherit disabledTests; disabledTestPaths = disabledTestPaths ++ [ # touches network "test/plugins/test_aura.py" ]; disabledTests = disabledTests ++ [ # beets.ui.UserError: unknown command 'autobpm' "test/plugins/test_autobpm.py::TestAutoBPMPlugin::test_import" # AssertionError: assert 0 == 117 "test/plugins/test_autobpm.py::TestAutoBPMPlugin::test_command" ]; # Perform extra "sanity checks", before running pytest tests. preCheck = '' Loading @@ -152,12 +182,14 @@ python3Packages.buildPythonApplication { env EDITOR=true "$out/bin/beet" config -e ''; passthru.plugins = allPlugins; passthru.tests.gstreamer = runCommand "beets-gstreamer-test" { passthru.tests.gstreamer = runCommand "beets-gstreamer-test" { meta.timeout = 60; } '' } '' set -euo pipefail export HOME=$(mktemp -d) mkdir $out Loading @@ -170,12 +202,18 @@ EOF ${beets}/bin/beet -c $out/config.yaml > /dev/null ''; meta = with lib; { meta = { description = "Music tagger and library organizer"; homepage = "https://beets.io"; license = licenses.mit; maintainers = with maintainers; [ aszlig doronbehar lovesegfault pjones ]; platforms = platforms.linux ++ platforms.darwin; license = lib.licenses.mit; maintainers = with lib.maintainers; [ aszlig doronbehar lovesegfault montchr pjones ]; platforms = lib.platforms.linux ++ lib.platforms.darwin; mainProgram = "beet"; }; } pkgs/tools/audio/beets/default.nix +23 −23 Original line number Diff line number Diff line { lib , callPackage , fetchFromGitHub , python3Packages { lib, callPackage, fetchFromGitHub, python3Packages, }: /* ** To customize the enabled beets plugins, use the pluginOverrides input to the Loading @@ -21,14 +22,12 @@ lib.makeExtensible (self: { beets-stable = callPackage ./common.nix rec { inherit python3Packages; # NOTE: ./builtin-plugins.nix and ./common.nix can have some conditionals # be removed when stable version updates version = "2.0.0"; version = "2.2.0"; src = fetchFromGitHub { owner = "beetbox"; repo = "beets"; rev = "v${version}"; hash = "sha256-6pmImyopy0zFBDYoqDyWcBv61FK1kGsZwW2+7fzAnq8="; hash = "sha256-jhwXRgUUQJgQ/PLwvY1UfHCJ9UC8DcdBpE/janao0RM="; }; extraPatches = [ # Bash completion fix for Nix Loading @@ -40,12 +39,12 @@ lib.makeExtensible (self: { beets-unstable = callPackage ./common.nix { inherit python3Packages; version = "2.0.0-unstable-2024-05-25"; version = "2.2.0-unstable-2024-12-02"; src = fetchFromGitHub { owner = "beetbox"; repo = "beets"; rev = "2130404217684f22f36de00663428602b3f96d84"; hash = "sha256-trqF6YVBcv+i5H4Ez3PKnRQ6mV2Ly/cw3UJC7pl19og="; rev = "f92c0ec8b14fbd59e58374fd123563123aef197b"; hash = "sha256-jhwXRgUUQJgQ/PLwvY1UfHCJ9UC8DcdBpE/janao0RM="; }; extraPatches = [ # Bash completion fix for Nix Loading @@ -55,5 +54,6 @@ lib.makeExtensible (self: { alternatives = callPackage ./plugins/alternatives.nix { beets = self.beets-minimal; }; copyartifacts = callPackage ./plugins/copyartifacts.nix { beets = self.beets-minimal; }; extrafiles = callPackage ./plugins/extrafiles.nix { beets = self.beets-minimal; }; extrafiles = throw "extrafiles is unmaintained since 2020 and broken since beets 2.0.0"; }) pkgs/tools/audio/beets/plugins/alternatives.nix +12 −4 Original line number Diff line number Diff line { lib, fetchFromGitHub, beets, python3Packages }: { lib, fetchFromGitHub, beets, python3Packages, }: python3Packages.buildPythonApplication rec { pname = "beets-alternatives"; Loading Loading @@ -27,10 +32,13 @@ python3Packages.buildPythonApplication rec { export HOME=$(mktemp -d) ''; meta = with lib; { meta = { description = "Beets plugin to manage external files"; homepage = "https://github.com/geigerzaehler/beets-alternatives"; maintainers = with maintainers; [ aszlig lovesegfault ]; license = licenses.mit; maintainers = with lib.maintainers; [ aszlig lovesegfault ]; license = lib.licenses.mit; }; } pkgs/tools/audio/beets/plugins/copyartifacts.nix +10 −1 Original line number Diff line number Diff line { lib, fetchFromGitHub, beets, python3Packages }: { lib, fetchFromGitHub, beets, python3Packages, }: python3Packages.buildPythonApplication rec { pname = "beets-copyartifacts"; Loading @@ -15,6 +20,10 @@ python3Packages.buildPythonApplication rec { sed -i -e '/install_requires/,/\]/{/beets/d}' setup.py sed -i -e '/namespace_packages/d' setup.py printf 'from pkgutil import extend_path\n__path__ = extend_path(__path__, __name__)\n' >beetsplug/__init__.py # beets v2.1.0 compat # <https://github.com/beetbox/beets/commit/0e87389994a9969fa0930ffaa607609d02e286a8> sed -i -e 's/util\.py3_path/os.fsdecode/g' tests/_common.py ''; pytestFlagsArray = [ "-r fEs" ]; Loading Loading
pkgs/tools/audio/beets/builtin-plugins.nix +71 −40 Original line number Diff line number Diff line { aacgain , ffmpeg , flac , imagemagick , keyfinder-cli , mp3gain , mp3val , python3Packages , ... }: { { aacgain, ffmpeg, flac, imagemagick, keyfinder-cli, mp3gain, mp3val, python3Packages, ... }: { absubmit = { deprecated = true; testPaths = [ ]; }; acousticbrainz.propagatedBuildInputs = [ python3Packages.requests ]; advancedrewrite = { testPaths = [ ]; }; acousticbrainz = { deprecated = true; propagatedBuildInputs = [ python3Packages.requests ]; }; albumtypes = { }; aura = { propagatedBuildInputs = with python3Packages; [ flask pillow ]; testPaths = [ ]; propagatedBuildInputs = with python3Packages; [ flask flask-cors pillow ]; }; autobpm = { propagatedBuildInputs = with python3Packages; [ librosa # An optional dependency of librosa, needed for beets' autobpm resampy ]; }; badfiles = { testPaths = [ ]; wrapperBins = [ mp3val flac ]; wrapperBins = [ mp3val flac ]; }; bareasc = { }; beatport.propagatedBuildInputs = [ python3Packages.requests-oauthlib ]; Loading @@ -39,7 +59,10 @@ propagatedBuildInputs = [ python3Packages.requests ]; testPaths = [ ]; }; discogs.propagatedBuildInputs = with python3Packages; [ discogs-client requests ]; discogs.propagatedBuildInputs = with python3Packages; [ discogs-client requests ]; duplicates.testPaths = [ ]; edit = { }; embedart = { Loading @@ -49,7 +72,12 @@ embyupdate.propagatedBuildInputs = [ python3Packages.requests ]; export = { }; fetchart = { propagatedBuildInputs = with python3Packages; [ requests pillow ]; propagatedBuildInputs = with python3Packages; [ beautifulsoup4 langdetect pillow requests ]; wrapperBins = [ imagemagick ]; }; filefilter = { }; Loading @@ -76,11 +104,19 @@ propagatedBuildInputs = [ python3Packages.pylast ]; testPaths = [ ]; }; limit = { }; listenbrainz = { testPaths = [ ]; }; loadext = { propagatedBuildInputs = [ python3Packages.requests ]; testPaths = [ ]; }; lyrics.propagatedBuildInputs = [ python3Packages.beautifulsoup4 ]; lyrics.propagatedBuildInputs = with python3Packages; [ beautifulsoup4 langdetect requests ]; mbcollection.testPaths = [ ]; mbsubmit = { }; mbsync = { }; Loading @@ -97,7 +133,11 @@ playlist.propagatedBuildInputs = [ python3Packages.requests ]; plexupdate = { }; random = { }; replaygain.wrapperBins = [ aacgain ffmpeg mp3gain ]; replaygain.wrapperBins = [ aacgain ffmpeg mp3gain ]; rewrite.testPaths = [ ]; scrub.testPaths = [ ]; smartplaylist = { }; Loading @@ -111,31 +151,22 @@ testPaths = [ ]; }; subsonicupdate.propagatedBuildInputs = [ python3Packages.requests ]; substitute = { testPaths = [ ]; }; the = { }; thumbnails = { propagatedBuildInputs = with python3Packages; [ pillow pyxdg ]; propagatedBuildInputs = with python3Packages; [ pillow pyxdg ]; wrapperBins = [ imagemagick ]; }; types.testPaths = [ "test/plugins/test_types_plugin.py" ]; unimported.testPaths = [ ]; web.propagatedBuildInputs = [ python3Packages.flask ]; zero = { }; limit = { }; substitute = { testPaths = [ ]; }; advancedrewrite = { testPaths = [ ]; }; autobpm = { propagatedBuildInputs = with python3Packages; [ librosa # An optional dependency of librosa, needed for beets' autobpm resampy web.propagatedBuildInputs = with python3Packages; [ flask flask-cors ]; testPaths = [ ]; }; listenbrainz = { testPaths = [ ]; }; zero = { }; }
pkgs/tools/audio/beets/common.nix +145 −107 Original line number Diff line number Diff line { fetchpatch , bashInteractive , diffPlugins , glibcLocales , gobject-introspection , gst_all_1 , lib , python3Packages , sphinxHook , runtimeShell , writeScript # plugin deps , aacgain , essentia-extractor , ffmpeg , flac , imagemagick , keyfinder-cli , mp3gain , mp3val , src , version , extraPatches ? [ ] , pluginOverrides ? { } , disableAllPlugins ? false , disabledTests ? [] , extraNativeBuildInputs ? [] { lib, src, version, bashInteractive, diffPlugins, gobject-introspection, gst_all_1, python3Packages, sphinxHook, runtimeShell, writeScript, # plugin deps, used indirectly by the @inputs when we `import ./builtin-plugins.nix` aacgain, essentia-extractor, ffmpeg, flac, imagemagick, keyfinder-cli, mp3gain, mp3val, extraPatches ? [ ], pluginOverrides ? { }, disableAllPlugins ? false, disabledTests ? [ ], extraNativeBuildInputs ? [ ], # tests , runCommand , beets runCommand, beets, }@inputs: let inherit (lib) attrNames attrValues concatMap; mkPlugin = { name , enable ? !disableAllPlugins , builtin ? false , propagatedBuildInputs ? [ ] , testPaths ? [ # NOTE: This conditional can be removed when beets-stable is updated and # the default plugins test path is changed (if (lib.versions.majorMinor version) == "1.6" then "test/test_${name}.py" else mkPlugin = { name, enable ? !disableAllPlugins, builtin ? false, propagatedBuildInputs ? [ ], testPaths ? [ "test/plugins/test_${name}.py" ) ] , wrapperBins ? [ ] }: { inherit name enable builtin propagatedBuildInputs testPaths wrapperBins; ], wrapperBins ? [ ], }: { inherit name enable builtin propagatedBuildInputs testPaths wrapperBins ; }; basePlugins = lib.mapAttrs (_: a: { builtin = true; } // a) (import ./builtin-plugins.nix inputs); pluginOverrides' = lib.mapAttrs (plugName: lib.throwIf (basePlugins.${plugName}.deprecated or false) pluginOverrides' = lib.mapAttrs ( plugName: lib.throwIf (basePlugins.${plugName}.deprecated or false) "beets evaluation error: Plugin ${plugName} was enabled in pluginOverrides, but it has been removed. Remove the override to fix evaluation." ) pluginOverrides ; ) pluginOverrides; allPlugins = lib.mapAttrs ( n: a: mkPlugin { name = n; } // a) (lib.recursiveUpdate basePlugins pluginOverrides'); allPlugins = lib.mapAttrs (n: a: mkPlugin { name = n; } // a) ( lib.recursiveUpdate basePlugins pluginOverrides' ); builtinPlugins = lib.filterAttrs (_: p: p.builtin) allPlugins; enabledPlugins = lib.filterAttrs (_: p: p.enable) allPlugins; disabledPlugins = lib.filterAttrs (_: p: !p.enable) allPlugins; disabledTestPaths = lib.flatten (attrValues (lib.mapAttrs (_: v: v.testPaths) disabledPlugins)); pluginWrapperBins = concatMap (p: p.wrapperBins) (attrValues enabledPlugins); in python3Packages.buildPythonApplication { pname = "beets"; inherit src version; pyproject = true; patches = extraPatches; propagatedBuildInputs = with python3Packages; [ build-system = [ python3Packages.poetry-core ]; dependencies = with python3Packages; [ confuse gst-python jellyfish mediafile munkres musicbrainzngs mutagen pygobject3 platformdirs pyyaml reflink unidecode typing-extensions ] ++ (concatMap (p: p.propagatedBuildInputs) (attrValues enabledPlugins)); ] ++ (concatMap (p: p.propagatedBuildInputs) (attrValues enabledPlugins)); nativeBuildInputs = [ gobject-introspection Loading @@ -96,15 +106,24 @@ python3Packages.buildPythonApplication { python3Packages.pydata-sphinx-theme ] ++ extraNativeBuildInputs; buildInputs = [ ] ++ (with gst_all_1; [ buildInputs = [ ] ++ (with gst_all_1; [ gst-plugins-base gst-plugins-good gst-plugins-ugly ]); outputs = [ "out" "doc" "man" ]; sphinxBuilders = [ "html" "man" ]; outputs = [ "out" "doc" "man" ]; sphinxBuilders = [ "html" "man" ]; postInstall = '' mkdir -p $out/share/zsh/site-functions Loading @@ -117,18 +136,29 @@ python3Packages.buildPythonApplication { "--prefix PATH : ${lib.makeBinPath pluginWrapperBins}" ]; nativeCheckInputs = with python3Packages; [ nativeCheckInputs = with python3Packages; [ pytestCheckHook pytest-cov mock rarfile responses ] ++ pluginWrapperBins; ] ++ pluginWrapperBins; __darwinAllowLocalNetworking = true; disabledTestPaths = lib.flatten (attrValues (lib.mapAttrs (_: v: v.testPaths) disabledPlugins)); inherit disabledTests; disabledTestPaths = disabledTestPaths ++ [ # touches network "test/plugins/test_aura.py" ]; disabledTests = disabledTests ++ [ # beets.ui.UserError: unknown command 'autobpm' "test/plugins/test_autobpm.py::TestAutoBPMPlugin::test_import" # AssertionError: assert 0 == 117 "test/plugins/test_autobpm.py::TestAutoBPMPlugin::test_command" ]; # Perform extra "sanity checks", before running pytest tests. preCheck = '' Loading @@ -152,12 +182,14 @@ python3Packages.buildPythonApplication { env EDITOR=true "$out/bin/beet" config -e ''; passthru.plugins = allPlugins; passthru.tests.gstreamer = runCommand "beets-gstreamer-test" { passthru.tests.gstreamer = runCommand "beets-gstreamer-test" { meta.timeout = 60; } '' } '' set -euo pipefail export HOME=$(mktemp -d) mkdir $out Loading @@ -170,12 +202,18 @@ EOF ${beets}/bin/beet -c $out/config.yaml > /dev/null ''; meta = with lib; { meta = { description = "Music tagger and library organizer"; homepage = "https://beets.io"; license = licenses.mit; maintainers = with maintainers; [ aszlig doronbehar lovesegfault pjones ]; platforms = platforms.linux ++ platforms.darwin; license = lib.licenses.mit; maintainers = with lib.maintainers; [ aszlig doronbehar lovesegfault montchr pjones ]; platforms = lib.platforms.linux ++ lib.platforms.darwin; mainProgram = "beet"; }; }
pkgs/tools/audio/beets/default.nix +23 −23 Original line number Diff line number Diff line { lib , callPackage , fetchFromGitHub , python3Packages { lib, callPackage, fetchFromGitHub, python3Packages, }: /* ** To customize the enabled beets plugins, use the pluginOverrides input to the Loading @@ -21,14 +22,12 @@ lib.makeExtensible (self: { beets-stable = callPackage ./common.nix rec { inherit python3Packages; # NOTE: ./builtin-plugins.nix and ./common.nix can have some conditionals # be removed when stable version updates version = "2.0.0"; version = "2.2.0"; src = fetchFromGitHub { owner = "beetbox"; repo = "beets"; rev = "v${version}"; hash = "sha256-6pmImyopy0zFBDYoqDyWcBv61FK1kGsZwW2+7fzAnq8="; hash = "sha256-jhwXRgUUQJgQ/PLwvY1UfHCJ9UC8DcdBpE/janao0RM="; }; extraPatches = [ # Bash completion fix for Nix Loading @@ -40,12 +39,12 @@ lib.makeExtensible (self: { beets-unstable = callPackage ./common.nix { inherit python3Packages; version = "2.0.0-unstable-2024-05-25"; version = "2.2.0-unstable-2024-12-02"; src = fetchFromGitHub { owner = "beetbox"; repo = "beets"; rev = "2130404217684f22f36de00663428602b3f96d84"; hash = "sha256-trqF6YVBcv+i5H4Ez3PKnRQ6mV2Ly/cw3UJC7pl19og="; rev = "f92c0ec8b14fbd59e58374fd123563123aef197b"; hash = "sha256-jhwXRgUUQJgQ/PLwvY1UfHCJ9UC8DcdBpE/janao0RM="; }; extraPatches = [ # Bash completion fix for Nix Loading @@ -55,5 +54,6 @@ lib.makeExtensible (self: { alternatives = callPackage ./plugins/alternatives.nix { beets = self.beets-minimal; }; copyartifacts = callPackage ./plugins/copyartifacts.nix { beets = self.beets-minimal; }; extrafiles = callPackage ./plugins/extrafiles.nix { beets = self.beets-minimal; }; extrafiles = throw "extrafiles is unmaintained since 2020 and broken since beets 2.0.0"; })
pkgs/tools/audio/beets/plugins/alternatives.nix +12 −4 Original line number Diff line number Diff line { lib, fetchFromGitHub, beets, python3Packages }: { lib, fetchFromGitHub, beets, python3Packages, }: python3Packages.buildPythonApplication rec { pname = "beets-alternatives"; Loading Loading @@ -27,10 +32,13 @@ python3Packages.buildPythonApplication rec { export HOME=$(mktemp -d) ''; meta = with lib; { meta = { description = "Beets plugin to manage external files"; homepage = "https://github.com/geigerzaehler/beets-alternatives"; maintainers = with maintainers; [ aszlig lovesegfault ]; license = licenses.mit; maintainers = with lib.maintainers; [ aszlig lovesegfault ]; license = lib.licenses.mit; }; }
pkgs/tools/audio/beets/plugins/copyartifacts.nix +10 −1 Original line number Diff line number Diff line { lib, fetchFromGitHub, beets, python3Packages }: { lib, fetchFromGitHub, beets, python3Packages, }: python3Packages.buildPythonApplication rec { pname = "beets-copyartifacts"; Loading @@ -15,6 +20,10 @@ python3Packages.buildPythonApplication rec { sed -i -e '/install_requires/,/\]/{/beets/d}' setup.py sed -i -e '/namespace_packages/d' setup.py printf 'from pkgutil import extend_path\n__path__ = extend_path(__path__, __name__)\n' >beetsplug/__init__.py # beets v2.1.0 compat # <https://github.com/beetbox/beets/commit/0e87389994a9969fa0930ffaa607609d02e286a8> sed -i -e 's/util\.py3_path/os.fsdecode/g' tests/_common.py ''; pytestFlagsArray = [ "-r fEs" ]; Loading