{ config, lib, pkgs, ... }: with lib; let cfg = config.nixfiles.modules.beets; in { options.nixfiles.modules.beets.enable = mkEnableOption "beets"; config = mkIf cfg.enable { hm = let beetsdir = "${config.dirs.data}/beets"; in { home = { activation.initialiseBeets = '' if [[ ! -d "${beetsdir}" ]]; then mkdir -p ${beetsdir} fi ''; sessionVariables.BEETSDIR = beetsdir; }; programs = { beets = { enable = true; package = pkgs.beets-unstable; settings = { library = "${beetsdir}/library.db"; directory = config.userDirs.music; plugins = concatStringsSep " " [ "badfiles" "edit" "fetchart" "info" "mbsync" "mpdupdate" "scrub" "zero" ]; original_date = true; import = { write = true; copy = true; move = false; bell = true; from_scratch = true; }; match = { preferred = { countries = [ "JP" "KR" "TW" "HK" "CN" "RU" "NL" "DE" "AT" "GB|UK" "CA" "AU" "NZ" "US" ]; original_year = true; }; }; edit = { albumfields = "album artist albumartist"; itemfields = "track title album artist albumartist day month year genre"; }; fetchart = { auto = true; cautious = true; cover_names = "cover Cover folder Folder art Art album Album front Front"; sources = "filesystem coverart itunes amazon albumart wikipedia"; high_resolution = true; }; scrub.auto = true; zero = { fields = "comments genre"; update_database = true; }; mpd = { host = "127.0.0.1"; port = 6600; }; }; }; bash.shellAliases.beet = "beet --config ${config.dirs.config}/beets/config.yaml"; }; }; }; }