summaryrefslogtreecommitdiffstats
path: root/src/jd/features/nextcloud.scm
blob: ff3c9fbdbe642c7527f0be9107ff463c1985a22e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
(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)))