lifetracker/modules/apps/syncthing/default.nix
2025-01-25 16:03:42 -08:00

72 lines
1.8 KiB
Nix

{
lib,
config,
pkgs,
username,
...
}:
let
cfg = config.syncthing;
in
{
options = {
syncthing = {
enable = lib.mkEnableOption "Enable syncthing in NixOS and home-manager";
};
};
config = lib.mkIf cfg.enable {
services.syncthing = {
enable = true;
key = "${config.sops.secrets."syncthing/key".path}";
cert = "${config.sops.secrets."syncthing/cert".path}";
user = "${username}";
group = "users";
dataDir = "/home/${username}";
configDir = "/home/${username}/.config/syncthing";
overrideDevices = true; # overrides any devices added or deleted through the WebUI
overrideFolders = true; # overrides any folders added or deleted through the WebUI
settings = {
urAccepted = -1;
gui = {
user = username;
password = config.sops.secrets.password_insecure;
};
devices = {
"luna" = {
id = "TM4RJVL-W2CJ32S-ZF3VN2K-DYOUT5Z-DJPAK4R-DMB4B7X-L35KLEP-NAM7QQJ";
};
"thalia" = {
id = "TPTJE5T-3EKRCLJ-LWH5RTK-QCBNQ4V-AXNOLOS-6GB2C3R-Z3SYAFQ-PBS6BAP";
};
};
folders = {
"Notes" = {
id = "erz9x-lv3ww";
label = "Notes";
path = "~/Notes";
devices = [
"luna"
"thalia"
]; # Which devices to share the folder with
};
"Documents" = {
id = "ye1o9-0c6bd";
label = "Documents";
path = "~/Documents";
devices = [
"luna"
"thalia"
];
};
};
};
};
networking.firewall.allowedTCPPorts = [ 22000 ];
networking.firewall.allowedUDPPorts = [
22000
21027
];
systemd.services.syncthing.environment.STNODEFAULTFOLDER = "true";
};
}