{
  config,
  lib,
  ...
}: let
  mountDir = "/mnt/sync";
in {
  options.host.sync = {
    enable = lib.mkEnableOption "should sync thing be enabled on this device";
    folders = {
      leyla = {
        documents = {
          enable = lib.mkEnableOption "should the documents folder be synced";
        };
        calendar = {
          enable = lib.mkEnableOption "should the calendar folder be synced";
        };
        notes = {
          enable = lib.mkEnableOption "should the notes folder by synced";
        };
      };
      extraFolders = lib.mkOption {
        type = lib.types.attrsOf (lib.types.submodule ({...}: {
          options = {
            path = lib.mkOption {
              type = lib.types.str;
            };
            devices = lib.mkOption {
              type = lib.types.listof lib.types.str;
            };
          };
        }));
        default = {};
      };
    };
  };

  config = {
    systemd = lib.mkIf config.services.syncthing.enable {
      tmpfiles.rules = [
        "d ${mountDir} 755 syncthing syncthing -"
        "d ${config.services.syncthing.dataDir} 755 syncthing syncthing -"
        "d ${config.services.syncthing.configDir} 755 syncthing syncthing -"
      ];
    };
    services.syncthing = {
      enable = config.host.sync.enable;
      user = "syncthing";
      group = "syncthing";
      dataDir = "${mountDir}/default";
      configDir = "/etc/syncthing";
      overrideDevices = true;
      overrideFolders = true;
      settings = {
        devices = {
          ceder = {
            id = "MGXUJBS-7AENXHB-7YQRNWG-QILKEJD-5462U2E-WAQW4R4-I2TVK5H-SMK6LAA";
          };
          coven = {
            id = "QGU7NN6-OMXTWVA-YCZ73S5-2O7ECTS-MUCTN4M-YH6WLEL-U4U577I-7PBNCA5";
          };
        };
        folders = lib.mkMerge [
          config.host.sync.folders.extraFolders
          (lib.mkIf config.host.sync.folders.leyla.documents.enable {
            "documents" = {
              id = "hvrj0-9bm1p";
              path = "/mnt/sync/leyla/documents";
              devices = ["ceder" "coven"];
            };
          })
          (lib.mkIf config.host.sync.folders.leyla.calendar.enable {
            "calendar" = {
              id = "8oatl-1rv6w";
              path = "/mnt/sync/leyla/calendar";
              devices = ["ceder" "coven"];
            };
          })
          (lib.mkIf config.host.sync.folders.leyla.notes.enable {
            "notes" = {
              id = "dwbuv-zffnf";
              path = "/mnt/sync/leyla/notes";
              devices = ["ceder" "coven"];
            };
          })
        ];
      };
    };
  };
}