From 9317f49fe245bb35f38900e4fb931bb895c650d3 Mon Sep 17 00:00:00 2001 From: Phil Pluckthun Date: Mon, 8 Apr 2024 08:25:36 +0100 Subject: [PATCH] Add rclone timer & service --- modules/server/encrypt/rclone.conf.age | 6 +++ modules/server/plex.nix | 52 ++++++++++++++++++++++++-- secrets.nix | 1 + 3 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 modules/server/encrypt/rclone.conf.age diff --git a/modules/server/encrypt/rclone.conf.age b/modules/server/encrypt/rclone.conf.age new file mode 100644 index 0000000..c1138ab --- /dev/null +++ b/modules/server/encrypt/rclone.conf.age @@ -0,0 +1,6 @@ +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`� \ No newline at end of file diff --git a/modules/server/plex.nix b/modules/server/plex.nix index 1873e0b..b3712a6 100644 --- a/modules/server/plex.nix +++ b/modules/server/plex.nix @@ -1,7 +1,17 @@ -{ 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; @@ -10,6 +20,40 @@ 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" ]; }; } diff --git a/secrets.nix b/secrets.nix index 1b69582..45ccc8f 100644 --- a/secrets.nix +++ b/secrets.nix @@ -11,6 +11,7 @@ in "./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; -- 2.51.2