nix/home/services/systemd.nix

66 lines
1.7 KiB
Nix

{
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" ];
};
};
}