aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenny Ballou <kb@devnulllabs.io>2024-01-21 18:06:03 -0700
committerKenny Ballou <kb@devnulllabs.io>2024-01-21 20:08:26 -0700
commita8c88648271f83441f4339692e4309583391c99b (patch)
treed9ec71c922a2b051a28171e93f36b47c0a2e8afb
parent0ea1c874eb365b2a36540c5e92e0c5c2f1899965 (diff)
downloaddotfiles-a8c88648271f83441f4339692e4309583391c99b.tar.gz
dotfiles-a8c88648271f83441f4339692e4309583391c99b.tar.xz
homes: axo: add recoll indexer mcron service
Extend home-mcron to run recoll indexing nightly. Signed-off-by: Kenny Ballou <kb@devnulllabs.io>
-rw-r--r--homes/axo.scm5
-rw-r--r--kbg/services/mcron/recoll.scm54
2 files changed, 58 insertions, 1 deletions
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 <recoll-mcron-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))))