about summary refs log tree commit diff
path: root/home/beets/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home/beets/default.nix')
-rw-r--r--home/beets/default.nix74
1 files changed, 45 insertions, 29 deletions
diff --git a/home/beets/default.nix b/home/beets/default.nix
index c88fd85..0d7a3b9 100644
--- a/home/beets/default.nix
+++ b/home/beets/default.nix
@@ -1,5 +1,17 @@
 { config, lib, pkgs, ... }:
-let cfg = config.my.home.beets;
+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; {
@@ -11,36 +23,40 @@ in
     };
   };
 
-  config.programs.beets = lib.mkIf cfg.enable {
-    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; };
+  config = lib.mkIf cfg.enable {
+    home.packages = with pkgs; [ bc-to-beet ];
 
-      lastgenre = {
-        auto = false;
-        canonical = true;
-        fallback = "unknown";
-        force = true;
-        prefer_specific = true;
-      };
+    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";
+        fetchart = {
+          cautious = true;
+          sources = "filesystem coverart itunes amazon lastfm wikipedia";
+        };
       };
     };
   };