summaryrefslogtreecommitdiff
path: root/modules/common/beets.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/common/beets.nix')
-rw-r--r--modules/common/beets.nix73
1 files changed, 73 insertions, 0 deletions
diff --git a/modules/common/beets.nix b/modules/common/beets.nix
new file mode 100644
index 0000000..83cbff1
--- /dev/null
+++ b/modules/common/beets.nix
@@ -0,0 +1,73 @@
+{
+ 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";
+ };
+ };
+ };
+}