{ config, pkgs, lib, ... }: { systemd.user.sessionVariables = { XCURSOR_THEME = config.userOptions.cursor.name; XCURSOR_SIZE = toString config.userOptions.cursor.size; XCURSOR_PATH = config.userOptions.cursor.path; }; xdg.configFile."rclone/synology.conf".text = '' [synology] type = sftp user = sckova host = nas.taila30609.ts.net key_file = ~/.ssh/key shell_type = unix root = home md5sum_command = "${pkgs.coreutils}/bin/md5sum"; sha1sum_command = "${pkgs.coreutils}/bin/sha1sum"; ''; systemd.user.services.synology-mount = { Unit = { Description = "Mount Synology NAS with Rclone and Home Manager."; After = [ "tailscaled.service" ]; Wants = [ "tailscaled.service" ]; StartLimitBurst = 5; StartLimitIntervalSec = "1m"; }; Service = { Type = "simple"; Restart = "on-failure"; RestartSec = "1m"; 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 \ --config=$HOME/.config/rclone/synology.conf \ --ignore-checksum \ --log-level INFO \ --rc --rc-serve \ mount "synology:" "$HOME/Synology" ''}"; ExecStop = "/run/wrappers/bin/fusermount -uz %h/Synology/%i"; StandardOutput = "journal"; StandardError = "journal"; }; Install = { WantedBy = [ "default.target" ]; }; }; }