feat(*): initialize new Snix infrastructure

Co-Authored-By: edef <edef@edef.eu>
Co-Authored-by: Ryan Lahfa <raito@lix.systems>
Change-Id: Ica1cda177a236814de900f50a8a61d288f58f519
This commit is contained in:
Florian Klink 2025-01-06 01:06:47 +01:00
parent 067eff3427
commit a52ea3675c
124 changed files with 27723 additions and 1631 deletions

View file

@ -0,0 +1,4 @@
{ depot, ... }: {
package = import ./package.nix;
module = import ./module.nix;
}

View file

@ -0,0 +1,53 @@
{ config
, lib
, pkgs
, ...
}:
let
cfg = config.services.alertmanager-irc-relay;
yaml = pkgs.formats.yaml { };
configFile = yaml.generate "config.yaml" cfg.settings;
inherit (lib) mkEnableOption mkIf types mkOption mapAttrs mkPackageOption;
in
{
options.services.alertmanager-irc-relay = {
enable = mkEnableOption "Alertmanager IRC relay";
package = mkPackageOption pkgs "alertmanager-irc-relay" { };
settings = mkOption {
type = types.attrsOf yaml.type;
};
environmentFiles = mkOption {
type = types.listOf types.path;
};
};
config = mkIf cfg.enable {
systemd.services.alertmanager-irc-relay = {
description = "Alertmanager IRC Relay Service";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${lib.getExe cfg.package} --config ${configFile}";
Restart = "always";
DynamicUser = true;
ProtectSystem = "strict";
ProtectHome = true;
NoNewPrivileges = true;
EnvironmentFile = cfg.environmentFiles;
};
};
services.alertmanager-irc-relay.settings = mapAttrs (_: lib.mkDefault) {
http_host = "localhost";
http_port = 8000;
msg_once_per_alert_group = true;
use_privmsg = false;
msg_template = "Alert {{ .Labels.alertname }} on {{ .Labels.instance }} is {{ .Status }}";
alert_buffer_size = 2048;
};
};
}

View file

@ -0,0 +1,29 @@
{ lib
, buildGoModule
, fetchFromGitHub
,
}:
buildGoModule rec {
pname = "alertmanager-irc-relay";
version = "0.5.1";
src = fetchFromGitHub {
owner = "google";
repo = "alertmanager-irc-relay";
rev = "v${version}";
hash = "sha256-Rl7o2QPa/IU1snlx/LiJxQok9pnkw9XANnJsu41vNlY=";
};
vendorHash = "sha256-KX+TR0n14+95lldF+0KUo5DbqOKpUDaZNuKMBf0KHFQ=";
ldflags = [ "-s" "-w" ];
meta = {
description = "Send Prometheus Alerts to IRC using Webhooks";
homepage = "https://github.com/google/alertmanager-irc-relay";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ raitobezarius ];
mainProgram = "alertmanager-irc-relay";
};
}