diff options
Diffstat (limited to 'modules/home.legacy/conf/beets/default.nix')
-rw-r--r-- | modules/home.legacy/conf/beets/default.nix | 61 |
1 files changed, 40 insertions, 21 deletions
diff --git a/modules/home.legacy/conf/beets/default.nix b/modules/home.legacy/conf/beets/default.nix index 8d6277b7..2fec6881 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,6 +14,16 @@ ... }: let plugins = import ./plugins.nix {}; + + # TODO: Enable xtractor again <2025-03-29> + # package = pkgs.beets.override { + # pluginOverrides = { + # xtractor = { + # enable = true; + # propagatedBuildInputs = [pkgs.beetsExtraPlugins.xtractor]; + # }; + # }; + package = pkgs.beets; in { imports = [ ./plugins @@ -12,14 +31,7 @@ in { programs.beets = { enable = true; - package = pkgs.beets.override { - pluginOverrides = { - xtractor = { - enable = true; - propagatedBuildInputs = [pkgs.beetsExtraPlugins.xtractor]; - }; - }; - }; + inherit package; settings = { library = "${config.xdg.dataHome}/beets/library.db"; @@ -29,9 +41,12 @@ in { color = true; }; - include = [ - "./replace_override.yaml" - ]; + replace = { + "[/]" = "\\\\"; + "[\\x00-\\x1f]" = ""; + "\\s+$" = ""; + "^\\s+" = ""; + }; import = { # move, instead of copying or linking the files @@ -50,15 +65,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: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"]; + "albumtype:live" = join [ + "[Live, please delete]" + "$genre" + "$primary_artist" # (= $albumartists[0]). From inline plugin + "$album ($albumtype)" + "$track $title" + ]; + + default = join [ + "$primary_artist" # (= $albumartists[0]). From inline plugin + "$album%aunique{}" + "$track $title" + ]; }; inherit plugins; @@ -90,8 +111,6 @@ in { }; }; - 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. |