Hello Guix gurus, I have a hard time wrapping my head around how to configure smartd (1) and send notifications via ntfy.sh (2).
1. Configuration of smartd I could not find anything in the admin module in the Guix repository on how to configure smartd (i.e. smartd-configuration) - there I found only smartmontools build procedure. When checking /var/log/messages I could see that smartd defaults to some configuration file in the store rather than the default /etc/smartd.conf. So I tried to write my own: (define smartd-send-ntfy (plain-file "/usr/local/sbin/send-ntfy" "#!/bin/sh\ncurl ntfy.sh/<my-topic> -d 'curl -Ls -H "Title: $SMARTD_SUBJECT" -d "$SMARTD_FAILTYPE Device: $SMARTD_DEVICE Time: $SMARTD_TFIRST Message: $SMARTD_FULLMESSAGE"')) (define smartd-config-file (plain-file "smartd.conf" "DEVICESCAN -a -s (S/../.././03|L/../01/./04) -m <nomailer> -M exec /usr/local/sbin/send-ntfy -M test")) (services (append (list ... (simple-service 'smartd-service shepherd-root-service-type (list (shepherd-service (documentation "Monitor disks for failure.") (provision '(smartd)) (requirement '(udev user-processes)) (start #~(make-forkexec-constructor (list "/run/current-system/profile/sbin/smartd" "--no-fork" "-c" smartd-config-file))) (stop #~(make-kill-destructor)))))) %base-services)) This results in a warning "possibly unbound variable `smartd-config-file". Tried to understand G-expressions and put #$smartd-config-file in there but I am already overwhelmed with (un)quote so I guess I am missing the point here. Also how do I get the store path from smartd-notify-send into smartd-config-file because my naive approach putting the path into plain-file name argument does not work. 2. Notifications Also I have a bunch of mcron jobs which I also would like to use ntfy.sh to send messages to me. How do I append a string to the srcub job passing a message to msg? Is this even the right way? (define (notify msg) (string-append "curl ntfy.sh/sTu0vFzNZqfMSLJiRAxuTHEUHy8BYWW6 -d '" msg "'")) (define monthly-srub-job #~(job "0 3 1 * *" "btrfs scrub start -dB /pool" )) Sorry for these beginner questions, I just started diverting from copy-pasting config parts from others. Thank you!