diff --git a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
index 9067b3ccf234..a951835a0764 100644
--- a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
+++ b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
@@ -183,6 +183,14 @@
services.hadoop.hbase.
+
+
+ Sachet,
+ an SMS alerting tool for the Prometheus Alertmanager.
+ Available as
+ services.prometheus.sachet.
+
+
infnoise,
diff --git a/nixos/doc/manual/release-notes/rl-2211.section.md b/nixos/doc/manual/release-notes/rl-2211.section.md
index 6d3b5a1bc7be..73348007cb73 100644
--- a/nixos/doc/manual/release-notes/rl-2211.section.md
+++ b/nixos/doc/manual/release-notes/rl-2211.section.md
@@ -68,6 +68,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- [HBase cluster](https://hbase.apache.org/), a distributed, scalable, big data store. Available as [services.hadoop.hbase](options.html#opt-services.hadoop.hbase.enable).
+- [Sachet](https://github.com/messagebird/sachet/), an SMS alerting tool for the Prometheus Alertmanager. Available as [services.prometheus.sachet](#opt-services.prometheus.sachet.enable).
+
- [infnoise](https://github.com/leetronics/infnoise), a hardware True Random Number Generator dongle.
Available as [services.infnoise](options.html#opt-services.infnoise.enable).
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index e632a760f892..6e95c45f0d56 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -692,6 +692,7 @@
./services/monitoring/prometheus/alertmanager.nix
./services/monitoring/prometheus/exporters.nix
./services/monitoring/prometheus/pushgateway.nix
+ ./services/monitoring/prometheus/sachet.nix
./services/monitoring/prometheus/xmpp-alerts.nix
./services/monitoring/riemann.nix
./services/monitoring/riemann-dash.nix
diff --git a/nixos/modules/services/monitoring/prometheus/sachet.nix b/nixos/modules/services/monitoring/prometheus/sachet.nix
new file mode 100644
index 000000000000..f40229df8f1e
--- /dev/null
+++ b/nixos/modules/services/monitoring/prometheus/sachet.nix
@@ -0,0 +1,88 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+ cfg = config.services.prometheus.sachet;
+ configFile = pkgs.writeText "sachet.yml" (builtins.toJSON cfg.configuration);
+in
+{
+ options = {
+ services.prometheus.sachet = {
+ enable = mkEnableOption "Sachet, an SMS alerting tool for the Prometheus Alertmanager";
+
+ configuration = mkOption {
+ type = types.nullOr types.attrs;
+ default = null;
+ example = literalExample ''
+ {
+ providers = {
+ twilio = {
+ # environment variables gets expanded at runtime
+ account_sid = "$TWILIO_ACCOUNT";
+ auth_token = "$TWILIO_TOKEN";
+ };
+ };
+ templates = [ ./some-template.tmpl ];
+ receivers = [{
+ name = "pager";
+ provider = "twilio";
+ to = [ "+33123456789" ];
+ text = "{{ template \"message\" . }}";
+ }];
+ }
+ '';
+ description = ''
+ Sachet's configuration as a nix attribute set.
+ '';
+ };
+
+ address = mkOption {
+ type = types.str;
+ default = "localhost";
+ description = ''
+ The address Sachet will listen to.
+ '';
+ };
+
+ port = mkOption {
+ type = types.port;
+ default = 9876;
+ description = ''
+ The port Sachet will listen to.
+ '';
+ };
+
+ };
+ };
+
+ config = mkIf cfg.enable {
+ assertions = singleton {
+ assertion = cfg.configuration != null;
+ message = "Cannot enable Sachet without a configuration.";
+ };
+
+ systemd.services.sachet = {
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" "network-online.target" ];
+ script = ''
+ ${pkgs.envsubst}/bin/envsubst -i "${configFile}" > /tmp/sachet.yaml
+ exec ${pkgs.prometheus-sachet}/bin/sachet -config /tmp/sachet.yaml -listen-address ${cfg.address}:${builtins.toString cfg.port}
+ '';
+
+ serviceConfig = {
+ Restart = "always";
+
+ ProtectSystem = "strict";
+ ProtectHome = true;
+ ProtectKernelTunables = true;
+ ProtectKernelModules = true;
+ ProtectControlGroups = true;
+
+ DynamicUser = true;
+ PrivateTmp = true;
+ WorkingDirectory = "/tmp/";
+ };
+ };
+ };
+}