blob: 59eeb90e80f5bd8f771baea73fe79fefef025dad (
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
|
(define-module (jd features networking)
#:use-module (rde features)
#:use-module (rde predicates)
#:use-module (gnu services)
#:use-module (gnu home services)
#:use-module (gnu home services shepherd)
#:use-module (rde home services i2p)
#:use-module (gnu services networking)
#:use-module (gnu system nss)
;; #:use-module (rde system services networking)
#:use-module (rde system services accounts)
#:use-module (gnu packages i2p)
#:use-module (gnu packages networking)
#:use-module (gnu packages ssh)
#:use-module (gnu packages gnome)
#:use-module (rde packages)
#:use-module (guix gexp)
#:export (feature-networking*))
(define* (feature-networking*
#:key
(iwd-autoconnect? #t)
(network-manager network-manager)
(network-manager-applet network-manager-applet)
(network-manager-vpn-plugins '())
mdns?)
"Configure iwd and everything."
(ensure-pred file-like? network-manager)
(ensure-pred file-like? network-manager-applet)
(define f-name 'networking)
(define (get-home-services config)
(list
(simple-service 'network-manager-applet-package
home-profile-service-type
(list network-manager-applet))
;; TODO: Disable nm-applet notification by default
;; gsettings set org.gnome.nm-applet disable-connected-notifications true
(simple-service
'networking-nm-applet-shepherd-service
home-shepherd-service-type
(list
(shepherd-service
(provision '(nm-applet))
(requirement '(dbus))
(stop #~(make-kill-destructor))
(start #~(make-forkexec-constructor
(list #$(file-append network-manager-applet "/bin/nm-applet")
"--indicator")
#:log-file (string-append
(getenv "XDG_STATE_HOME") "/log"
"/nm-applet.log"))))))))
(define (get-system-services config)
(list
(service network-manager-service-type
(network-manager-configuration
(network-manager network-manager)
(vpn-plugins network-manager-vpn-plugins)
(shepherd-requirement '(iwd))))
(service (@@ (rde system services networking) iwd-service-type)
((@@ (rde system services networking) iwd-configuration)
(main-conf
`((Settings ((AutoConnect . ,iwd-autoconnect?)))))))
(service modem-manager-service-type)
(service usb-modeswitch-service-type)))
(feature
(name f-name)
(values `((,f-name . #t)
,@(if mdns?
`((name-service . ,%mdns-host-lookup-nss)
(mdns . #t))
'())))
(home-services-getter get-home-services)
(system-services-getter get-system-services)))
|