dotfiles/nixos/configs/syncthing.nix

64 lines
1.7 KiB
Nix

#
# All-device synchronization via Syncthing.
#
{ is-droid, ... }:
let
# The list of devices and their IDs.
devices = {
"valere" = { id = "VLZYF6C-OHG66RM-O72IMW3-S35YWAV-TYFJJVU-KAMJR7G-2XRLCVB-XOY6IAG"; };
"design" = { id = "XLTC5OX-3ZU6CYZ-MJ7TAY7-ZAMRIE4-SS2JWFB-FC3RJIO-B3BIQFV-J7U53QK"; };
"trailblazer" = { id = "JASHWW7-AYYTQLN-QZ6OEOX-EZK4GPA-OYW5IZS-5KAIIVR-MMXMCHL-OERDBQ2"; };
"aigis" = { id = "VKRQ6Q4-CCLJR2I-ECOWXRE-TANA2QZ-BJIAPCN-FFVJSB4-GYJNS4R-Z3LLHQ5"; };
};
in
{
services.syncthing = {
enable = !is-droid;
openDefaultPorts = true;
# Run as our user, and adopt our permissions.
user = "deprekated";
# Primary configuration.
settings = {
# Set up the webUI, accessible only via localhost.
gui = {
enabled = true;
address = "tcp://127.0.0.1:8384";
};
# Set up the devices that we allow to connect.
# See the big table above.
inherit devices;
# Set op our main sync'd folder.
folders."synced" = {
path = "/home/deprekated/synced";
devices = builtins.attrNames devices;
# Treat this like a sync'd folder that we always have acess to.
ignorePerms = true;
};
};
};
# Quick setup to make syncthing work from its first start.
systemd.services.syncthing-setup = {
requires = [ "network.target"];
script = ''
mkdir -p /var/lib/syncthing
chown -R deprekated: /var/lib/syncthing
'';
};
# Extra config passed through the environment.
systemd.services.syncthing = {
requires = [ "syncthing-setup.service"];
after = [ "syncthing-setup.service"];
# Use our specified folders only; don't create an implicit one.
environment.STNODEFAULTFOLDER = "true";
};
}