diff options
Diffstat (limited to 'src/jd/features/networking.scm')
-rw-r--r-- | src/jd/features/networking.scm | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/jd/features/networking.scm b/src/jd/features/networking.scm new file mode 100644 index 0000000..59eeb90 --- /dev/null +++ b/src/jd/features/networking.scm | |||
@@ -0,0 +1,81 @@ | |||
1 | (define-module (jd features networking) | ||
2 | #:use-module (rde features) | ||
3 | #:use-module (rde predicates) | ||
4 | |||
5 | #:use-module (gnu services) | ||
6 | #:use-module (gnu home services) | ||
7 | #:use-module (gnu home services shepherd) | ||
8 | #:use-module (rde home services i2p) | ||
9 | #:use-module (gnu services networking) | ||
10 | #:use-module (gnu system nss) | ||
11 | ;; #:use-module (rde system services networking) | ||
12 | #:use-module (rde system services accounts) | ||
13 | |||
14 | #:use-module (gnu packages i2p) | ||
15 | #:use-module (gnu packages networking) | ||
16 | #:use-module (gnu packages ssh) | ||
17 | #:use-module (gnu packages gnome) | ||
18 | #:use-module (rde packages) | ||
19 | |||
20 | #:use-module (guix gexp) | ||
21 | |||
22 | #:export (feature-networking*)) | ||
23 | |||
24 | (define* (feature-networking* | ||
25 | #:key | ||
26 | (iwd-autoconnect? #t) | ||
27 | (network-manager network-manager) | ||
28 | (network-manager-applet network-manager-applet) | ||
29 | (network-manager-vpn-plugins '()) | ||
30 | mdns?) | ||
31 | "Configure iwd and everything." | ||
32 | (ensure-pred file-like? network-manager) | ||
33 | (ensure-pred file-like? network-manager-applet) | ||
34 | |||
35 | (define f-name 'networking) | ||
36 | (define (get-home-services config) | ||
37 | |||
38 | (list | ||
39 | (simple-service 'network-manager-applet-package | ||
40 | home-profile-service-type | ||
41 | (list network-manager-applet)) | ||
42 | ;; TODO: Disable nm-applet notification by default | ||
43 | ;; gsettings set org.gnome.nm-applet disable-connected-notifications true | ||
44 | (simple-service | ||
45 | 'networking-nm-applet-shepherd-service | ||
46 | home-shepherd-service-type | ||
47 | (list | ||
48 | (shepherd-service | ||
49 | (provision '(nm-applet)) | ||
50 | (requirement '(dbus)) | ||
51 | (stop #~(make-kill-destructor)) | ||
52 | (start #~(make-forkexec-constructor | ||
53 | (list #$(file-append network-manager-applet "/bin/nm-applet") | ||
54 | "--indicator") | ||
55 | #:log-file (string-append | ||
56 | (getenv "XDG_STATE_HOME") "/log" | ||
57 | "/nm-applet.log")))))))) | ||
58 | |||
59 | (define (get-system-services config) | ||
60 | (list | ||
61 | (service network-manager-service-type | ||
62 | (network-manager-configuration | ||
63 | (network-manager network-manager) | ||
64 | (vpn-plugins network-manager-vpn-plugins) | ||
65 | (shepherd-requirement '(iwd)))) | ||
66 | (service (@@ (rde system services networking) iwd-service-type) | ||
67 | ((@@ (rde system services networking) iwd-configuration) | ||
68 | (main-conf | ||
69 | `((Settings ((AutoConnect . ,iwd-autoconnect?))))))) | ||
70 | (service modem-manager-service-type) | ||
71 | (service usb-modeswitch-service-type))) | ||
72 | |||
73 | (feature | ||
74 | (name f-name) | ||
75 | (values `((,f-name . #t) | ||
76 | ,@(if mdns? | ||
77 | `((name-service . ,%mdns-host-lookup-nss) | ||
78 | (mdns . #t)) | ||
79 | '()))) | ||
80 | (home-services-getter get-home-services) | ||
81 | (system-services-getter get-system-services))) | ||