diff --git a/doc/guix.texi b/doc/guix.texi index fde7892cfde720320ef3c49c7764f17d23629b55..f4f19949f1663a3228530338e3e9b65453e8cce0 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -11546,10 +11546,11 @@ The @code{(gnu services networking)} module provides services to configure the network interface. @cindex DHCP, networking service -@deffn {Scheme Procedure} dhcp-client-service [#:dhcp @var{isc-dhcp}] -Return a service that runs @var{dhcp}, a Dynamic Host Configuration -Protocol (DHCP) client, on all the non-loopback network interfaces. -@end deffn +@defvr {Scheme Variable} dhcp-client-service-type +This is the type of services that run @var{dhcp}, a Dynamic Host Configuration +Protocol (DHCP) client, on all the non-loopback network interfaces. Its value +is the DHCP client package to use, @code{isc-dhcp} by default. +@end defvr @deffn {Scheme Procedure} dhcpd-service-type This type defines a service that runs a DHCP daemon. To create a @@ -17168,7 +17169,7 @@ A helper function to quickly add php to an @code{nginx-server-configuration}. A simple services setup for nginx with php can look like this: @example -(services (cons* (dhcp-client-service) +(services (cons* (service dhcp-client-service-type) (service php-fpm-service-type) (service nginx-service-type (nginx-server-configuration diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index c809b4a4a4241c74b8c435cdea3f63a26486c775..61a0e975c7c9cbc6cc16b950e7c93a23946ee14e 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -53,6 +53,7 @@ (define-module (gnu services networking) static-networking-service-type) #:export (%facebook-host-aliases dhcp-client-service + dhcp-client-service-type dhcpd-service-type dhcpd-configuration @@ -202,9 +203,10 @@ (define ifaces "-pf" #$pid-file ifaces)))) (and (zero? (cdr (waitpid pid))) (read-pid-file #$pid-file))))) - (stop #~(make-kill-destructor)))))) + (stop #~(make-kill-destructor)))) + isc-dhcp)) -(define* (dhcp-client-service #:key (dhcp isc-dhcp)) +(define* (dhcp-client-service #:key (dhcp isc-dhcp)) ;deprecated "Return a service that runs @var{dhcp}, a Dynamic Host Configuration Protocol (DHCP) client, on all the non-loopback network interfaces." (service dhcp-client-service-type dhcp)) diff --git a/gnu/system/examples/bare-bones.tmpl b/gnu/system/examples/bare-bones.tmpl index b763258e52406a239c36eeed6fe13bce927eb992..889dcabe6450af9b266b0c39097b5d4cd2eac4ee 100644 --- a/gnu/system/examples/bare-bones.tmpl +++ b/gnu/system/examples/bare-bones.tmpl @@ -44,7 +44,7 @@ ;; Add services to the baseline: a DHCP client and ;; an SSH server. - (services (cons* (dhcp-client-service) + (services (cons* (service dhcp-client-service-type) (service openssh-service-type (openssh-configuration (port-number 2222))) diff --git a/gnu/system/examples/beaglebone-black.tmpl b/gnu/system/examples/beaglebone-black.tmpl index d1130c76b6cbc743a40bda134789f683d009c885..efef682e3aebb28a2b615633861a012db4cb4919 100644 --- a/gnu/system/examples/beaglebone-black.tmpl +++ b/gnu/system/examples/beaglebone-black.tmpl @@ -45,7 +45,7 @@ ;; Globally-installed packages. (packages (cons* screen openssh %base-packages)) - (services (cons* (dhcp-client-service) + (services (cons* (service dhcp-client-service-type) ;; mingetty does not work on serial lines. ;; Use agetty with board-specific serial parameters. (agetty-service diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm index f97581de33fa5ee5375c41723418d80888ef6c06..896d4a8f88ceedeb05d8171fde03022b82718ee7 100644 --- a/gnu/tests/base.scm +++ b/gnu/tests/base.scm @@ -673,7 +673,7 @@ (define %avahi-os (name-service-switch %mdns-host-lookup-nss) (services (cons* (avahi-service #:debug? #t) (dbus-service) - (dhcp-client-service) ;needed for multicast + (service dhcp-client-service-type) ;needed for multicast ;; Enable heavyweight debugging output. (modify-services (operating-system-user-services diff --git a/gnu/tests/databases.scm b/gnu/tests/databases.scm index 5c8ca85c135af4b6143dddad250f3295f5ababbd..e0544bbcd2e8a794dacff13324c1af8b0a9c8895 100644 --- a/gnu/tests/databases.scm +++ b/gnu/tests/databases.scm @@ -35,7 +35,7 @@ (define-module (gnu tests databases) (define %memcached-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service memcached-service-type))) (define* (run-memcached-test #:optional (port 11211)) @@ -130,7 +130,7 @@ (define %mongodb-os (operating-system (inherit (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service mongodb-service-type))) (packages (cons* mongodb %base-packages)))) diff --git a/gnu/tests/dict.scm b/gnu/tests/dict.scm index dd60ffd4644fce039224e916aff212434d84802c..c50e3cd6daa949ce6b5c4c2ccdf73c3816e9af93 100644 --- a/gnu/tests/dict.scm +++ b/gnu/tests/dict.scm @@ -34,7 +34,7 @@ (define-module (gnu tests dict) (define %dicod-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service dicod-service-type (dicod-configuration (interfaces '("0.0.0.0")) diff --git a/gnu/tests/mail.scm b/gnu/tests/mail.scm index 5677969fac6cb5952ea1546a82e20e6dfcd0e642..33aa4d3437ab99bbe03d021e421314e617b9931c 100644 --- a/gnu/tests/mail.scm +++ b/gnu/tests/mail.scm @@ -36,7 +36,7 @@ (define-module (gnu tests mail) (define %opensmtpd-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service opensmtpd-service-type (opensmtpd-configuration (config-file @@ -155,7 +155,7 @@ (define %test-opensmtpd (define %exim-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service mail-aliases-service-type '()) (service exim-service-type (exim-configuration @@ -283,7 +283,7 @@ (define %test-exim (define %dovecot-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (dovecot-service #:config (dovecot-configuration (disable-plaintext-auth? #f) diff --git a/gnu/tests/messaging.scm b/gnu/tests/messaging.scm index f5f99b9f563b25d39073f12fdb5ff577173dc577..36afb987af4c6458d07c484256f6d55444c4a8e6 100644 --- a/gnu/tests/messaging.scm +++ b/gnu/tests/messaging.scm @@ -35,7 +35,7 @@ (define (run-xmpp-test name xmpp-service pid-file create-account) "Run a test of an OS running XMPP-SERVICE, which writes its PID to PID-FILE." (define os (marionette-operating-system - (simple-operating-system (dhcp-client-service) + (simple-operating-system (service dhcp-client-service-type) xmpp-service) #:imported-modules '((gnu services herd)))) @@ -167,7 +167,7 @@ (define %test-prosody (define (run-bitlbee-test) (define os (marionette-operating-system - (simple-operating-system (dhcp-client-service) + (simple-operating-system (service dhcp-client-service-type) (service bitlbee-service-type (bitlbee-configuration (interface "0.0.0.0")))) diff --git a/gnu/tests/monitoring.scm b/gnu/tests/monitoring.scm index 67899987cefd19adf3c0d5a21ae70fdfb6352f2c..3320a19a7738a07fcf3f816144ea1a97abf48029 100644 --- a/gnu/tests/monitoring.scm +++ b/gnu/tests/monitoring.scm @@ -85,7 +85,7 @@ (define marionette (define %prometheus-node-exporter-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service prometheus-node-exporter-service-type (prometheus-node-exporter-configuration)))) diff --git a/gnu/tests/networking.scm b/gnu/tests/networking.scm index ceba7f7d5d12c26ae0594fc16b36e73d22a76554..9f12a4ae8d8849379b97571f08dbf9fcb11b0f46 100644 --- a/gnu/tests/networking.scm +++ b/gnu/tests/networking.scm @@ -39,7 +39,7 @@ (define-module (gnu tests networking) (define %inetd-os ;; Operating system with 2 inetd services. (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service inetd-service-type (inetd-configuration (entries (list @@ -463,7 +463,7 @@ (define inetd-echo-port 7) (define os (marionette-operating-system (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service inetd-service-type (inetd-configuration (entries (list diff --git a/gnu/tests/nfs.scm b/gnu/tests/nfs.scm index 140f03779b209fb03ce4b73dea0c8b83cbf74c84..7ef9f1f7bfbc3f1c7727de5dd106004bbac80d20 100644 --- a/gnu/tests/nfs.scm +++ b/gnu/tests/nfs.scm @@ -55,7 +55,7 @@ (define %base-os (services (cons* (service rpcbind-service-type (rpcbind-configuration)) - (dhcp-client-service) + (service dhcp-client-service-type) %base-services)))) (define (run-nfs-test name socket) diff --git a/gnu/tests/rsync.scm b/gnu/tests/rsync.scm index a6f8fa2bd18b528604f9c84ac8a9bdbcbd58e322..096580022fe07680a5bd409267c9df06d982c9b9 100644 --- a/gnu/tests/rsync.scm +++ b/gnu/tests/rsync.scm @@ -111,7 +111,7 @@ (define* %rsync-os ;; Return operating system under test. (let ((base-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service rsync-service-type)))) (operating-system (inherit base-os) diff --git a/gnu/tests/ssh.scm b/gnu/tests/ssh.scm index 2e40122addaf2f02b303c53656e7774cf7ea4cbc..e5cd439cdf9e98cd5da57c641139ec74bdb01c99 100644 --- a/gnu/tests/ssh.scm +++ b/gnu/tests/ssh.scm @@ -39,7 +39,7 @@ (define* (run-ssh-test name ssh-service pid-file #:key (sftp? #f)) When SFTP? is true, run an SFTP server test." (define os (marionette-operating-system - (simple-operating-system (dhcp-client-service) ssh-service) + (simple-operating-system (service dhcp-client-service-type) ssh-service) #:imported-modules '((gnu services herd) (guix combinators)))) (define vm diff --git a/gnu/tests/version-control.scm b/gnu/tests/version-control.scm index 4409b8a12b3d823852806aa9eef7c30d6c477e46..230aa9edf9e5895a7b16e9fd51378284dfcb02fe 100644 --- a/gnu/tests/version-control.scm +++ b/gnu/tests/version-control.scm @@ -92,7 +92,7 @@ (define %cgit-os ;; Operating system under test. (let ((base-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service cgit-service-type (cgit-configuration (nginx %cgit-configuration-nginx))) @@ -237,7 +237,7 @@ (define %git-nginx-configuration (define %git-http-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service fcgiwrap-service-type) (service nginx-service-type %git-nginx-configuration) %test-repository-service)) @@ -328,7 +328,7 @@ (define %gitolite-test-admin-keypair (define %gitolite-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service openssh-service-type) (service gitolite-service-type (gitolite-configuration diff --git a/gnu/tests/virtualization.scm b/gnu/tests/virtualization.scm index c2939355b25445439be31653378ce88d935a924f..fbdec208050398bddfe8ec8a311b3af4f9fad908 100644 --- a/gnu/tests/virtualization.scm +++ b/gnu/tests/virtualization.scm @@ -32,7 +32,7 @@ (define-module (gnu tests virtualization) (define %libvirt-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (dbus-service) (polkit-service) (service libvirt-service-type))) diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm index 2e209fee97cc7eff7e77b66bd1b2358dbf357fd4..319655396a84e113bcfa46b1bdb5b056715659c2 100644 --- a/gnu/tests/web.scm +++ b/gnu/tests/web.scm @@ -125,7 +125,7 @@ (define marionette (define %httpd-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service httpd-service-type (httpd-configuration (config @@ -154,7 +154,7 @@ (define %nginx-servers (define %nginx-os ;; Operating system under test. (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service nginx-service-type (nginx-configuration (log-directory "/var/log/nginx") @@ -188,7 +188,7 @@ (define %varnish-vcl (define %varnish-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) ;; Pretend to be a web server that serves %index.html-contents. (service varnish-service-type (varnish-configuration @@ -237,7 +237,7 @@ (define %php-fpm-nginx-server-blocks (define %php-fpm-os ;; Operating system under test. (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service php-fpm-service-type) (service nginx-service-type (nginx-configuration @@ -392,7 +392,7 @@ (define %hpcguix-web-specs (define %hpcguix-web-os (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service hpcguix-web-service-type (hpcguix-web-configuration (specs %hpcguix-web-specs))))) @@ -407,7 +407,7 @@ (define %test-hpcguix-web (define %tailon-os ;; Operating system under test. (simple-operating-system - (dhcp-client-service) + (service dhcp-client-service-type) (service tailon-service-type (tailon-configuration (config-file diff --git a/guix/gexp.scm b/guix/gexp.scm index f7a23db87220ba8217d54691bcae024226486f94..ba0d642b17e977ab8fd3b7e2dd92aad44e2859b9 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -438,6 +438,14 @@ (define-record-type <file-append> (base file-append-base) ;<package> | <derivation> | ... (suffix file-append-suffix)) ;list of strings +(define (write-file-append file port) + (match file + (($ <file-append> base suffix) + (format port "#<file-append ~s ~s>" base + (string-join suffix))))) + +(set-record-type-printer! <file-append> write-file-append) + (define (file-append base . suffix) "Return a <file-append> object that expands to the concatenation of BASE and SUFFIX." diff --git a/tests/guix-system.sh b/tests/guix-system.sh index a129efdfcbcb19c3d4b628c5e04ed376212bddb5..23d2da49031a0a217db7532a8c788fb40af2c0f2 100644 --- a/tests/guix-system.sh +++ b/tests/guix-system.sh @@ -153,8 +153,8 @@ cat > "$tmpfile" <<EOF (operating-system $OS_BASE - (services (cons* (dhcp-client-service) - (dhcp-client-service) ;twice! + (services (cons* (service dhcp-client-service-type) + (service dhcp-client-service-type) ;twice! %base-services))) EOF