nix/moduler/services/gotify/default.nix
2025-11-12 10:12:29 +01:00

57 lines
1.3 KiB
Nix

{
lib,
pkgs,
config,
...
}:
with lib;
{
options = {
gotify = {
enable = mkEnableOption "enables gotify";
port = lib.mkOption {
type = lib.types.int;
default = 8857;
description = "The port gotify listens on.";
};
host = mkOption {
type = types.str;
defaultText = literalExpression "127.0.0.1";
description = "The hostname that gotify binds to";
};
domain = mkOption {
type = types.str;
defaultText = literalExpression "home.wastring.com";
description = "The hostname that gotify binds to";
};
};
};
config = mkMerge [
(mkIf config.gotify.enable {
sops.secrets.gotify_password = { };
services.gotify = {
enable = true;
environmentFiles = [
config.sops.secrets.gotify_password.path
];
environment = {
GOTIFY_DATABASE_DIALECT = "sqlite3";
GOTIFY_SERVER_PORT = config.gotify.port;
GOTIFY_DEFAULTUSER_NAME = "admin";
};
};
services.nginx.virtualHosts.${config.gotify.domain} = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${toString config.gotify.host}:${toString config.gotify.port}";
proxyWebsockets = true;
};
};
})
];
}