{ config, lib, pkgs, ... }: let bc-to-beet = pkgs.writeShellApplication { name = "bc-to-beet"; runtimeInputs = [ pkgs.beets ]; text = '' ALBUM_PATH="$1" ALBUM_NAME=$(basename "$ALBUM_PATH") mkdir -p ~/import rm -rf ~/import/tmp-bc unzip -d ~/import/tmp-bc ~/import/album.zip beet import ~/import/tmp-bc rm -rf ~/import/tmp-bc rm -rf ~/import/album.zip ''; }; in { imports = [ ./ytdlp.nix ]; home.packages = with pkgs; [ bc-to-beet flac abcde (pkgs.writers.writeDashBin "rip-flac" '' cd ~/import ${pkgs.abcde}/bin/abcde -Vx -G -a "cddb,read,encode,tag,move,clean" -o flac '') ]; programs.beets = { enable = true; settings = { directory = cfg.musicDirectory; plugins = "fromfilename discogs duplicates fetchart embedart badfiles lastgenre scrub"; paths = { default = "$albumartist/$album%aunique{}/$track $title"; singleton = "Singles/$artist/$title"; comp = "Compilations/$album%aunique{}/$track - $title"; "albumtype:soundtrack" = "Soundtracks/$album ($year)/$track $title"; }; import = { copy = true; move = true; }; va_name = "Various Artists"; embedart = { ifempty = true; }; lastgenre = { auto = false; canonical = true; fallback = "unknown"; force = true; prefer_specific = true; }; fetchart = { cautious = true; sources = "filesystem coverart itunes amazon lastfm wikipedia"; }; }; }; }