nixpkgs/nixos/modules/services/monitoring/teamviewer.nix
Philipp Schuster 04dbbd4365 teamviewer: introduce services.teamviewer.package option
Teamviewer only works with its daemon. Therefore, having programs.teamviewer.enable
is not the design currently chosen to add teamviewer. Instead, the
servies.teamviewer.enable option enables both the daemon and the system package.
2024-10-04 09:47:14 +02:00

44 lines
1.1 KiB
Nix

{ config, lib, pkgs, ... }:
let
cfg = config.services.teamviewer;
in
{
options = {
services.teamviewer = {
enable = lib.mkEnableOption "TeamViewer daemon & system package";
package = lib.mkPackageOption pkgs "teamviewer" { };
};
};
config = lib.mkIf (cfg.enable) {
environment.systemPackages = [ cfg.package ];
services.dbus.packages = [ cfg.package ];
systemd.services.teamviewerd = {
description = "TeamViewer remote control daemon";
wantedBy = [ "multi-user.target" ];
wants = [ "network-online.target" ];
after = [
"network-online.target"
"network.target"
"dbus.service"
];
requires = [ "dbus.service" ];
preStart = "mkdir -pv /var/lib/teamviewer /var/log/teamviewer";
startLimitIntervalSec = 60;
startLimitBurst = 10;
serviceConfig = {
Type = "simple";
ExecStart = "${cfg.package}/bin/teamviewerd -f";
PIDFile = "/run/teamviewerd.pid";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
Restart = "on-abort";
};
};
};
}