reformat, fix load env vars, update README

This commit is contained in:
Jonas Heinrich 2025-08-18 16:00:51 +02:00
parent 9a76430181
commit e658def798
3 changed files with 159 additions and 126 deletions

View file

@ -44,7 +44,28 @@ Add this to your `configuration.nix` file
```nix ```nix
environment.etc."eintopf-radar-sync-secrets.yml".text = '' environment.etc."eintopf-radar-sync-secrets.yml".text = ''
EINTOPF_AUTHORIZATION_TOKEN=foobar23 accounts:
- name: Sales
imap_server: mail.example.com
imap_port: 993
username: sales@example.com
password: secret
- name: Support
imap_server: mail.example.com
imap_port: 993
username: support@example.com
password: secret
mail:
smtp_server: mail.example.com
smtp_port: 587
smtp_username: monitoring@example.com
smtp_password: secret
from_address: monitoring@example.com
recipients:
- admin1@example.com
- admin2@example.com
''; '';
services.mail-quota-warning = { services.mail-quota-warning = {

View file

@ -263,8 +263,8 @@ def main():
args = parse_args() args = parse_args()
config = load_config(args.config) config = load_config(args.config)
state = load_state() state = load_state()
interval_days = config.get("check_interval_days", 7) interval_days = get_config_value(config, "CHECK_INTERVAL_DAYS", "check_interval_days", 7, int)
threshold = config.get("quota_warning_threshold_percent", 80) threshold = get_config_value(config, "QUOTA_WARNING_THRESHOLD_PERCENT", "quota_warning_threshold_percent", 80, int)
# For thread-safe state updates # For thread-safe state updates
state_lock = threading.Lock() state_lock = threading.Lock()

View file

@ -1,4 +1,9 @@
{config, lib, pkgs, ...}: {
config,
lib,
pkgs,
...
}:
let let
cfg = config.services.mail-quota-warning; cfg = config.services.mail-quota-warning;
@ -82,7 +87,8 @@ in
wants = [ "network-online.target" ]; wants = [ "network-online.target" ];
environment = { environment = {
PYTHONUNBUFFERED = "1"; PYTHONUNBUFFERED = "1";
} // lib.mapAttrs (_: v: toString v) cfg.settings; }
// lib.mapAttrs (_: v: toString v) cfg.settings;
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";
ExecStart = lib.getExe pkgs.mail-quota-warning; ExecStart = lib.getExe pkgs.mail-quota-warning;
@ -109,14 +115,21 @@ in
ProtectProc = "invisible"; ProtectProc = "invisible";
ProtectSystem = "strict"; ProtectSystem = "strict";
RemoveIPC = true; RemoveIPC = true;
RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; RestrictAddressFamilies = [
"AF_INET"
"AF_INET6"
];
RestrictNamespaces = true; RestrictNamespaces = true;
RestrictRealtime = true; RestrictRealtime = true;
RestrictSUIDSGID = true; RestrictSUIDSGID = true;
SystemCallArchitectures = "native"; SystemCallArchitectures = "native";
SystemCallFilter = [ "@system-service" "~@privileged" ]; SystemCallFilter = [
"@system-service"
"~@privileged"
];
UMask = "0077"; UMask = "0077";
} // lib.optionalAttrs (cfg.secretFile != [ ]) { }
// lib.optionalAttrs (cfg.secretFile != [ ]) {
EnvironmentFile = cfg.secretFile; EnvironmentFile = cfg.secretFile;
}; };
}; };
@ -138,4 +151,3 @@ in
}; };
} }