diff --git a/modules/environments/ntfy/default.nix b/modules/environments/ntfy/default.nix index 36bce1a..b373a89 100644 --- a/modules/environments/ntfy/default.nix +++ b/modules/environments/ntfy/default.nix @@ -31,27 +31,44 @@ in }; }; - config = lib.mkIf cfg.enable { - services.ntfy-sh = { - enable = true; - settings = { - base-url = "http://${hostName}:${toString cfg.port}"; - listen-http = ":${toString cfg.port}"; - auth-file = "/var/lib/ntfy-sh/user.db"; - auth-default-access = "deny-all"; + config = lib.mkMerge [ + (lib.mkIf cfg.enable { + services.ntfy-sh = { + enable = true; + settings = { + base-url = "http://${hostName}:${toString cfg.port}"; + listen-http = ":${toString cfg.port}"; + auth-file = "/var/lib/ntfy-sh/user.db"; + auth-default-access = "deny-all"; + }; }; - }; - networking.firewall.allowedTCPPorts = [ cfg.port ]; + networking.firewall.allowedTCPPorts = [ cfg.port ]; - my.homepage.services = [ - { - group = "Services"; - name = "ntfy"; - description = "Push notifications"; - href = "http://${hostName}:${toString cfg.port}"; - icon = "ntfy.svg"; - } - ]; - }; + my.homepage.services = [ + { + group = "Services"; + name = "ntfy"; + description = "Push notifications"; + href = "http://${hostName}:${toString cfg.port}"; + icon = "ntfy.svg"; + } + ]; + }) + + (lib.mkIf (cfg.enable && cfg.haIntegration.enable && config.my.profiles.home-assistant.enable) { + services.home-assistant.config.rest_command.ntfy_send = { + url = "http://${hostName}:${toString cfg.port}/${cfg.topic}"; + method = "POST"; + payload = "{{ message }}"; + content_type = "text/plain"; + username = "homeassistant"; + password = "!secret ntfy_password"; + headers = { + Title = "{{ title | default('Home Assistant') }}"; + Priority = "{{ priority | default('default') }}"; + }; + }; + }) + ]; }