aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-08-11 13:27:35 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-08-11 13:27:35 +0200
commit4f6baddf4fb3c3956847b99efcf2f2ae41fe3a01 (patch)
treedef9be26f3edb4e8593d3f4d06427c1b4f0768d5 /modules
parentrefactor(home/beets): Move the plugins out into separate directories (diff)
downloadnixos-config-4f6baddf4fb3c3956847b99efcf2f2ae41fe3a01.zip
feat(home/beets): Init the xtractor plugin
Diffstat (limited to 'modules')
-rw-r--r--modules/home/conf/beets/default.nix8
-rw-r--r--modules/home/conf/beets/plugins.nix3
-rw-r--r--modules/home/conf/beets/plugins/default.nix1
-rw-r--r--modules/home/conf/beets/plugins/xtractor/default.nix95
4 files changed, 106 insertions, 1 deletions
diff --git a/modules/home/conf/beets/default.nix b/modules/home/conf/beets/default.nix
index 58008bd6..e5e45179 100644
--- a/modules/home/conf/beets/default.nix
+++ b/modules/home/conf/beets/default.nix
@@ -2,6 +2,7 @@
pkgs,
lib,
config,
+ beetsExtraPlugins,
...
}: let
plugins = import ./plugins.nix;
@@ -13,7 +14,12 @@ in {
programs.beets = {
enable = true;
package = pkgs.beets.override {
- pluginOverrides = {};
+ pluginOverrides = {
+ xtractor = {
+ enable = true;
+ propagatedBuildInputs = [beetsExtraPlugins.xtractor];
+ };
+ };
};
settings = {
diff --git a/modules/home/conf/beets/plugins.nix b/modules/home/conf/beets/plugins.nix
index 7ab6819a..bea2fefe 100644
--- a/modules/home/conf/beets/plugins.nix
+++ b/modules/home/conf/beets/plugins.nix
@@ -11,6 +11,9 @@
# Help submitting stuff to music brainz
"mbsubmit"
+ # Extract things from the music file
+ "xtractor"
+
# Calculate replay gain
"replaygain"
diff --git a/modules/home/conf/beets/plugins/default.nix b/modules/home/conf/beets/plugins/default.nix
index 9fc04a8d..3bea5ea8 100644
--- a/modules/home/conf/beets/plugins/default.nix
+++ b/modules/home/conf/beets/plugins/default.nix
@@ -11,5 +11,6 @@
./play
./replaygain
./smartplaylist
+ ./xtractor
];
}
diff --git a/modules/home/conf/beets/plugins/xtractor/default.nix b/modules/home/conf/beets/plugins/xtractor/default.nix
new file mode 100644
index 00000000..23f53add
--- /dev/null
+++ b/modules/home/conf/beets/plugins/xtractor/default.nix
@@ -0,0 +1,95 @@
+{
+ lib,
+ pkgs,
+ config,
+ ...
+}: {
+ programs.beets.settings = {
+ xtractor = {
+ # This option is not yet implemented, thus requiring the hook
+ auto = true;
+
+ dry-run = false;
+ # Writes the bpm key to the media files
+ write = true;
+ threads = 0;
+ # Also run for files, which already have the required keys
+ force = true;
+ quiet = false;
+ keep_output = true;
+ keep_profiles = true;
+ output_path = "${config.xdg.dataHome}/beets/xtactor";
+ essentia_extractor = "${lib.getExe pkgs.essentia-extractor}";
+ extractor_profile = {
+ highlevel = {
+ svm_models = let
+ m = pkgs.extraBeetsPlugins.xtractor.modules;
+ in [
+ "${m}/danceability.history"
+ "${m}/danceability.history.param"
+ "${m}/danceability.history.results.html"
+ "${m}/gender.history"
+ "${m}/gender.history.param"
+ "${m}/gender.history.results.html"
+ "${m}/genre_dortmund.history"
+ "${m}/genre_dortmund.history.param"
+ "${m}/genre_dortmund.history.results.html"
+ "${m}/genre_electronic.history"
+ "${m}/genre_electronic.history.param"
+ "${m}/genre_electronic.history.results.html"
+ "${m}/genre_rosamerica.history"
+ "${m}/genre_rosamerica.history.param"
+ "${m}/genre_rosamerica.history.results.html"
+ "${m}/genre_tzanetakis.history"
+ "${m}/genre_tzanetakis.history.param"
+ "${m}/genre_tzanetakis.history.results.html"
+ "${m}/ismir04_rhythm.history"
+ "${m}/ismir04_rhythm.history.param"
+ "${m}/ismir04_rhythm.history.results.html"
+ "${m}/mood_acoustic.history"
+ "${m}/mood_acoustic.history.param"
+ "${m}/mood_acoustic.history.results.html"
+ "${m}/mood_aggressive.history"
+ "${m}/mood_aggressive.history.param"
+ "${m}/mood_aggressive.history.results.html"
+ "${m}/mood_electronic.history"
+ "${m}/mood_electronic.history.param"
+ "${m}/mood_electronic.history.results.html"
+ "${m}/mood_happy.history"
+ "${m}/mood_happy.history.param"
+ "${m}/mood_happy.history.results.html"
+ "${m}/mood_party.history"
+ "${m}/mood_party.history.param"
+ "${m}/mood_party.history.results.html"
+ "${m}/mood_relaxed.history"
+ "${m}/mood_relaxed.history.param"
+ "${m}/mood_relaxed.history.results.html"
+ "${m}/mood_sad.history"
+ "${m}/mood_sad.history.param"
+ "${m}/mood_sad.history.results.html"
+ "${m}/moods_mirex.history"
+ "${m}/moods_mirex.history.param"
+ "${m}/moods_mirex.history.results.html"
+ "${m}/timbre.history"
+ "${m}/timbre.history.param"
+ "${m}/timbre.history.results.html"
+ "${m}/tonal_atonal.history"
+ "${m}/tonal_atonal.history.param"
+ "${m}/tonal_atonal.history.results.html"
+ "${m}/voice_instrumental.history"
+ "${m}/voice_instrumental.history.param"
+ "${m}/voice_instrumental.history.results.html"
+ ];
+ };
+ };
+ };
+ hook = {
+ hooks = [
+ {
+ event = "import";
+ command = "echo Remember to run 'beet xtractor'!";
+ }
+ ];
+ };
+ };
+}