diff options
-rw-r--r-- | home/beets/default.nix | 74 | ||||
-rw-r--r-- | home/scripts/bc-to-nas.nix | 14 | ||||
-rw-r--r-- | home/scripts/default.nix | 2 |
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 ]; } |