about summary refs log tree commit diff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--home/beets/default.nix74
-rw-r--r--home/scripts/bc-to-nas.nix14
-rw-r--r--home/scripts/default.nix2
3 files changed, 60 insertions, 30 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";
+        };
       };
     };
   };
diff --git a/home/scripts/bc-to-nas.nix b/home/scripts/bc-to-nas.nix
new file mode 100644
index 0000000..efa95d2
--- /dev/null
+++ b/home/scripts/bc-to-nas.nix
@@ -0,0 +1,14 @@
+{ lib, pkgs, ... }:
+let
+  bc-to-nas = pkgs.writeShellScriptBin "bc-to-nas" ''
+    set -euo pipefail
+
+    ALBUM_PATH="''${1}"
+    ALBUM_NAME=$(basename "''${ALBUM_PATH}")
+    NAS=$(${pkgs.tailscale}/bin/tailscale status --json | ${pkgs.jq}/bin/jq -r '.Peer | map(select(.HostName == "tahoe"))[0].TailscaleIPs[0]')
+
+    scp "''${ALBUM_PATH}" "''${NAS}:~/import/album.zip"
+    ssh "''${NAS}" bc-to-beet ~/import/album.zip
+  '';
+in
+{ config = { home.packages = with pkgs; [ bc-to-nas ]; }; }
diff --git a/home/scripts/default.nix b/home/scripts/default.nix
index bc19e44..741bade 100644
--- a/home/scripts/default.nix
+++ b/home/scripts/default.nix
@@ -1,5 +1,5 @@
 { ... }:
 
 {
-  imports = [ ./perf-flamegraph.nix ];
+  imports = [ ./perf-flamegraph.nix ./bc-to-nas.nix ];
 }