mirror of
https://github.com/kittywitch/nixfiles.git
synced 2026-02-09 04:19:19 -08:00
51 lines
1.4 KiB
Nix
51 lines
1.4 KiB
Nix
{
|
|
self,
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib.options) mkOption;
|
|
inherit (lib.types) str nullOr;
|
|
inherit (lib.attrsets) filterAttrs mapAttrs mapAttrs' nameValuePair;
|
|
enabledHosts = filterAttrs (_n: v: v.config.services.syncthing.enable) self.nixosConfigurations;
|
|
enabledSyncthings = mapAttrs (_n: _v: config.services.syncthing) enabledHosts;
|
|
enabledDevices = mapAttrs' (_n: v: (nameValuePair v.device_name {id = v.device_id;})) enabledSyncthings;
|
|
in {
|
|
options = {
|
|
services.syncthing = {
|
|
device_id = mkOption {
|
|
type = nullOr str;
|
|
default = null;
|
|
};
|
|
device_name = mkOption {
|
|
type = nullOr str;
|
|
default = config.networking.hostName;
|
|
};
|
|
};
|
|
};
|
|
config = {
|
|
sops.secrets = let
|
|
commonOptions = {
|
|
sopsFile = ./. + "${config.networking.hostName}.yaml";
|
|
};
|
|
in {
|
|
syncthing-key = commonOptions;
|
|
syncthing-cert = commonOptions;
|
|
};
|
|
services.syncthing = {
|
|
settings = {
|
|
devices = enabledDevices; # :3
|
|
};
|
|
|
|
extraFlags = ["--no-default-folder"];
|
|
|
|
# To those of us in future ages, including me going back over this,
|
|
# this is obtained via getting the contents of
|
|
# `syncthing generate --no-default-folder --config meep/`
|
|
# I hope this helps! That's what the content of those secrets are from.
|
|
|
|
key = config.sops.secrets.syncthing-key.path;
|
|
cert = config.sops.secrets.syncthing-cert.path;
|
|
};
|
|
};
|
|
}
|