From a8c88648271f83441f4339692e4309583391c99b Mon Sep 17 00:00:00 2001 From: Kenny Ballou Date: Sun, 21 Jan 2024 18:06:03 -0700 Subject: homes: axo: add recoll indexer mcron service Extend home-mcron to run recoll indexing nightly. Signed-off-by: Kenny Ballou --- homes/axo.scm | 5 +++- kbg/services/mcron/recoll.scm | 54 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 kbg/services/mcron/recoll.scm diff --git a/homes/axo.scm b/homes/axo.scm index 2e813926..382d070b 100644 --- a/homes/axo.scm +++ b/homes/axo.scm @@ -23,6 +23,7 @@ #:use-module (kbg packages profiles statistics) #:use-module (kbg services config dotfiles) #:use-module (kbg services emacs) + #:use-module (kbg services mcron recoll) #:use-module (kbg services pipewire) #:use-module (kbg services shell) #:use-module (kbg services shepherd) @@ -41,7 +42,9 @@ (append bash-service (configs-for-host 'axo) emacs-service - (list (service home-mcron-service-type)) + (list (service home-mcron-service-type) + (service recoll-mcron-service-type + (recoll-mcron-configuration))) (list (service home-dbus-service-type) (service home-pipewire-service-type)) (services-for-host 'axo)))) diff --git a/kbg/services/mcron/recoll.scm b/kbg/services/mcron/recoll.scm new file mode 100644 index 00000000..0ec2da51 --- /dev/null +++ b/kbg/services/mcron/recoll.scm @@ -0,0 +1,54 @@ +(define-module (kbg services mcron recoll) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:use-module (kbg) + #:use-module (guix) + #:use-module (guix gexp) + #:use-module (guix records) + #:use-module (gnu) + #:use-module (gnu home) + #:use-module (gnu home services) + #:use-module (gnu home services mcron) + #:use-module (gnu services) + #:use-module (gnu services configuration) + #:use-module (gnu packages search) + #:export (recoll-mcron-service-type + recoll-mcron-configuration + recoll-mcron-configuration? + recoll-mcron-configuration-package + recoll-mcron-configuration-schedule)) + +(define (string-or-gexp? obj) + (or (string? obj) (gexp? obj))) + +(define string-list? + (match-lambda + (((? string?) ...) #t) + (_ #f))) + +(define-configuration/no-serialization recoll-mcron-configuration + (package + (file-like recoll) + "The recoll package to use.") + (schedule + (string-or-gexp "30 3 * * *") + "String or G-exp denoting mcron schedule for periodic indexing with recoll...")) + +(define (recoll-job configuration) + (match-record configuration + (package schedule) + (let ((recoll-indexer (program-file + "recollindex-home-mcron" + #~(begin + (execl #$(file-append package "/bin/recollindex") + "recollindex"))))) + (list #~(job #$schedule #$recoll-indexer))))) + +(define recoll-mcron-service-type + (service-type + (name 'recoll-mcron-service) + (extensions + (list (service-extension home-mcron-service-type + recoll-job))) + (description "Periodic Indexing of files for Recoll File Searching") + (default-value (recoll-mcron-configuration)))) -- cgit v1.2.1