summaryrefslogtreecommitdiffstats
path: root/src/jd/features/networking.scm
diff options
context:
space:
mode:
authorjdlugosz963 <jdlugosz963@gmail.com>2025-08-11 17:36:57 +0200
committerjdlugosz963 <jdlugosz963@gmail.com>2025-08-11 17:40:12 +0200
commitbc591dcedf45b80f70661f33c42c68dbd581e901 (patch)
tree4a3cbd7831d8e0d8ce12f318d64e06848c9ea3ab /src/jd/features/networking.scm
parent1ebb0e267b40d86386b66b7b81686461446e39f8 (diff)
downloaddotfiles-bc591dcedf45b80f70661f33c42c68dbd581e901.tar.gz
dotfiles-bc591dcedf45b80f70661f33c42c68dbd581e901.zip
Migrate to RDEHEADmaster
Diffstat (limited to 'src/jd/features/networking.scm')
-rw-r--r--src/jd/features/networking.scm81
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)))