xin/gui/kde.nix
2024-04-18 06:23:13 -06:00

69 lines
1.5 KiB
Nix

{ config
, lib
, pkgs
, isUnstable
, ...
}:
let
inherit (lib) mkIf mkEnableOption mkMerge mkOption types;
kconnect = mkIf config.kdeConnect.enable
(if isUnstable then
pkgs.kdePackages.kdeconnect-kde
else
pkgs.plasma5Packages.kdeconnect-kde);
in
with pkgs;
{
options = {
kde = { enable = mkEnableOption "Enable KDE desktop."; };
kdeConnect = {
enable = mkEnableOption {
description = "Enable PipeWire";
default = false;
example = true;
};
interface = mkOption {
description = "listen interface for kde connect";
default = "tailscale0";
type = types.str;
};
};
};
config = mkIf config.kde.enable {
services =
mkMerge [
(if isUnstable then {
desktopManager.plasma6.enable = true;
displayManager.sddm.enable = true;
}
else {
xserver = {
desktopManager.plasma5.enable = true;
displayManager.sddm.enable = true;
};
})
];
# Listen for KDE Connect connections on the tailnet
networking.firewall.interfaces = mkIf config.kdeConnect.enable {
"${config.kdeConnect.interface}" =
let
range = {
from = 1714;
to = 1764;
};
in
{
allowedUDPPortRanges = [ range ];
allowedTCPPortRanges = [ range ];
};
};
environment.systemPackages = [
kcolorchooser
kconnect
];
};
}