summaryrefslogtreecommitdiff
path: root/tw/home/cern.scm
blob: 870e6ea0a7b571abadcc544f5923f5aade7b7ef2 (about) (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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
;; This "home-environment" file can be passed to 'guix home reconfigure'
;; to reproduce the content of your profile.  This is "symbolic": it only
;; specifies package names.  To reproduce the exact same profile, you also
;; need to capture the channels being used, as returned by "guix describe".
;; See the "Replicating Guix" section in the manual.

;; See also, for some tips:
;; https://github.com/alezost/shepherd-config/blob/master/init.scm

(define-module (tw home cern)
  #:use-module ((gnu)
                #:select (use-package-modules))
  #:use-module (gnu home)
  #:use-module (gnu home services)
  #:use-module (gnu home services desktop)
  #:use-module (gnu home services guix)
  #:use-module (gnu home services mcron)
  #:use-module (gnu home services pm)
  #:use-module (gnu home services shepherd)
  #:use-module (gnu packages)
  #:use-module (gnu services)
  #:use-module (gnu services shepherd)
  #:use-module (guix channels)
  #:use-module (guix gexp)
  #:use-module ((nongnu packages messaging)
                #:select (zoom))
  #:use-module (tw home)
  #:use-module (tw packages alice)
  #:use-module (tw packages ci)
  #:use-module (tw packages catppuccin)
  #:use-module (tw packages xorg)
  #:use-module (tw gexp)
  #:use-module (tw services desktop)
  #:use-module (tw services git)
  #:use-module (tw services gnupg)
  #:use-module (tw theme))

(use-package-modules calendar dav mail web-browsers xdisorg xorg)

(define pim-packages
  (list vdirsyncer khal khard aerc lynx))   ; lynx for HTML mail

(define pim-services
  (list
   (simple-service 'pim-config home-xdg-configuration-files-service-type
     `(("aerc/accounts.conf" ,(local-file "files/aerc/accounts.work.conf"))
       ("aerc/aerc.conf" ,(local-file "files/aerc/aerc.conf"))
       ("aerc/binds.conf" ,(local-file "files/aerc/binds.conf"))
       ("aerc/filters" ,(local-file "files/aerc/filters" #:recursive? #t))
       ("aerc/stylesets" ,(local-file "files/aerc/stylesets" #:recursive? #t))))

   (simple-service 'mail-files home-files-service-type
     `(;; The file from git main is newer than the one bundled with the
       ;; packaged neomutt version and contains a few fixes.
       (".local/bin/mutt_oauth2.py"
        ,(local-file "files/neomutt/contrib/oauth2/mutt_oauth2.py" #:recursive? #t))))))

(define-public %cern-home
  (home-environment
   (packages
    ;; These packages will show up in the home profile, under ~/.guix-home/profile.
    (append %common-packages %interactive-packages pim-packages))

   ;; To search for available home services, run 'guix home search KEYWORD'.
   (services
    (cons*
     ;; This can't be a `service' as that would remove the 'guix channel.
     (simple-service 'nonfree-channels home-channels-service-type
       (list
        (channel
         (name 'nonguix)
         (url "https://gitlab.com/nonguix/nonguix")
         ;; Enable signature verification:
         (introduction
          (make-channel-introduction
           "897c1a470da759236cc11798f4e0a5f7d4d59fbc"
           (openpgp-fingerprint
            "2A39 3FFF 68F4 EF7A 3D29  12AF 6F51 20A0 22FB B2D5"))))))

     (simple-service 'remote-desktop-config home-files-service-type
       `((".local/share/vinagre/vinagre-bookmarks.xml" ,(local-file "files/vinagre-bookmarks.xml"))))

     ;; Redshift: make the screen turn redder at night.
     (service home-redshift-service-type
       (home-redshift-configuration
        ;; See info '(guix)Desktop Home Services'.
        (location-provider 'manual)
        ;; Approximate location
        (latitude 46.0)
        (longitude 6.0)
        ;; (location-provider 'geoclue2)  ; TODO: currently waits forever for a location -- not sure why geoclue doesn't work
        ;; (daytime-temperature 6500)     ; default 6500
        ;; (nighttime-temperature 4500)   ; default 4500
        (daytime-brightness 1.0)
        (nighttime-brightness 0.7)
        (extra-content "fade=0")))  ; with fade=1, restarting redshift causes flickering for a few secs

     (service home-desktop-layout-service-type
       (home-desktop-layout-configuration
        (desktop-background "~/.config/X11/ridge-view.jpg")
        (monitors
         (list (home-monitor-configuration
                (name "DP-2")
                (xrandr-options '("--primary" "--auto")))
               (home-monitor-configuration
                (name "DP-1-8")
                ;; This can do 4K but HiDPI is a pain.
                (xrandr-options '("--mode" "1920x1080" "--rate" "60.00"
                                  "--left-of" "DP-2")))))))

     ;; On my work machine, Git must always use my work PGP key.
     (service home-git-service-type
       (home-git-configuration
        (default-email "timo.wilken@cern.ch")
        (default-signing-key "C2249BBE5E8761C943A0CFA1B7B3914BF63ACD7C")))

     (openssh-service #f)

     (service home-gnupg-service-type
       (home-gnupg-configuration
        (default-key "C2249BBE5E8761C943A0CFA1B7B3914BF63ACD7C")
        (gui-pinentry? #t)))

     (append %common-services (interactive-services) pim-services)))))

%cern-home