From 94bdfc84fcd9659f7363d82127ae02ca49fa8f4d Mon Sep 17 00:00:00 2001 From: Timo Wilken Date: Sun, 11 Feb 2024 22:41:39 +0100 Subject: Update ledgerplot and fetch exchange rates on weeknights --- tw/packages/finance.scm | 4 ++-- tw/system/vin.scm | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/tw/packages/finance.scm b/tw/packages/finance.scm index facb2bf7..29a4a405 100644 --- a/tw/packages/finance.scm +++ b/tw/packages/finance.scm @@ -57,13 +57,13 @@ hledger, for use in Grafana, e.g. to create nice graphs.") (define-public ledgerplot (package (name "ledgerplot") - (version "1.1.0") + (version "1.1.1") (source (origin (method git-fetch) (uri (git-reference (url "https://git.twilken.net/ledgerplot") (commit version))) - (sha256 (base32 "04i6chp2b3vd0i7bj9zp2bfy50mdbjcdr9zqspy9np3y7i48pimv")))) + (sha256 (base32 "0cl289ick1138fpldvfk5jxh7cpgj59n3rv0b4j3sm6hpx8dbblv")))) ;; Ledgerplot only works with SBCL. (build-system asdf-build-system/sbcl) (arguments `(#:phases diff --git a/tw/system/vin.scm b/tw/system/vin.scm index 4d6b216f..e38f545a 100644 --- a/tw/system/vin.scm +++ b/tw/system/vin.scm @@ -8,6 +8,7 @@ #:use-module (gnu services docker) #:use-module (gnu services dbus) #:use-module (gnu services desktop) ; elogind-service-type + #:use-module (gnu services mcron) #:use-module (gnu services shepherd) #:use-module (gnu services syncthing) #:use-module (gnu system locale) @@ -214,7 +215,7 @@ (name "timo") (create-database? #t) (permissions '(login))))) - (simple-service 'ledgerplot shepherd-root-service-type + (simple-service 'ledgerplot-file-watcher shepherd-root-service-type (list (shepherd-service (provision '(ledgerplot)) (requirement '(postgresql syncthing-timo)) @@ -222,7 +223,7 @@ "Monitor a ledger file and keep a database in sync with it.") (start #~(make-forkexec-constructor (list #$(file-append ledgerplot "/bin/ledgerplot") - "-wd" "timo") + "-wd" "timo" "-H" "/var/run/postgresql") #:user "timo" #:group "users" #:environment-variables (cons* @@ -235,6 +236,15 @@ (car locale-definitions))) (default-environment-variables)))) (stop #~(make-kill-destructor))))) + (simple-service 'ledgerplot-exchange-rates mcron-service-type + ;; Ledgerplot uses the Boerse Frankfurt API, so run after markets close there. + ;; According to https://www.boerse.de/handelszeiten/, it's 22:00 CET/CEST. + (list #~(job "5 22 * * mon-fri" ; weekdays after market close + #$(program-file "ledgerplot-exchange-rates-command" + #~(begin + (setenv "LEDGER_FILE" "/home/timo/sync/ledger/ledger.journal") + (execlp #$(file-append ledgerplot "/bin/ledgerplot") "-em"))) + #:user "timo"))) (service unattended-upgrade-service-type (unattended-upgrade-configuration -- cgit v1.2.3