{ 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" ]; }; Service = { Type = "simple"; # ExecStartPre = "${pkgs.writeShellScript "synology-prep" '' # if mountpoint -q %h/Synology; then # /run/wrappers/bin/fusermount -uz %h/Synology # fi # ${pkgs.coreutils}/bin/mkdir -p %h/Synology # ''}"; 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" ]; }; }; # 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 = { # Unit = { # Description = "Autostart Input Leap"; # After = [ "graphical-session.target" ]; # }; # Service = { # Type = "oneshot"; # RemainAfterExit = true; # PassEnvironment = "DISPLAY"; # ExecStart = "${pkgs.writeShellScript "input-leap-start" '' # sleep 5 # ${pkgs.input-leap}/bin/input-leap # ''}"; # }; # Install = { # WantedBy = [ "graphical-session.target" ]; # }; # }; }