main
 1{lib, ...}: {
 2  flake.modules.nixos."services/wakapi" = {config, ...}: {
 3    services.wakapi = {
 4      enable = true;
 5      settings = {
 6        server = {
 7          listen_ipv4 = "127.0.0.1";
 8          port = 5423;
 9          public_url = "https://wakapi.hpcesia.com";
10        };
11        app = {
12          leaderboard_enabled = false;
13          avatar_url_template = "https://0.gravatar.com/avatar/{email_hash}";
14          date_format = "2006-01-02";
15          datetime_format = "2006-01-02 15:04";
16        };
17      };
18      environmentFiles = [
19        config.vaultix.templates.wakapi-env.path
20      ];
21    };
22
23    services.caddy.virtualHosts."wakapi.hpcesia.com".extraConfig =
24      lib.mkIf config.services.caddy.enable
25      (let
26        localAddress = "http://localhost:${toString config.services.wakapi.settings.server.port}";
27      in ''
28        encode zstd gzip
29        reverse_proxy ${localAddress}
30      '');
31
32    vaultix.secrets.wakapi-password-salt.file = ./password-salt.age;
33    vaultix.templates.wakapi-env.content = ''
34      WAKAPI_PASSWORD_SALT=${config.vaultix.placeholder.wakapi-password-salt}
35    '';
36  };
37}