feat: add bandcamp-collection-downloader

Signed-off-by: Lander Van den Bulcke <landervandenbulcke@gmail.com>
This commit is contained in:
Lander Van den Bulcke 2025-09-22 14:55:15 +02:00
parent 95bf1530f5
commit 7d1a057641
Signed by: lander
GPG key ID: 0142722B4B0C536F
5 changed files with 71 additions and 2 deletions

View file

@ -0,0 +1,56 @@
{
config,
lib,
pkgs,
...
}:
with lib;
let
cfg = config.services.bandcamp-collection-downloader;
in
{
options.services.bandcamp-collection-downloader = {
enable = mkEnableOption "Bandcamp Collection Downloader";
bandcampUser = mkOption {
type = types.str;
};
cookiesFile = mkOption {
type = types.path;
};
downloadFolder = mkOption {
type = types.str;
default = "/data/bandcamp";
};
audioFormat = mkOption {
type = types.str;
default = "flac";
};
};
config = mkIf cfg.enable {
users.users.bandcampcd = {
enable = true;
isSystemUser = true;
group = "bandcampcd";
};
users.groups.bandcampcd = { };
systemd.services."bandcamp-collection-downloader" = {
description = "Synchronize Bandcamp library";
requires = [ "network-online.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = pkgs.writers.writeBash "bandcamp-sync" ''
${pkgs.bandcamp-collection-downloader}/bin/bandcamp-collection-downloader ${cfg.bandcampUser} \
--cookies-file ${cfg.cookiesFile} \
--download-folder ${cfg.downloadFolder} \
--audio-format ${cfg.audioFormat}
'';
};
};
};
}

View file

@ -1,5 +1,6 @@
{
# my-module = import ./my-module.nix
bandcamp-collection-downloader = import ./bandcamp-collection-downloader.nix;
namespaced-vpn = import ./namespaced-vpn.nix;
storagebox = import ./storagebox.nix;
wrtagweb = import ./wrtagweb.nix;