nix-config/modules/default/common/syncthing.nix
2025-01-07 23:28:53 +01:00

75 lines
2 KiB
Nix

{ lib, config, ... }:
let
deviceList = builtins.attrNames config.common.syncthing.devices;
in
{
options = {
common.syncthing = {
enable = lib.mkEnableOption "enable syncthing";
devices = lib.mkOption {
type = lib.types.attrsOf (lib.types.submodule {
options.id = lib.mkOption { type = lib.types.str; };
options.autoAcceptFolders = lib.mkOption {
type = lib.types.bool;
default = true;
};
});
};
basePath = lib.mkOption {
type = lib.types.str;
default = "/mnt/data";
};
};
};
config.home-manager.users.willifan.services.syncthing = lib.mkIf config.common.syncthing.enable {
enable = lib.mkDefault true;
overrideDevices = lib.mkDefault true;
overrideFolders = lib.mkDefault true;
guiAddress = "0.0.0.0:8384";
passwordFile = config.sops.secrets."syncthing/password".path;
settings = {
gui.user = "willifan";
devices = config.common.syncthing.devices;
folders = lib.mkDefault {
"Documents" = {
id = "jtl6g-qjmwo";
path = config.common.syncthing.basePath + "/Documents";
devices = deviceList;
};
"Enpass" = lib.mkDefault {
id = "ciksm-xsw4m";
path = config.common.syncthing.basePath + "/Enpass";
devices = deviceList;
};
"Pictures" = lib.mkDefault {
id = "po4qj-q9t0t";
path = config.common.syncthing.basePath + "/Pictures";
devices = deviceList;
};
"Videos" = lib.mkDefault {
id = "4wqf5-xasng";
path = config.common.syncthing.basePath + "/Videos";
devices = deviceList;
};
"Notes" = lib.mkDefault {
id = "oc61n-iewgj";
path = config.common.syncthing.basePath + "/Notes";
devices = deviceList;
};
"Music" = lib.mkDefault {
id = "xxh8a-3y2tq";
path = config.common.syncthing.basePath + "/Music";
devices = deviceList;
};
};
};
};
}