53 lines
1.4 KiB
Nix
53 lines
1.4 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
|
|
let
|
|
cfg = config.clan.localsend;
|
|
in
|
|
{
|
|
# Integration can be improved, if the following issues get implemented:
|
|
# - cli frontend: https://github.com/localsend/localsend/issues/11
|
|
# - ipv6 support: https://github.com/localsend/localsend/issues/549
|
|
options.clan.localsend = {
|
|
defaultLocation = lib.mkOption {
|
|
type = lib.types.str;
|
|
description = "The default download location";
|
|
};
|
|
package = lib.mkPackageOption pkgs "localsend" { };
|
|
ipv4Addr = lib.mkOption {
|
|
type = lib.types.str;
|
|
example = "192.168.56.2/24";
|
|
description = "Every machine needs a unique ipv4 address";
|
|
};
|
|
};
|
|
|
|
imports = [
|
|
(lib.mkRemovedOptionModule [
|
|
"clan"
|
|
"localsend"
|
|
"enable"
|
|
] "Importing the module will already enable the service.")
|
|
];
|
|
config = {
|
|
clan.core.state.localsend.folders = [
|
|
"/var/localsend"
|
|
config.clan.localsend.defaultLocation
|
|
];
|
|
environment.systemPackages = [ config.clan.localsend.package ];
|
|
|
|
networking.firewall.interfaces."zt+".allowedTCPPorts = [ 53317 ];
|
|
networking.firewall.interfaces."zt+".allowedUDPPorts = [ 53317 ];
|
|
|
|
#TODO: This is currently needed because there is no ipv6 multicasting support yet
|
|
systemd.network.networks."09-zerotier" = {
|
|
networkConfig = {
|
|
Address = cfg.ipv4Addr;
|
|
};
|
|
};
|
|
};
|
|
}
|