summaryrefslogtreecommitdiff
path: root/services/wakapi.nix
diff options
context:
space:
mode:
Diffstat (limited to 'services/wakapi.nix')
-rw-r--r--services/wakapi.nix184
1 files changed, 93 insertions, 91 deletions
diff --git a/services/wakapi.nix b/services/wakapi.nix
index 1b1e312..c89a46a 100644
--- a/services/wakapi.nix
+++ b/services/wakapi.nix
@@ -1,110 +1,112 @@
-{config, lib, pkgs, ...}:
+{ config, lib, ... }:
let
- cfg = config.wilkuu.services.wakapi;
- hostname = config.networking.hostName;
+ cfg = config.wilkuu.services.wakapi;
+ hostname = config.networking.hostName;
service_user = config.systemd.services.wakapi.serviceConfig.User;
-in
+in
{
options.wilkuu.services.wakapi = with lib; {
domain = mkOption {
- type = types.str;
- default = "wakapi.${hostname}.local";
- example = "wakapi.wilkuu.xyz";
- description = "Domain for http connections.";
- };
+ type = types.str;
+ default = "wakapi.${hostname}.local";
+ example = "wakapi.wilkuu.xyz";
+ description = "Domain for http connections.";
+ };
email = mkOption {
- type = types.str;
- default = "wakapi@${hostname}.local";
- example = "noreply@wilkuu.xyz";
- description = "Mailer address";
- };
+ type = types.str;
+ default = "wakapi@${hostname}.local";
+ example = "noreply@wilkuu.xyz";
+ description = "Mailer address";
+ };
doACME = mkEnableOption "Enable ACME for wakapi here";
- enable = mkEnableOption "Enable the wakapi service";
- dataDir = mkOption {
- type = types.path;
- description = "Storage localtion for wakapi data";
- default = "/srv/data/wakapi";
- example = "/srv/data/wakapi";
- };
+ enable = mkEnableOption "Enable the wakapi service";
+ dataDir = mkOption {
+ type = types.path;
+ description = "Storage localtion for wakapi data";
+ default = "/srv/data/wakapi";
+ example = "/srv/data/wakapi";
+ };
};
- config = lib.mkIf cfg.enable (let
- sopsPath = ../secrets/${hostname}/wakapi.yaml;
- secrets = ["password_salt"];
- toSops = (sname: "wakapi/${sname}");
- in {
- networking.hosts = {
- "127.0.0.1" = [cfg.domain];
- };
+ config = lib.mkIf cfg.enable (
+ let
+ sopsPath = ../secrets/${hostname}/wakapi.yaml;
+ secrets = [ "password_salt" ];
+ toSops = (sname: "wakapi/${sname}");
+ in
+ {
+ networking.hosts = {
+ "127.0.0.1" = [ cfg.domain ];
+ };
- sops.secrets =
- (lib.genAttrs (map toSops secrets)
- (name: {
- sopsFile = sopsPath;
- mode = "0440";
- owner = service_user;
- }));
+ sops.secrets = (
+ lib.genAttrs (map toSops secrets) (_name: {
+ sopsFile = sopsPath;
+ mode = "0440";
+ owner = service_user;
+ })
+ );
- services.nginx.virtualHosts."${cfg.domain}" = {
- enableACME = cfg.doACME;
- addSSL = cfg.doACME;
- locations."/" = {
- proxyPass = "http://localhost:3111";
- recommendedProxySettings = true;
+ services.nginx.virtualHosts."${cfg.domain}" = {
+ enableACME = cfg.doACME;
+ addSSL = cfg.doACME;
+ locations."/" = {
+ proxyPass = "http://localhost:3111";
+ recommendedProxySettings = true;
+ };
};
- };
- wilkuu.services.mysql = let
- in {
- unix_users = [service_user];
- databases.wakapi = {
- enable = true;
- allowedUsers = [service_user];
+ wilkuu.services.mysql = {
+ unix_users = [ service_user ];
+ databases.wakapi = {
+ enable = true;
+ allowedUsers = [ service_user ];
+ };
};
- };
- services.wakapi = {
- enable = true;
- stateDir = cfg.dataDir;
- passwordSaltFile = config.sops.secrets.wakapi/password_salt;
- settings = {
- server = {
- port = 3111;
- public_url = cfg.domain;
- };
- app = {
- leaderboard_enabled = false;
- leaderboard_require_auth = true;
- inactive_days = 7; # time of previous days within a user must have logged in to be considered active
- # go time format strings to format human-readable dates
- # for details, check https://pkg.go.dev/time#Time.Format
- date_format= "Mon, 02 Jan 2006";
- datetime_format= "Mon, 02 Jan 2006 15:04";
- };
- db = {
- socket= "/var/lib/mysql/mysql.sock";
- name = "wakapi";
- dialect = "mysql";
- charset = "utf8mb4";
+ services.wakapi = {
+ enable = true;
+ stateDir = cfg.dataDir;
+ passwordSaltFile = config.sops.secrets.wakapi/password_salt;
+ settings = {
+ server = {
+ port = 3111;
+ public_url = cfg.domain;
+ };
+ app = {
+ leaderboard_enabled = false;
+ leaderboard_require_auth = true;
+ inactive_days = 7; # time of previous days within a user must have logged in to be considered active
+ # go time format strings to format human-readable dates
+ # for details, check https://pkg.go.dev/time#Time.Format
+ date_format = "Mon, 02 Jan 2006";
+ datetime_format = "Mon, 02 Jan 2006 15:04";
+ };
+ db = {
+ socket = "/var/lib/mysql/mysql.sock";
+ name = "wakapi";
+ dialect = "mysql";
+ charset = "utf8mb4";
+ };
+ security = {
+ insecure_cookies = false;
+ trust_reverse_proxy_ips = "127.0.0.1";
+ };
+ mail = {
+ # FIXME: Add email
+ enabled = false;
+ provider = "smtp";
+ sender = "<Wakapi ${cfg.email}>";
+ smtp = {
+ };
+ };
};
- security = {
- insecure_cookies = false;
- trust_reverse_proxy_ips= "127.0.0.1";
+ database = {
+ dialect = "mysql";
+ createLocally = false;
};
- mail = {
- # FIXME: Add email
- enabled = false;
- provider = "smtp";
- sender = "<Wakapi ${cfg.email}>";
- smtp = {
- };
- };
- };
- database = {
- dialect = "mysql";
- createLocally = false;
+
};
-
- };
- });
+ }
+ );
}