1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7with lib;
8let
9 cfg = config.services.handheld-daemon;
10in
11{
12 options.services.handheld-daemon = {
13 enable = mkEnableOption "Handheld Daemon";
14 package = mkPackageOption pkgs "handheld-daemon" { };
15
16 ui = {
17 enable = mkEnableOption "Handheld Daemon UI";
18 package = mkPackageOption pkgs "handheld-daemon-ui" { };
19 };
20
21 user = mkOption {
22 type = types.str;
23 description = ''
24 The user to run Handheld Daemon with.
25 '';
26 };
27 };
28
29 config = mkIf cfg.enable {
30 services.handheld-daemon.ui.enable = mkDefault true;
31 environment.systemPackages = [
32 cfg.package
33 ] ++ lib.optional cfg.ui.enable cfg.ui.package;
34 services.udev.packages = [ cfg.package ];
35 systemd.packages = [ cfg.package ];
36
37 systemd.services.handheld-daemon = {
38 description = "Handheld Daemon";
39
40 wantedBy = [ "multi-user.target" ];
41
42 restartIfChanged = true;
43
44 path = mkIf cfg.ui.enable [
45 cfg.ui.package
46 pkgs.lsof
47 ];
48
49 serviceConfig = {
50 ExecStart = "${lib.getExe cfg.package} --user ${cfg.user}";
51 Nice = "-12";
52 Restart = "on-failure";
53 RestartSec = "10";
54 };
55 };
56 };
57
58 meta.maintainers = [ maintainers.appsforartists ];
59}