diff options
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 |