(define-module (jd features nextcloud) #:use-module (rde features) #:use-module (rde predicates) #:use-module (gnu packages) #:use-module (gnu packages polkit) #:use-module (gnu services) #:use-module (gnu services configuration) #:use-module (gnu home services) #:use-module (gnu home services shepherd) #:use-module (guix gexp) #:export (feature-nextcloud)) (define* (feature-nextcloud #:key (nextcloud-client (@ (gnu packages sync) nextcloud-client)) (gnome-keyring (@ (gnu packages gnome) gnome-keyring)) (polkit? #t)) (define f-name 'nextcloud) (define (get-home-services config) (list (simple-service 'add-nextcloud-home-package home-profile-service-type (append (if polkit? (list gnome-keyring) '()) (list nextcloud-client))) (simple-service 'nextcloud-shepherd-service home-shepherd-service-type (list (shepherd-service (provision `(nextcloud)) (auto-start? #t) (stop #~(make-kill-destructor)) (start #~(make-forkexec-constructor (list #$(program-file "nextcloud" #~(begin (setenv "QT_QPA_PLATFORM" "wayland-egl;xcb") (apply system* (list #$(file-append (@ (gnu packages sync) nextcloud-client) "/bin/nextcloud"))))))))))))) (feature (name f-name) (values `((,f-name . #t))) (home-services-getter get-home-services)))