{ config, pkgs, lib, ... }: with lib; let cfg = config.custom.beets; in { options.custom.beets = { enable = mkOption { type = types.bool; default = false; description = "Enable Beets"; }; }; config = mkIf cfg.enable { home.packages = [ pkgs.ffmpeg # for replaygain #pkgs.beets-bpmanalyser #BPManayser ]; sops = { secrets.discogs_json = { path = "${config.xdg.configHome}/beets/discogs_token.json"; }; }; programs.beets = { enable = true; package = pkgs.beets.override { pluginOverrides = { originquery = { enable = true; propagatedBuildInputs = [pkgs.beets-originquery]; }; bpmanalyser = { enable = true; #propagatedBuildInputs = [pkgs.beets-bpmanalyser pkgs.python3Packages.numpy pkgs.python3Packages.aubio pkgs.python3Packages.pydub]; propagatedBuildInputs = [ pkgs.beets-bpmanalyser ] ++ (with pkgs.python3Packages; [numpy aubio pydub]); }; }; }; settings = { album_fields = { artist_grouping = '' albumartist_dev = ["devin townsend", "devin townsend project","punky brüster","strapping young lad"] DevinFolder = "_Devin Townsend Projects" if albumartist.lower() in albumartist_dev: return DevinFolder albumartist_les = ["primus", "les claypool","les claypool and the holy mackerel","les claypool’s duo de twang","oysterhead","colonel claypool’s bucket of bernie brains","the les claypool frog brigade","the claypool lennon delirium"] LesFolder = "_Les Claypool Projects" if albumartist.lower() in albumartist_les: return LesFolder ''; atype = '' atypes = ['EP', 'Single','Live'] for atype in atypes: if atype.lower() == albumtype.lower(): return f' [{atype}]' ''; first_artist = "albumartist.split(', ',1)[0:1][0]"; }; albumtypes = { bracket = "[]"; ignore_va = "compilation"; types = [ {ep = "EP";} {single = "Single";} {soundtrack = "OST";} {live = "Live";} {compilation = "Anthology";} {remix = "Remix";} ]; }; aunique = { bracket = "[]"; disambiguators = "media"; keys = "albumartist album"; }; copyartifacts = {extensions = ".cue .log .jpg .jpeg .png .txt";}; directory = "/mnt/q/CleanMusic/"; embedart = {auto = true;}; extrafiles = { paths = { artworkdir = "$albumpath/Artwork"; "ext:cue" = "$albumpath/$disc_folder/Data/"; "ext:jpg" = "$albumpath/$disc_folder/"; "ext:log" = "$albumpath/$disc_folder/Data/"; }; patterns = { all = "*.*"; artworkdir = ["[sS]cans/" "[aA]rtwork/" "[aA]rt/" "[cC]over/"]; }; }; fetchart = { auto = true; sources = "filesystem coverart itunes amazon albumart fanarttv"; }; import = { autotag = true; bell = false; copy = true; languages = "en"; log = "~/.config/beets/beet.log"; move = false; write = true; }; item_fields = { isMultidisc = "1 if disctotal > 1 else 0"; myBitDepth = "('' if bitdepth != 24 else '[24bit - '+ media + ']')"; myDisc = "('' if disctotal <= 1 else str(disc) + ' - ')"; mySongartist = "artist + ' - ' if artist != albumartist and artist != '' else ''"; }; library = "~/musiclibrary.db"; match = { max_rec = { album = "strong"; album_id = "strong"; albumdisambig = "strong"; artist = "strong"; catalognum = "strong"; country = "strong"; label = "strong"; media = "strong"; mediums = "strong"; missing_tracks = "medium"; source = "strong"; track_artist = "strong"; track_id = "strong"; track_index = "strong"; track_length = "strong"; track_title = "strong"; tracks = "strong"; unmatched_tracks = "medium"; year = "strong"; }; strong_rec_thresh = 5.0e-2; }; missing = { format_album = "$albumartist: ($year) $album $albumtype $atype"; format_item = "$albumartist - $album [$albumtype]$atype: $track/$tracktotal $title"; }; musicbrainz = { extra_tags = ["year" "catalognum" "country" "media" "label"]; pass = "7ANCLPczDNFn6Sf65vdZ"; user = "shapechecker"; }; original_date = true; originquery = { origin_file = "origin.yaml"; tag_patterns = { media = ''$.Media''; year = ''$."Edition year"''; label = ''$."Record label"''; catalognum = ''$."Catalog number"''; albumdisambig = ''$.Edition''; }; use_origin_on_conflict = true; }; paths = { "albumtype:soundtrack" = "Soundtracks/$albumartist - $album%aunique{} ($year)/$myDisc$track - $artist - $title"; comp = "Compilations/$albumartist/($year) $album%aunique{}/$myDisc$track - $artist - $title"; default = "%if{$artist_grouping,$artist_grouping/}$first_artist/$year - $album $atype%aunique{media}[%upper{$format}$bitdepth]%if{$media,[$media]}/%if{$isMultidisc,$disc - }$track - $mySongartist$title"; }; per_disc_numbering = true; plugins = [ "albumtypes" "duplicates" "fetchart" "rewrite" "missing" "chroma" "embedart" "inline" "discogs" "mbcollection" "replaygain" "info" "mbsync" "originquery" "bpmanalyser" ]; replaygain = { backend = "ffmpeg"; }; rewrite = { "artist Björk & Tríó Guðmundar Ingólfssonar" = "Björk"; "artist Brant Bjork and The Low Desert Punk Band" = "Brant Bjork"; "artist King Gizzard & The Lizard Wizard with Mild High Club" = "King Gizzard & The Lizard Wizard"; "artist Kyuss _ Queens of the Stone Age" = "Kyuss"; "artist Professor Elemental & Tom Caruana" = "Professor Elemental"; "artist Resin Dogs Feat Spikey Tee" = "Resin Dogs"; "artist Sepultura _ Exodus" = "Sepultura"; "artist The Knife in collaboration with Mount Sims and Planningtorock" = "The Knife"; "artist Unida _ Dozer" = "Unida"; }; }; }; }; }