{ pkgs, ... }:
with builtins;
{
  home-manager.users.sevy = {
    systemd.user.services."rsync-term@" = {
      Unit = {
        Description = "rsync terminal for: %I";
        After = [ "graphical-session.target" ];
        StopWhenUnneeded = false;
      };
      Service = {
        Type = "simple";
        ExecStart = pkgs.writeShellScript "rsync-term" ''
          FS_LABEL=$1
          set -eux
          ${pkgs.xterm}/bin/xterm -fg white -bg black -fa Monospace -fs 6 \
            -title "rsync backup to: $FS_LABEL" -e "journalctl --user -f -o short \
            -u rsync-backup@$FS_LABEL"
        '' + " %I";
      };
    };
    systemd.user.services."rsync-backup@" = {
      Unit = {
        Description = "rsync backup: %i";
        Wants = [ "rsync-term@%i.service" ];
      };
      Service = {
        Type = "oneshot";
        SyslogIdentifier = "rsync-backup@%i";
        ExecStart = pkgs.writeShellScript "rsync-backup" ''
          FS_LABEL=$1
          set -eux
          DEVICE=$(${pkgs.util-linux}/bin/blkid -l -o device -t LABEL="$FS_LABEL")
          while ! ${pkgs.glib}/bin/gio mount --device "$DEVICE"
            do test ! -d /run/media/sevy/"$FS_LABEL" || break
               sleep 1
            done
          ${pkgs.rsync}/bin/rsync --verbose --itemize-changes \
            --partial --recursive --times \
            --compress-level=0 --delete --delete-before \
            /run/media/sevy/"$FS_LABEL" \
            ~sevy/Documents/
          systemctl --user --no-block stop rsync-term@"$FS_LABEL"
        '' + " %I";
      };
    };
  };
}