Personal Nix setup

Add rclone timer & service

Changed files
+55 -4
modules
server
+6
modules/server/encrypt/rclone.conf.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 QwbpPw ScdxEVTjiFSBQRUzb7HKWCZpbAg3XTF6b8QsUmItNh0
+
OXC8UFxmuTn9vo0k6TsH9fUJm2i0+wIuGDlfjOpKxJY
+
--- RFwhwDkEA/ordjL55pMAiC9jLzcrdSGHZAzmp9qCGZ4
+
ew@t��!Wܣ�~ՙ� )M��l�&vm�.��2��+h����֧fN�>3!����׊
+
�Rq{~Jz0�ytF%�b��J=Bw�b+k� H�����W������+�N]:�)xb�ߩnG�!z�5YXa #�]���r`�
+48 -4
modules/server/plex.nix
···
-
{ user, ... }:
+
{ pkgs, user, ... }:
-
{
-
users.users."${user}".extraGroups = [ "share" ];
+
let
+
group = "share";
+
in {
+
age.secrets."rclone.conf" = {
+
symlink = true;
+
path = "/run/secrets/rclone.conf";
+
file = ./encrypt/rclone.conf.age;
+
owner = "plex";
+
group = "${group}";
+
};
+
+
users.users."${user}".extraGroups = [ "${group}" ];
users.groups = {
share.gid = 1001;
···
services.plex = {
enable = true;
openFirewall = false;
-
group = "share";
+
group = "${group}";
+
};
+
+
systemd.services."rclone-sync@" = {
+
wants = [ "network-online.target" ];
+
description = "Sync files between different remotes via rclone";
+
stopIfChanged = false;
+
serviceConfig = {
+
Type = "simple";
+
User = "plex";
+
Group = "${group}";
+
ExecStart = ''
+
${pkgs.rclone}/bin/rclone \
+
--config /run/secrets/rclone.conf \
+
-P copy \
+
-u \
+
--max-age 24h \
+
--multi-thread-streams 0 \
+
putio:%I /share/media/%I
+
'';
+
};
+
};
+
+
systemd.timers."rclone-sync@" = {
+
description = "Sync files between different remotes via rclone periodically";
+
timerConfig = {
+
OnBootSec = "15min";
+
OnUnitActiveSec="8h";
+
Persistent = true;
+
};
+
};
+
+
systemd.targets.rclone-sync = {
+
wantedBy = [ "multi-user.target" ];
+
wants = [ "rclone-sync@movies.timer" "rclone-sync@series.timer" ];
};
}
+1
secrets.nix
···
"./modules/desktop/fonts/encrypt/faicon.ttf.age".publicKeys = keys;
"./modules/server/encrypt/tailscale.age".publicKeys = keys;
+
"./modules/server/encrypt/rclone.conf.age".publicKeys = keys;
"./home/gpg/encrypt/pubring.kbx.age".publicKeys = keys;
"./home/gpg/encrypt/75EF1DBB30A59CFB56BCE06A88CCF363DA63B1A7.key.age".publicKeys = keys;