1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8let
9 cfg = config.services.teamviewer;
10in
11{
12 options = {
13 services.teamviewer = {
14 enable = lib.mkEnableOption "TeamViewer daemon & system package";
15 package = lib.mkPackageOption pkgs "teamviewer" { };
16 };
17 };
18
19 config = lib.mkIf (cfg.enable) {
20 environment.systemPackages = [ cfg.package ];
21
22 services.dbus.packages = [ cfg.package ];
23
24 systemd.services.teamviewerd = {
25 description = "TeamViewer remote control daemon";
26
27 wantedBy = [ "multi-user.target" ];
28 wants = [ "network-online.target" ];
29 after = [
30 "network-online.target"
31 "network.target"
32 "dbus.service"
33 ];
34 requires = [ "dbus.service" ];
35 preStart = "mkdir -pv /var/lib/teamviewer /var/log/teamviewer";
36
37 startLimitIntervalSec = 60;
38 startLimitBurst = 10;
39 serviceConfig = {
40 Type = "simple";
41 ExecStart = "${cfg.package}/bin/teamviewerd -f";
42 PIDFile = "/run/teamviewerd.pid";
43 ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
44 Restart = "on-abort";
45 };
46 };
47 };
48}