1{ config, lib, pkgs, ... }:
2
3with lib;
4
5let
6
7 cfg = config.services.teamviewer;
8
9in
10
11{
12
13 ###### interface
14
15 options = {
16
17 services.teamviewer.enable = mkEnableOption (lib.mdDoc "TeamViewer daemon");
18
19 };
20
21 ###### implementation
22
23 config = mkIf (cfg.enable) {
24
25 environment.systemPackages = [ pkgs.teamviewer ];
26
27 services.dbus.packages = [ pkgs.teamviewer ];
28
29 systemd.services.teamviewerd = {
30 description = "TeamViewer remote control daemon";
31
32 wantedBy = [ "multi-user.target" ];
33 after = [ "network-online.target" "network.target" "dbus.service" ];
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 = "${pkgs.teamviewer}/bin/teamviewerd -f";
42 PIDFile = "/run/teamviewerd.pid";
43 ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
44 Restart = "on-abort";
45 };
46 };
47 };
48
49}