diff --git a/modules/home/programs/rclone.nix b/modules/home/programs/rclone.nix index 9f8981e..d037523 100644 --- a/modules/home/programs/rclone.nix +++ b/modules/home/programs/rclone.nix @@ -54,48 +54,71 @@ in { home.packages = with pkgs; [rclone fuse3]; - systemd.user.services = { - luhbots-mount = { - Unit = { - Description = "Mount the luhbots nextcloud"; - After = ["network-online.target"]; + systemd.user = { + services = { + luhbots-mount = { + Unit = { + Description = "Mount the luhbots nextcloud"; + After = ["network-online.target"]; + }; + Service = { + Type = "notify"; + ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p \"%h/luhbots Nextcloud\""; + ExecStart = "${pkgs.rclone}/bin/rclone --config=${config.sops.templates."rclone.conf".path} --vfs-cache-mode full mount \"luhbots:\" \"%h/luhbots Nextcloud\""; + ExecStop = "/bin/fusermount -u \"%h/luhbots Nextcloud\""; + Environment = ["PATH=/run/wrappers/bin/:$PATH"]; + }; + Install.WantedBy = ["default.target"]; }; - Service = { - Type = "notify"; - ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p \"%h/luhbots Nextcloud\""; - ExecStart = "${pkgs.rclone}/bin/rclone --config=${config.sops.templates."rclone.conf".path} --vfs-cache-mode full mount \"luhbots:\" \"%h/luhbots Nextcloud\""; - ExecStop = "/bin/fusermount -u \"%h/luhbots Nextcloud\""; - Environment = ["PATH=/run/wrappers/bin/:$PATH"]; + music-mount = { + Unit = { + Description = "Mount the music directory from my cloud"; + After = ["network-online.target"]; + }; + Service = { + Type = "notify"; + ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p \"%h/Music\""; + ExecStart = "${pkgs.rclone}/bin/rclone --config=${config.sops.templates."rclone.conf".path} --vfs-cache-mode full mount \"cloud:Music\" \"%h/Music\""; + ExecStop = "/bin/fusermount -u \"%h/Music\""; + Environment = ["PATH=/run/wrappers/bin/:$PATH"]; + }; + Install.WantedBy = ["default.target"]; + }; + videos-mount = { + Unit = { + Description = "Mount the videos directory from my cloud"; + After = ["network-online.target"]; + }; + Service = { + Type = "notify"; + ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p \"%h/Videos\""; + ExecStart = "${pkgs.rclone}/bin/rclone --config=${config.sops.templates."rclone.conf".path} --vfs-cache-mode full mount \"cloud:Videos\" \"%h/Videos\""; + ExecStop = "/bin/fusermount -u \"%h/Videos\""; + Environment = ["PATH=/run/wrappers/bin/:$PATH"]; + }; + Install.WantedBy = ["default.target"]; + }; + sync-Documents = { + Unit = { + Description = "Sync the Documents folder with the cloud Documents folder using bisync"; + After = ["network-online.target"]; + }; + Service = { + type = "oneshot"; + ExecStart = "${pkgs.rclone}/bin/rclone --config=${config.sops.templates."rclone.conf".path} --resilient --recover --exclude-from %h/Documents/sync-exclude.txt bisync cloud:Documents %h/Documents"; + }; + Install.WantedBy = ["default.target"]; }; - Install.WantedBy = ["default.target"]; }; - music-mount = { - Unit = { - Description = "Mount the music directory from my cloud"; - After = ["network-online.target"]; + timers = { + sync-Documents = { + Unit.Description = "Sync Documents folder every half hour"; + Timer = { + OnBootSec = "15min"; + OnUnitActiveSec = "30min"; + }; + Install.WantedBy = ["timers.target"]; }; - Service = { - Type = "notify"; - ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p \"%h/Music\""; - ExecStart = "${pkgs.rclone}/bin/rclone --config=${config.sops.templates."rclone.conf".path} --vfs-cache-mode full mount \"cloud:Music\" \"%h/Music\""; - ExecStop = "/bin/fusermount -u \"%h/Music\""; - Environment = ["PATH=/run/wrappers/bin/:$PATH"]; - }; - Install.WantedBy = ["default.target"]; - }; - videos-mount = { - Unit = { - Description = "Mount the videos directory from my cloud"; - After = ["network-online.target"]; - }; - Service = { - Type = "notify"; - ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p \"%h/Videos\""; - ExecStart = "${pkgs.rclone}/bin/rclone --config=${config.sops.templates."rclone.conf".path} --vfs-cache-mode full mount \"cloud:Videos\" \"%h/Videos\""; - ExecStop = "/bin/fusermount -u \"%h/Videos\""; - Environment = ["PATH=/run/wrappers/bin/:$PATH"]; - }; - Install.WantedBy = ["default.target"]; }; }; };