main
 1{
 2  config,
 3  lib,
 4  pkgs,
 5  ...
 6}:
 7
 8with lib;
 9let
10  cfg = config.services.gosmee;
11in
12{
13  options = {
14    services.gosmee = {
15      enable = mkEnableOption ''
16        gosmee is a webhook forwader/relayer
17      '';
18      package = mkOption {
19        type = types.package;
20        default = pkgs.gosmee;
21        description = ''
22          gosmee package to use.
23        '';
24      };
25
26      public-url = mkOption {
27        description = ''
28          Public URL to show to user, useful when you are behind a proxy.
29        '';
30        type = types.str;
31        default = "";
32      };
33    };
34  };
35  config = mkIf cfg.enable {
36    systemd.packages = [ cfg.package ];
37    systemd.services.gosmee = {
38      description = "Gosmee service";
39      after = [ "network.target" ];
40      wantedBy = [ "multi-user.target" ];
41      serviceConfig = {
42        # User = cfg.user;
43        Restart = "on-failure";
44        ExecStart = ''
45          ${cfg.package}/bin/gosmee server \
46          ${optionalString (cfg.public-url != "") "--public-url ${escapeShellArg cfg.public-url}"}
47        '';
48      };
49      path = [ cfg.package ];
50    };
51  };
52}