diff --git a/hosts/nixos/bluepill/services/ipod-sync.nix b/hosts/nixos/bluepill/services/ipod-sync.nix new file mode 100644 index 0000000..9b15282 --- /dev/null +++ b/hosts/nixos/bluepill/services/ipod-sync.nix @@ -0,0 +1,34 @@ +{pkgs, ...}: let + ipodUuid = "A751-935A"; +in { + services.udev.extraRules = '' + ACTION=="add", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", ENV{ID_FS_UUID}=="${ipodUuid}", TAG+="systemd", ENV{SYSTEMD_WANTS}+="ipod-sync.service" + ''; + + systemd.services.ipod-sync = { + description = "Sync music to iPod"; + + serviceConfig = { + Type = "oneshot"; + RuntimeDirectory = "ipod"; + TimeoutStartSec = "4h"; + }; + + script = '' + set -eu + + ${pkgs.util-linux}/bin/mount \ + /dev/disk/by-uuid/${ipodUuid} \ + /run/ipod + + trap '${pkgs.util-linux}/bin/umount /run/ipod' EXIT + + ${pkgs.rsync}/bin/rsync \ + -rt \ + --delete \ + --modify-window=1 \ + /srv/media/music/ \ + /run/ipod/Sync/ + ''; + }; +}