add rc and caching for rclone

This commit is contained in:
Sean Kovacs 2025-11-13 23:27:02 -05:00
commit 227a48500e
Signed by: sckova
GPG key ID: 00F325187C68651A

View file

@ -17,30 +17,42 @@
Unit = { Unit = {
Description = "Mount Synology NAS with Rclone and Home Manager."; Description = "Mount Synology NAS with Rclone and Home Manager.";
After = [ "tailscaled.service" ]; After = [ "tailscaled.service" ];
Wants = [ "tailscaled.service" ];
}; };
Service = { Service = {
Type = "notify"; Type = "simple";
ExecStartPre = '' # ExecStartPre = "${pkgs.writeShellScript "synology-prep" ''
if mountpoint -q %h/Synology; then # if mountpoint -q %h/Synology; then
/run/wrappers/bin/fusermount -uz %h/Synology # /run/wrappers/bin/fusermount -uz %h/Synology
fi # fi
${pkgs.coreutils}/bin/mkdir -p %h/Synology # ${pkgs.coreutils}/bin/mkdir -p %h/Synology
''; # ''}";
ExecStart = '' ExecStart = "${pkgs.writeShellScript "synology-mount" ''
#!/usr/bin/env bash
set -euo pipefail
# Ensure mount point exists
mkdir -p $HOME/Synology || true
# Unmount stale mount if present
/run/wrappers/bin/umount "$HOME/Synology" || true
# Mount rclone in foreground
${pkgs.rclone}/bin/rclone \ ${pkgs.rclone}/bin/rclone \
--config=%h/.config/rclone/synology.conf \ --config=$HOME/.config/rclone/synology.conf \
--vfs-cache-mode full \ --vfs-cache-mode full \
--vfs-cache-max-size 10G \ --vfs-cache-max-size 10G \
--vfs-cache-max-age 12h \ --vfs-cache-max-age 12h \
--vfs-read-chunk-size 128M \ --vfs-read-chunk-size 128M \
--vfs-read-chunk-size-limit 2G \ --vfs-read-chunk-size-limit 2G \
--buffer-size 64M \ --buffer-size 64M \
--dir-cache-time 72h \ --dir-cache-time 72h \
--ignore-checksum \ --ignore-checksum \
--log-level INFO \ --log-level INFO \
mount "synology:" "%h/Synology" --rc --rc-serve \
''; mount "synology:" "$HOME/Synology"
''}";
ExecStop = "/run/wrappers/bin/fusermount -uz %h/Synology/%i"; ExecStop = "/run/wrappers/bin/fusermount -uz %h/Synology/%i";
StandardOutput = "journal"; StandardOutput = "journal";
StandardError = "journal"; StandardError = "journal";
@ -51,6 +63,30 @@
}; };
}; };
systemd.user.services.synology-prefill = {
Unit = {
Description = "Prefill Synology NAS rclone cache";
After = [ "synology-mount.service" ];
Wants = [ "synology-mount.service" ];
};
Service = {
Type = "simple";
ExecStart = "${pkgs.writeShellScript "synology-prefill" ''
#!/usr/bin/env bash
set -euo pipefail
${pkgs.rclone}/bin/rclone rc vfs/refresh -v --fast-list recursive=true >/dev/null
''}";
StandardOutput = "journal";
StandardError = "journal";
Restart = "on-failure";
};
Install = {
WantedBy = [ "default.target" ];
};
};
systemd.user.services.input-leap = { systemd.user.services.input-leap = {
Unit = { Unit = {
Description = "Autostart Input Leap"; Description = "Autostart Input Leap";