mirror of
https://github.com/sstent/vmimages.git
synced 2025-12-06 06:01:51 +00:00
209 lines
6.9 KiB
Nix
209 lines
6.9 KiB
Nix
{
|
||
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";
|
||
};
|
||
};
|
||
};
|
||
};
|
||
}
|