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 "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 wants = [ "network-online.target" ];
34 after = [ "network-online.target" "network.target" "dbus.service" ];
35 requires = [ "dbus.service" ];
36 preStart = "mkdir -pv /var/lib/teamviewer /var/log/teamviewer";
37
38 startLimitIntervalSec = 60;
39 startLimitBurst = 10;
40 serviceConfig = {
41 Type = "simple";
42 ExecStart = "${pkgs.teamviewer}/bin/teamviewerd -f";
43 PIDFile = "/run/teamviewerd.pid";
44 ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
45 Restart = "on-abort";
46 };
47 };
48 };
49
50}