summaryrefslogtreecommitdiff
path: root/modules/nixos/beets.nix
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2023-03-11 12:51:58 +0300
committerAzat Bahawi <azat@bahawi.net>2023-03-11 12:51:58 +0300
commit0ef23d4501592a192ba020a2ac34abb1a3d8fc5e (patch)
tree17f0377d71f7c645acf8502c769a0ade76cbc901 /modules/nixos/beets.nix
parente40f7d991353ad70984afdf67b25c049190c56bd (diff)
2023-03-11
Diffstat (limited to 'modules/nixos/beets.nix')
-rw-r--r--modules/nixos/beets.nix73
1 files changed, 73 insertions, 0 deletions
diff --git a/modules/nixos/beets.nix b/modules/nixos/beets.nix
new file mode 100644
index 0000000..83cbff1
--- /dev/null
+++ b/modules/nixos/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";
+ };
+ };
+ };
+}