aboutsummaryrefslogtreecommitdiffstats
path: root/modules/home.legacy/conf/beets
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--modules/home.legacy/conf/beets/default.nix68
-rw-r--r--modules/home.legacy/conf/beets/plugins.nix33
-rw-r--r--modules/home.legacy/conf/beets/plugins/badfiles/default.nix9
-rw-r--r--modules/home.legacy/conf/beets/plugins/default.nix14
-rw-r--r--modules/home.legacy/conf/beets/plugins/duplicates/default.nix9
-rw-r--r--modules/home.legacy/conf/beets/plugins/fuzzy/default.nix6
-rw-r--r--modules/home.legacy/conf/beets/plugins/ihate/default.nix10
-rw-r--r--modules/home.legacy/conf/beets/plugins/inline/default.nix52
-rw-r--r--modules/home.legacy/conf/beets/plugins/lastgenre/default.nix7
-rw-r--r--modules/home.legacy/conf/beets/plugins/lyrics/default.nix9
-rw-r--r--modules/home.legacy/conf/beets/plugins/mbsubmit/default.nix9
-rw-r--r--modules/home.legacy/conf/beets/plugins/play/default.nix14
-rw-r--r--modules/home.legacy/conf/beets/plugins/replaygain/default.nix9
-rw-r--r--modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix33
-rw-r--r--modules/home.legacy/conf/beets/plugins/xtractor/default.nix9
-rw-r--r--modules/home.legacy/conf/beets/replace_override.yaml10
16 files changed, 133 insertions, 168 deletions
diff --git a/modules/home.legacy/conf/beets/default.nix b/modules/home.legacy/conf/beets/default.nix
index e0421a9d..43d6bff9 100644
--- a/modules/home.legacy/conf/beets/default.nix
+++ b/modules/home.legacy/conf/beets/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
pkgs,
lib,
@@ -5,7 +14,6 @@
...
}: let
plugins = import ./plugins.nix {};
-
# TODO: Enable xtractor again <2025-03-29>
# package = pkgs.beets.override {
# pluginOverrides = {
@@ -14,7 +22,6 @@
# propagatedBuildInputs = [pkgs.beetsExtraPlugins.xtractor];
# };
# };
- package = pkgs.beets;
in {
imports = [
./plugins
@@ -22,7 +29,14 @@ in {
programs.beets = {
enable = true;
- inherit package;
+ package = pkgs.python3.pkgs.toPythonApplication (pkgs.python3.pkgs.beets.override
+ {
+ ffmpeg = pkgs.ffmpeg-headless;
+ keyfinder-cli = pkgs.keyfinder-cli.override {
+ ffmpeg =
+ pkgs.ffmpeg-headless;
+ };
+ });
settings = {
library = "${config.xdg.dataHome}/beets/library.db";
@@ -32,9 +46,12 @@ in {
color = true;
};
- include = [
- "./replace_override.yaml"
- ];
+ replace = {
+ "[/]" = "\\\\";
+ "[\\x00-\\x1f]" = "";
+ "\\s+$" = "";
+ "^\\s+" = "";
+ };
import = {
# move, instead of copying or linking the files
@@ -53,15 +70,21 @@ in {
};
paths = let
- j = lib.strings.concatStringsSep "/";
+ join = lib.strings.concatStringsSep "/";
in {
- default = j ["[Default]" "$genre" "$first_artist" "$album ($albumtype)" "$track $title"];
- "albumtype:live" = j ["[Live]" "$genre" "$first_artist" "$album ($albumtype)" "$track $title"];
+ "albumtype:live" = join [
+ "[Live, please delete]"
+ "$genre"
+ "$primary_artist" # (= $albumartists[0]). From inline plugin
+ "$album ($albumtype)"
+ "$track $title"
+ ];
- "albumtype:album" = j ["Music" "$genre" "$first_artist" "$album ($albumtype)" "$track $title"];
- "albumtype::(Single|EP)" = j ["Music" "$genre" "$first_artist_singleton" "$album ($albumtype)" "$track $title"];
- "albumtype:compilation" = j ["Complilations" "$genre" "Various Artists" "$album ($albumtype)" "$track $title"];
- "albumtype:soundtrack" = j ["Soundtracks" "$genre" "$first_artist" "$album" "$track $title"];
+ default = join [
+ "$primary_artist" # (= $albumartists[0]). From inline plugin
+ "$album%aunique{}"
+ "$track $title"
+ ];
};
inherit plugins;
@@ -87,20 +110,17 @@ in {
};
mpdIntegration = {
- enableStats = true;
enableUpdate = true;
host = config.home.sessionVariables.MPD_HOST;
};
};
- xdg.configFile."beets/replace_override.yaml".source = ./replace_override.yaml;
-
- # Use the json formatter instead of the YAML one, as the YAML formatter mangles the
- # longer python inline strings.
- # YAML is a superset of JSON.
- xdg.configFile."beets/config.yaml".source =
- lib.mkForce
- ((pkgs.formats.json {}).generate
- "beets-config"
- config.programs.beets.settings);
+ # # Use the json formatter instead of the YAML one, as the YAML formatter mangles the
+ # # longer python inline strings.
+ # # YAML is a superset of JSON.
+ # xdg.configFile."beets/config.yaml".source =
+ # lib.mkForce
+ # ((pkgs.formats.json {}).generate
+ # "beets-config"
+ # config.programs.beets.settings);
}
diff --git a/modules/home.legacy/conf/beets/plugins.nix b/modules/home.legacy/conf/beets/plugins.nix
index 9500364b..aaeab843 100644
--- a/modules/home.legacy/conf/beets/plugins.nix
+++ b/modules/home.legacy/conf/beets/plugins.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{...}:
# NOTE: This list is here and not split over the various plugin dirs, as we need a way to
# specify the order plugins are loaded in. <2024-08-11>
@@ -8,39 +17,25 @@
# <2024-08-07>
# "scrub"
- # Help submitting stuff to music brainz
- "mbsubmit"
-
# Extract things from the music file
# "xtractor"
+ "musicbrainz"
+
# Calculate replay gain
"replaygain"
# Check for bad files
"badfiles"
- # Alows to use inline python for parsing tags
- "inline"
-
- # Support player integration
- "play"
-
# Show tags on files/queries
"info"
- # Create playlist from `play_count`/`skip_count` (gathered by the `mpdstats`
- # plugin)
- # Note that this should come _before_ the `mpdupdate` plugin, to ensure that
- # `mpdupgate` can propagate changed playlist to `mpd`.
- "smartplaylist"
+ "inline"
# Warn, when importing a matching item
"ihate"
- # Allow fuzzy searching
- "fuzzy"
-
# Filter out duplicates
"duplicates"
@@ -50,9 +45,6 @@
# Download album art
"fetchart"
- # Fetches tags from `last.fm` and adds them as genres to imported music
- "lastgenre"
-
# Run commands on events
"hook"
@@ -62,6 +54,5 @@
# Allow beets to understand deezer id's
# "deezer"
- "mpdstats" # Transfer MPD stats to beets
"mpdupdate" # Update MPD database on import
]
diff --git a/modules/home.legacy/conf/beets/plugins/badfiles/default.nix b/modules/home.legacy/conf/beets/plugins/badfiles/default.nix
index 33884785..505ecb5b 100644
--- a/modules/home.legacy/conf/beets/plugins/badfiles/default.nix
+++ b/modules/home.legacy/conf/beets/plugins/badfiles/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
lib,
pkgs,
diff --git a/modules/home.legacy/conf/beets/plugins/default.nix b/modules/home.legacy/conf/beets/plugins/default.nix
index a0b44e3c..2b2bd607 100644
--- a/modules/home.legacy/conf/beets/plugins/default.nix
+++ b/modules/home.legacy/conf/beets/plugins/default.nix
@@ -1,16 +1,20 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{...}: {
imports = [
./badfiles
./duplicates
- ./fuzzy
./ihate
./inline
- ./lastgenre
./lyrics
- ./mbsubmit
- ./play
./replaygain
- ./smartplaylist
# ./xtractor
];
}
diff --git a/modules/home.legacy/conf/beets/plugins/duplicates/default.nix b/modules/home.legacy/conf/beets/plugins/duplicates/default.nix
index c8a6c108..6ab08d55 100644
--- a/modules/home.legacy/conf/beets/plugins/duplicates/default.nix
+++ b/modules/home.legacy/conf/beets/plugins/duplicates/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{...}: {
programs.beets.settings.duplicates = {
keys = ["acoustid_fingerprint"];
diff --git a/modules/home.legacy/conf/beets/plugins/fuzzy/default.nix b/modules/home.legacy/conf/beets/plugins/fuzzy/default.nix
deleted file mode 100644
index b86b3a20..00000000
--- a/modules/home.legacy/conf/beets/plugins/fuzzy/default.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{...}: {
- programs.beets.settings.fuzzy = {
- # The prefix denoting that a search should be run in fuzzy mode
- prefix = ".";
- };
-}
diff --git a/modules/home.legacy/conf/beets/plugins/ihate/default.nix b/modules/home.legacy/conf/beets/plugins/ihate/default.nix
index 145f5f8b..2356ec3b 100644
--- a/modules/home.legacy/conf/beets/plugins/ihate/default.nix
+++ b/modules/home.legacy/conf/beets/plugins/ihate/default.nix
@@ -1,7 +1,17 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{...}: {
programs.beets.settings.ihate = {
warn = [
"title:commentary"
+ "title:live"
"albumtype:live"
];
};
diff --git a/modules/home.legacy/conf/beets/plugins/inline/default.nix b/modules/home.legacy/conf/beets/plugins/inline/default.nix
index 0dda8cfc..8dccdc20 100644
--- a/modules/home.legacy/conf/beets/plugins/inline/default.nix
+++ b/modules/home.legacy/conf/beets/plugins/inline/default.nix
@@ -1,42 +1,16 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{...}: {
- programs.beets.settings = {
- item_fields = {
- # Taken from https://github.com/trapd00r/configs/blob/4f3dada5700846cca6c2869e6fa6b3c795b87b67/beets/config.yaml
- first_artist =
- /*
- python
- */
- ''
- # import an album to another artists directory, like:
- # Tom Jones │1999│ Burning Down the House [Single, CD, FLAC]
- # to The Cardigans/+singles/Tom Jones & the Cardigans │1999│ Burning Down the House [Single, CD, FLAC]
- # https://github.com/beetbox/beets/discussions/4012#discussioncomment-1021414
- # beet import --set myartist='The Cardigans'
- # we must first check to see if myartist is defined, that is, given on
- # import time, or we raise an NameError exception.
- try:
- myartist
- except NameError:
- import re
- return re.split(',|\\s+(feat(.?|uring)|&|(Vs|Ft).)', albumartist, 1, flags=re.IGNORECASE)[0]
- else:
- return myartist
- '';
-
- first_artist_singleton =
- /*
- python
- */
- ''
- try:
- myartist
- except NameError:
- import re
- return re.split(',|\\s+(feat(.?|uring)|&|(Vs|Ft).)', artist, 1, flags=re.IGNORECASE)[0]
- else:
- return myartist
- '';
- };
- album_fields = {};
+ programs.beets.settings.item_fields = {
+ primary_artist =
+ # python
+ ''dict(enumerate(albumartists)).get(0, artist)'';
};
}
diff --git a/modules/home.legacy/conf/beets/plugins/lastgenre/default.nix b/modules/home.legacy/conf/beets/plugins/lastgenre/default.nix
deleted file mode 100644
index d10ca49f..00000000
--- a/modules/home.legacy/conf/beets/plugins/lastgenre/default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{...}: {
- programs.beets.settings.lastgenre = {
- prefer_specific = false;
- # Lookup the track, not the album
- source = "track";
- };
-}
diff --git a/modules/home.legacy/conf/beets/plugins/lyrics/default.nix b/modules/home.legacy/conf/beets/plugins/lyrics/default.nix
index 80544aea..4d566f0b 100644
--- a/modules/home.legacy/conf/beets/plugins/lyrics/default.nix
+++ b/modules/home.legacy/conf/beets/plugins/lyrics/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{...}: {
programs.beets.settings.lyrics = {
# Always fetch lyrics (and update them, if some were found)
diff --git a/modules/home.legacy/conf/beets/plugins/mbsubmit/default.nix b/modules/home.legacy/conf/beets/plugins/mbsubmit/default.nix
deleted file mode 100644
index b70f1c63..00000000
--- a/modules/home.legacy/conf/beets/plugins/mbsubmit/default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- lib,
- pkgs,
- ...
-}: {
- programs.beets.settings.mbsubmit = {
- picard_path = lib.getExe pkgs.picard;
- };
-}
diff --git a/modules/home.legacy/conf/beets/plugins/play/default.nix b/modules/home.legacy/conf/beets/plugins/play/default.nix
deleted file mode 100644
index 635848c0..00000000
--- a/modules/home.legacy/conf/beets/plugins/play/default.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- lib,
- pkgs,
- config,
- ...
-}: {
- programs.beets.settings.play = {
- command = "${lib.getExe pkgs.mpc} $args add";
- relative_to = config.services.mpd.musicDirectory;
-
- # Run the command with the returned paths as arguments
- raw = true;
- };
-}
diff --git a/modules/home.legacy/conf/beets/plugins/replaygain/default.nix b/modules/home.legacy/conf/beets/plugins/replaygain/default.nix
index 611f3799..dd176541 100644
--- a/modules/home.legacy/conf/beets/plugins/replaygain/default.nix
+++ b/modules/home.legacy/conf/beets/plugins/replaygain/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{...}: {
programs.beets.settings = {
replaygain = {
diff --git a/modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix b/modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix
deleted file mode 100644
index b55c487c..00000000
--- a/modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{config, ...}: {
- programs.beets.settings.smartplaylist = {
- relative_to = config.services.mpd.musicDirectory;
- playlist_dir = config.services.mpd.playlistDirectory;
- forward_slash = false;
-
- # Show the real m3u file paths, when running `--pretend`
- pretend_paths = true;
-
- playlists = [
- {
- name = "artists-$first_artist.m3u";
- query = "";
- }
- {
- name = "ratings-good.m3u";
- query = "rating:0.7..1.0";
- }
- {
- name = "ratings-mediocre.m3u";
- query = "rating:0.4..0.7";
- }
- {
- name = "ratings-bad.m3u";
- query = "rating:0.0..0.4";
- }
- {
- name = "not_played.m3u";
- query = "-play_count: artist:";
- }
- ];
- };
-}
diff --git a/modules/home.legacy/conf/beets/plugins/xtractor/default.nix b/modules/home.legacy/conf/beets/plugins/xtractor/default.nix
index d4582c5f..0a54385e 100644
--- a/modules/home.legacy/conf/beets/plugins/xtractor/default.nix
+++ b/modules/home.legacy/conf/beets/plugins/xtractor/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
lib,
pkgs,
diff --git a/modules/home.legacy/conf/beets/replace_override.yaml b/modules/home.legacy/conf/beets/replace_override.yaml
deleted file mode 100644
index 23d6ea55..00000000
--- a/modules/home.legacy/conf/beets/replace_override.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
----
-replace:
- '[\\/]': _
- '^\.': _
- '[\x00-\x1f]': _
- '[<>:"\?\*\|]': _
- '\.$': _
- '\s+$': ''
- '^\s+': ''
- '^-': _