1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7let
8 cfg = config.programs.localsend;
9 firewallPort = 53317;
10in
11{
12 options.programs.localsend = {
13 enable = lib.mkEnableOption "localsend, an open source cross-platform alternative to AirDrop";
14
15 package = lib.mkPackageOption pkgs "localsend" { };
16
17 openFirewall =
18 lib.mkEnableOption "opening the firewall port ${toString firewallPort} for receiving files"
19 // {
20 default = true;
21 };
22 };
23
24 config = lib.mkIf cfg.enable {
25 environment.systemPackages = [ cfg.package ];
26 networking.firewall.allowedTCPPorts = lib.optionals cfg.openFirewall [ firewallPort ];
27 networking.firewall.allowedUDPPorts = lib.optionals cfg.openFirewall [ firewallPort ];
28 };
29
30 meta.maintainers = with lib.maintainers; [ pandapip1 ];
31}