123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- (define-module (gnu installer services)
- #:use-module (guix records)
- #:use-module (srfi srfi-1)
- #:export (system-service?
- system-service-name
- system-service-type
- system-service-recommended?
- system-service-snippet
- system-service-packages
- desktop-system-service?
- networking-system-service?
- %system-services
- system-services->configuration))
- (define-record-type* <system-service>
- system-service make-system-service
- system-service?
- (name system-service-name)
- (type system-service-type)
- (recommended? system-service-recommended?
- (default #f))
- (snippet system-service-snippet
- (default '()))
- (packages system-service-packages
- (default '())))
- (define %system-services
- (let-syntax ((desktop-environment (syntax-rules ()
- ((_ fields ...)
- (system-service
- (type 'desktop)
- fields ...))))
- (G_ (syntax-rules ()
- ((_ str) str))))
- (list
- (desktop-environment
- (name "GNOME")
- (snippet '((service gnome-desktop-service-type))))
- (desktop-environment
- (name "Xfce")
- (snippet '((service xfce-desktop-service-type))))
- (desktop-environment
- (name "MATE")
- (snippet '((service mate-desktop-service-type))))
- (desktop-environment
- (name "Enlightenment")
- (snippet '((service enlightenment-desktop-service-type))))
- (desktop-environment
- (name "Openbox")
- (packages '((specification->package "openbox"))))
- (desktop-environment
- (name "awesome")
- (packages '((specification->package "awesome"))))
- (desktop-environment
- (name "i3")
- (packages (map (lambda (package)
- `(specification->package ,package))
- '("i3-wm" "i3status" "dmenu" "st"))))
- (desktop-environment
- (name "ratpoison")
- (packages '((specification->package "ratpoison")
- (specification->package "xterm"))))
- (desktop-environment
- (name "Emacs EXWM")
- (packages '((specification->package "emacs")
- (specification->package "emacs-exwm")
- (specification->package "emacs-desktop-environment"))))
-
- (system-service
- (name (G_ "OpenSSH secure shell daemon (sshd)"))
- (type 'networking)
- (snippet '((service openssh-service-type))))
- (system-service
- (name (G_ "Tor anonymous network router"))
- (type 'networking)
- (snippet '((service tor-service-type))))
- (system-service
- (name (G_ "Mozilla NSS certificates, for HTTPS access"))
- (type 'networking)
- (packages '((specification->package "nss-certs")))
- (recommended? #t))
-
- (system-service
- (name (G_ "NetworkManager network connection manager"))
- (type 'network-management)
- (snippet '((service network-manager-service-type)
- (service wpa-supplicant-service-type))))
- (system-service
- (name (G_ "Connman network connection manager"))
- (type 'network-management)
- (snippet '((service connman-service-type)
- (service wpa-supplicant-service-type))))
- (system-service
- (name (G_ "DHCP client (dynamic IP address assignment)"))
- (type 'network-management)
- (snippet '((service dhcp-client-service-type)))))))
- (define (desktop-system-service? service)
- "Return true if SERVICE is a desktop environment service."
- (eq? 'desktop (system-service-type service)))
- (define (networking-system-service? service)
- "Return true if SERVICE is a desktop environment service."
- (eq? 'networking (system-service-type service)))
- (define (system-services->configuration services)
- "Return the configuration field for SERVICES."
- (let* ((snippets (append-map system-service-snippet services))
- (packages (append-map system-service-packages services))
- (desktop? (find desktop-system-service? services))
- (base (if desktop?
- '%desktop-services
- '%base-services)))
- (if (null? snippets)
- `(,@(if (null? packages)
- '()
- `((packages (append (list ,@packages)
- %base-packages))))
- (services ,base))
- `(,@(if (null? packages)
- '()
- `((packages (append (list ,@packages)
- %base-packages))))
- (services (append (list ,@snippets
- ,@(if desktop?
-
-
- '((set-xorg-configuration
- (xorg-configuration
- (keyboard-layout keyboard-layout))))
- '()))
- ,base))))))
|