{ config, lib, pkgs, ... }: let cfg = config.my.home.beets; bc-to-beet = pkgs.writeShellScriptBin "bc-to-beet" '' 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 { options.my.home.beets = with lib; { enable = mkEnableOption "beets configuration"; musicDirectory = mkOption { type = types.str; example = "/home/fcuny/media/music"; description = "path to the music directory"; }; }; config = lib.mkIf cfg.enable { home.packages = with pkgs; [ bc-to-beet ]; 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"; }; }; }; }; }