{ config, lib, ... }: 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.sessionVariables.BEETSDIR = beetsdir; programs = { beets = { enable = true; settings = { library = "${beetsdir}/library.db"; directory = config.userDirs.music; plugins = "badfiles edit fetchart info mbsync scrub"; 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"; }; scrub.auto = true; }; }; bash.shellAliases.beet = "${config.hm.programs.beets.package}/bin/beet --config ${config.dirs.config}/beets/config.yaml"; }; }; }; }