nixos/modules/home/programs/rclone.nix

75 lines
2.1 KiB
Nix

{
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 = with pkgs; [rclone fuse3];
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"];
};
};
};
}