{
  config,
  lib,
  pkgs,
  ...
}:
with lib; let
  cfg = config.custom.services.kdeconnect;
in {
  options.custom.services.kdeconnect = {
    enable = mkOption {default = false;};
    display = mkOption {default = null;};
    package = mkOption {default = mkForce pkgs.kdePackages.kdeconnect-kde;};
  };

  config = mkIf cfg.enable {
    # https://github.com/KDE/kdeconnect-kde
    programs.kdeconnect = {
      enable = true;
      package = cfg.package;
    };

    home-manager.sharedModules = [
      {
        services.kdeconnect = {
          enable = true;
          package = cfg.package;
        };

        # HACK: Manually set DISPLAY variable if specified
        systemd.user.services.kdeconnect = mkIf (!isNull cfg.display) {
          Service = {
            Environment = ["DISPLAY=:${toString cfg.display}"];
          };
        };
      }
    ];
  };
}