(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)))