46 lines
1.0 KiB
Nix
46 lines
1.0 KiB
Nix
{ config, lib, ... }:
|
|
|
|
let
|
|
inherit (config.host) username;
|
|
home = config.users.users.${username}.home;
|
|
devices = builtins.attrNames (import ../syncthing/devices.nix);
|
|
in
|
|
{
|
|
options.readings = {
|
|
enable = lib.mkOption {
|
|
default = false;
|
|
type = lib.types.bool;
|
|
};
|
|
path = lib.mkOption {
|
|
default = "${home}/doc/readings";
|
|
type = lib.types.str;
|
|
};
|
|
peers = lib.mkOption {
|
|
type = lib.types.nonEmptyListOf (lib.types.enum devices);
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf config.readings.enable {
|
|
assertions = [
|
|
{
|
|
assertion = !builtins.elem config.host.name config.readings.peers;
|
|
message = "'readings.peers' for ${config.host.name} should not include '${config.host.name}'.";
|
|
}
|
|
];
|
|
|
|
syncthing = {
|
|
enable = true;
|
|
folders.readings = {
|
|
inherit (config.readings) path;
|
|
devices = config.readings.peers;
|
|
};
|
|
};
|
|
|
|
home-manager.sharedModules = [
|
|
{
|
|
readings.path = lib.mkDefault config.readings.path;
|
|
}
|
|
];
|
|
};
|
|
}
|