1{ config, pkgs, lib, ... }:
2with lib;
3{
4 options.programs.kdeconnect = {
5 enable = mkEnableOption (lib.mdDoc ''
6 kdeconnect.
7
8 Note that it will open the TCP and UDP port from
9 1714 to 1764 as they are needed for it to function properly.
10 You can use the {option}`package` to use
11 `gnomeExtensions.gsconnect` as an alternative
12 implementation if you use Gnome.
13 '');
14 package = mkOption {
15 default = pkgs.plasma5Packages.kdeconnect-kde;
16 defaultText = literalExpression "pkgs.plasma5Packages.kdeconnect-kde";
17 type = types.package;
18 example = literalExpression "pkgs.gnomeExtensions.gsconnect";
19 description = lib.mdDoc ''
20 The package providing the implementation for kdeconnect.
21 '';
22 };
23 };
24 config =
25 let
26 cfg = config.programs.kdeconnect;
27 in
28 mkIf cfg.enable {
29 environment.systemPackages = [ cfg.package ];
30 networking.firewall = rec {
31 allowedTCPPortRanges = [ { from = 1714; to = 1764; } ];
32 allowedUDPPortRanges = allowedTCPPortRanges;
33 };
34 };
35}