diff options
Diffstat (limited to 'services/wakapi.nix')
| -rw-r--r-- | services/wakapi.nix | 184 |
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; + }; - - }; - }); + } + ); } |
