vuls: init at 0.27.0 (#348530)
[NixPkgs.git] / nixos / modules / services / web-apps / hatsu.nix
blob093ae150cfdc6611e59091b1941b057448da22db
2   lib,
3   pkgs,
4   config,
5   ...
6 }:
7 let
8   cfg = config.services.hatsu;
9 in
11   meta.doc = ./hatsu.md;
12   meta.maintainers = with lib.maintainers; [ kwaa ];
14   options.services.hatsu = {
15     enable = lib.mkEnableOption "Self-hosted and fully-automated ActivityPub bridge for static sites";
17     package = lib.mkPackageOption pkgs "hatsu" { };
19     settings = lib.mkOption {
20       type = lib.types.submodule {
21         freeformType =
22           with lib.types;
23           attrsOf (
24             nullOr (oneOf [
25               bool
26               int
27               port
28               str
29             ])
30           );
32         options = {
33           HATSU_DATABASE_URL = lib.mkOption {
34             type = lib.types.str;
35             default = "sqlite:///var/lib/hatsu/hatsu.sqlite?mode=rwc";
36             example = "postgres://username:password@host/database";
37             description = "Database URL.";
38           };
40           HATSU_DOMAIN = lib.mkOption {
41             type = lib.types.str;
42             description = "The domain name of your instance (eg 'hatsu.local').";
43           };
45           HATSU_LISTEN_HOST = lib.mkOption {
46             type = lib.types.str;
47             default = "127.0.0.1";
48             description = "Host where hatsu should listen for incoming requests.";
49           };
51           HATSU_LISTEN_PORT = lib.mkOption {
52             type = lib.types.port;
53             apply = toString;
54             default = 3939;
55             description = "Port where hatsu should listen for incoming requests.";
56           };
58           HATSU_PRIMARY_ACCOUNT = lib.mkOption {
59             type = lib.types.str;
60             description = "The primary account of your instance (eg 'example.com').";
61           };
62         };
63       };
65       default = { };
67       description = ''
68         Configuration for Hatsu, see
69         <link xlink:href="https://hatsu.cli.rs/admins/environments.html"/>
70         for supported values.
71       '';
72     };
73   };
75   config = lib.mkIf cfg.enable {
76     systemd.services.hatsu = {
77       environment = cfg.settings;
79       description = "Hatsu server";
80       documentation = [ "https://hatsu.cli.rs/" ];
82       after = [ "network-online.target" ];
83       wants = [ "network-online.target" ];
85       wantedBy = [ "multi-user.target" ];
87       serviceConfig = {
88         DynamicUser = true;
89         ExecStart = "${lib.getExe cfg.package}";
90         Restart = "on-failure";
91         StateDirectory = "hatsu";
92         Type = "simple";
93         WorkingDirectory = "%S/hatsu";
94       };
95     };
96   };