{ lib, config, pkgs, ... }: let cfg = config.myConfig.programs.rclone; in { options.myConfig.programs.rclone = { enable = lib.mkEnableOption "nextcloud sync using rclone"; }; config = lib.mkIf cfg.enable { sops = { age.keyFile = "/home/max/.config/sops/age/keys.txt"; secrets = { "cloud/url" = { sopsFile = ../../../secrets/rclone.yaml; }; "cloud/user" = { sopsFile = ../../../secrets/rclone.yaml; }; "cloud/pass" = { sopsFile = ../../../secrets/rclone.yaml; }; "luhbots/url" = { sopsFile = ../../../secrets/rclone.yaml; }; "luhbots/user" = { sopsFile = ../../../secrets/rclone.yaml; }; "luhbots/pass" = { sopsFile = ../../../secrets/rclone.yaml; }; }; templates."rclone.conf".content = '' [cloud] type = webdav url = ${config.sops.placeholder."cloud/url"} vendor = nextcloud user = ${config.sops.placeholder."cloud/user"} pass = ${config.sops.placeholder."cloud/pass"} nextcloud_chunk_size = 512M [luhbots] type = webdav url = ${config.sops.placeholder."luhbots/url"} vendor = nextcloud user = ${config.sops.placeholder."luhbots/user"} pass = ${config.sops.placeholder."luhbots/pass"} ''; }; home.packages = [pkgs.rclone]; 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 = "${pkgs.fuse}/bin/fusermount -u \"%h/luhbots Nextcloud\""; }; Install.WantedBy = ["default.target"]; }; }; }; }