1
Files
flake-nixinator/home/modules/beets/default.nix

85 lines
2.6 KiB
Nix

{
config,
nixosConfig,
lib,
mylib,
pkgs,
...
}: let
inherit (config.modules) beets;
in {
options.modules.beets = import ./options.nix {inherit lib mylib;};
config = lib.mkIf beets.enable {
programs.beets = {
enable = true;
mpdIntegration = {
host = "127.0.0.1";
port = config.services.mpd.network.port;
enableUpdate = true;
enableStats = true;
};
# https://beets.readthedocs.io/en/stable/reference/config.html
settings = {
directory = "${config.home.homeDirectory}/Music";
library = "${config.home.homeDirectory}/Music/.beets/library.db";
threaded = true;
art_filename = "cover";
ui = {
color = true;
};
import = {
write = true; # Write metadata to files
copy = false; # Copy files to the music directory when importing
move = true; # Move files to the music directory when importing
log = "${config.home.homeDirectory}/Music/.beetslog.txt";
};
paths = {
default = "$albumartist/$albumartist - $album/$track $title";
singleton = "0 Singles/$artist - $title"; # Single songs
comp = "1 Various/$album/$track $title";
};
plugins = [
"badfiles" # check audio file integrity
"duplicates"
"edit" # edit metadata in text editor
"fetchart" # pickup local cover art or search online
"fish" # beet fish generates ~/.config/fish/completions file
"lyrics" # fetch song lyrics
"replaygain" # write replaygain tags for automatic loudness adjustments
];
fetchart = {
auto = "yes";
sources = "filesystem coverart itunes amazon albumart"; # sources are queried in this order
};
lyrics = {
auto = "yes"; # only embeds lyrics into metadata, needed for jellyfin but useless for rmpc
synced = "yes"; # prefer synced lyrics if provided
};
replaygain = {
auto = "yes"; # analyze on import automatically
backend = "ffmpeg";
overwrite = true; # re-analyze files with existing replaygain tags on import
};
};
};
# Generate fish completions
# TODO: This doesn't work if ~/Music is mounted after the activation...
# home.activation = {
# beets-fish-completions = lib.hm.dag.entryAfter ["writeBoundary"] ''
# echo "Generating beet completions for fish shell at ~/.config/fish/completions/beet.fish"
# beet fish
# '';
# };
};
}