{ self, lib, pkgs, ... }: let audiocomp = pkgs.writeShellApplication { name = "audiocomp"; runtimeInputs = [ pkgs.parallel pkgs.rsync pkgs.openssh ]; text = let remoteDir = self.nixosConfigurations.abacus.config.services.navidrome.settings.MusicFolder; enc = pkgs.writeShellApplication { name = "enc"; runtimeInputs = [ pkgs.opusTools ]; text = '' src=$1 dst=$src dst=''${dst%.flac}.opus dst=/srv/compmusic/''${dst#/srv/music/} if [[ -f "$dst" ]]; then exit fi mkdir --parents -- "$(dirname -- "$dst")" echo "encoding ''${src@Q} -> ''${dst@Q}" >&2 exec opusenc --quiet --bitrate 96.000 -- "$src" "$dst" ''; }; clean = pkgs.writeShellApplication { name = "clean"; text = '' del=$1 chk=$del chk=''${chk%.opus}.flac chk=/srv/music/''${chk#/srv/compmusic/} if [[ ! -f "$chk" ]]; then echo "deleting ''${del@Q}" >&2 rm --force -- "$del" fi ''; }; in '' shopt -s globstar nullglob find /srv/music -name '*.flac' -print0 | parallel --null -- ${lib.getExe enc} {} find /srv/compmusic -name '*.flac' -exec ${clean} {} \; echo syncing >&2 rsync --verbose --verbose --archive --update --delete --mkpath --exclude lost+found \ --rsh 'ssh -i /etc/ssh/ssh_host_ed25519_key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' \ -- /srv/compmusic/ root@wrz.one:${remoteDir} ''; }; in { systemd.services.audiocomp = { description = "Compress and sync music"; serviceConfig = { Type = "oneshot"; User = "root"; Group = "root"; ExecStart = lib.getExe audiocomp; }; }; systemd.timers.audiocomp = { description = "Compress and sync music daily"; wantedBy = ["timers.target"]; timerConfig = { OnCalendar = "*-*-* 03:00:00"; Persistent = true; Unit = "audiocomp.service"; }; }; }