diff options
author | Timo Wilken | 2023-05-28 20:35:19 +0200 |
---|---|---|
committer | Timo Wilken | 2023-05-28 21:34:21 +0200 |
commit | 9447bb2ec9bc9e6fa75c9709adf485151032076a (patch) | |
tree | 2171732755f47ceb6b13a5351b15c3ace41d7b17 /tw/system | |
parent | 98374ca5f758bc7d82557e0d2b5c710175d37a21 (diff) |
Deploy hledger dashboard daemon
Diffstat (limited to 'tw/system')
-rw-r--r-- | tw/system/vin.scm | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tw/system/vin.scm b/tw/system/vin.scm index 5b190756..9d64e157 100644 --- a/tw/system/vin.scm +++ b/tw/system/vin.scm @@ -1,14 +1,19 @@ (define-module (tw system vin) #:use-module (gnu) #:use-module (gnu bootloader grub) + #:use-module (gnu packages databases) #:use-module (gnu services admin) ; unattended-upgrade-service-type + #:use-module (gnu services databases) #:use-module (gnu services docker) #:use-module (gnu services dbus) #:use-module (gnu services desktop) ; elogind-service-type + #:use-module (gnu services shepherd) + #:use-module (gnu services syncthing) #:use-module (gnu system locale) #:use-module (gnu system nss) #:use-module (guix gexp) #:use-module (tw channels) + #:use-module (tw packages finance) #:use-module (tw services grafana) #:use-module (tw services restic) #:use-module (tw system)) @@ -113,6 +118,33 @@ (service dbus-root-service-type) ; required by `docker-service-type' (service elogind-service-type) ; required by `docker-service-type' + ;; Personal statistics exporter: stores hledger data (and soon location + ;; data?) in Postgres for Grafana to read. + (service syncthing-service-type + (syncthing-configuration (user "timo"))) + (service postgresql-service-type + (postgresql-configuration + ;; hledger-dashboard is linked against libpq from postgresql@14. + ;; Using a different Postgres server version is probably fine, though. + (postgresql postgresql-14))) + (simple-service 'hledger-dashboard-roles postgresql-role-service-type + (list (postgresql-role + (name "timo") + (create-database? #t) + (permissions '(login))))) + (simple-service 'hledger-dashboard shepherd-root-service-type + (list (shepherd-service + (provision '(hledger-dashboard)) + (requirement '(postgresql syncthing-timo)) + (documentation + "Monitor a ledger file and keep a database in sync with it.") + (start #~(make-forkexec-constructor + (list #$(file-append hledger-dashboard "/bin/hledger-dashboard") + ;; This is where Syncthing puts the ledger file. + "-f" "/home/timo/sync/ledger/ledger.journal") + #:user "timo" #:group "users")) + (stop #~(make-kill-destructor))))) + (service unattended-upgrade-service-type (unattended-upgrade-configuration (schedule "22 07 * * sat") ; 07:22 every Saturday morning |