diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 6b8c8255c4db..1dd1054cdacb 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -112,6 +112,7 @@
./programs/iftop.nix
./programs/iotop.nix
./programs/java.nix
+ ./programs/kdeconnect.nix
./programs/kbdlight.nix
./programs/less.nix
./programs/light.nix
diff --git a/nixos/modules/programs/kdeconnect.nix b/nixos/modules/programs/kdeconnect.nix
new file mode 100644
index 000000000000..673449b9f633
--- /dev/null
+++ b/nixos/modules/programs/kdeconnect.nix
@@ -0,0 +1,35 @@
+{ config, pkgs, lib, ... }:
+with lib;
+{
+ options.programs.kdeconnect = {
+ enable = mkEnableOption ''
+ kdeconnect.
+
+ Note that it will open the TCP and UDP port from
+ 1714 to 1764 as they are needed for it to function properly.
+ You can use the to use
+ gnomeExtensions.gsconnect as an alternative
+ implementation if you use Gnome.
+ '';
+ package = mkOption {
+ default = pkgs.kdeconnect;
+ defaultText = "pkgs.kdeconnect";
+ type = types.package;
+ example = literalExample "pkgs.gnomeExtensions.gsconnect";
+ description = ''
+ The package providing the implementation for kdeconnect.
+ '';
+ };
+ };
+ config =
+ let
+ cfg = config.programs.kdeconnect;
+ in
+ mkIf cfg.enable {
+ environment.systemPackages = [ cfg.package ];
+ networking.firewall = rec {
+ allowedTCPPortRanges = [ { from = 1714; to = 1764; } ];
+ allowedUDPPortRanges = allowedTCPPortRanges;
+ };
+ };
+}