Subject: [bug#73927] [PATCH v4 05/18] system: hurd: Remove qemu networking from %base-services/hurd.

From: Janneke Nieuwenhuizen <[email-masked]>
Date: Wed, 30 Oct 2024 15:30:34 +0100

This allows us to use %base-services/hurd for services in a Hurd config for a
real machine without removing static-networking.

* gnu/system/hurd.scm (%base-services/hurd): Factor networking out to...
(%base-services+qemu-networking/hurd): ..this new variable.
* gnu/system/examples/bare-hurd.tmpl (%hurd-os): Use it.
* gnu/services/virtualization.scm (%hurd-vm-operating-system): Use it.
* gnu/system/images/hurd.scm (hurd-barebones-os): Use it.  Add comment about
QEMU and networking for a real machine.

Change-Id: I777a63410383b9bf8b5740e4513dbc1e9fb0fd41
---
 gnu/services/virtualization.scm    |  4 ++--
 gnu/system/examples/bare-hurd.tmpl | 10 ++++++++--
 gnu/system/hurd.scm                | 23 ++++++++++++++---------
 gnu/system/images/hurd.scm         |  2 +-
 4 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index d87e494348..d33dfa6ca7 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Ryan Moe <[email-masked]>
 ;;; Copyright © 2018, 2020-2024 Ludovic Courtès <[email-masked]>
-;;; Copyright © 2020, 2021, 2023 Janneke Nieuwenhuizen <[email-masked]>
+;;; Copyright © 2020, 2021, 2023, 2024 Janneke Nieuwenhuizen <[email-masked]>
 ;;; Copyright © 2021 Timotej Lazar <[email-masked]>
 ;;; Copyright © 2022 Oleg Pykhalov <[email-masked]>
 ;;; Copyright © 2022 Leo Nikkilä <[email-masked]>
@@ -1643,7 +1643,7 @@ (define %hurd-vm-operating-system
                ;; /etc/guix/acl file in the childhurd.  Thus, clear
                ;; 'authorize-key?' so that it's not overridden at activation
                ;; time.
-               (modify-services %base-services/hurd
+               (modify-services %base-services+qemu-networking/hurd
                  (guix-service-type config =>
                                     (guix-configuration
                                      (inherit config)
diff --git a/gnu/system/examples/bare-hurd.tmpl b/gnu/system/examples/bare-hurd.tmpl
index 463c7ee798..68c6d3c166 100644
--- a/gnu/system/examples/bare-hurd.tmpl
+++ b/gnu/system/examples/bare-hurd.tmpl
@@ -1,7 +1,7 @@
 ;; -*-scheme-*-
 
 ;; This is an operating system configuration template
-;; for a "bare bones" setup, with no X11 display server.
+;; for a "bare bones" QEMU setup, with no X11 display server.
 
 ;; To build a disk image for a virtual machine, do
 ;;
@@ -54,6 +54,12 @@
                               (permit-root-login #t)
                               (allow-empty-passwords? #t)
                               (password-authentication? #t)))
-                    %base-services/hurd))))
+                    ;; For installing on a real (non-QEMU) machine, use:
+                    ;; (static-networking-service-type
+                    ;;   (list %loopback-static-networking
+                    ;;        (static-networking
+                    ;;         ...)))
+                    ;; %base-services/hurd
+                    %base-services+qemu-networking/hurd))))
 
 %hurd-os
diff --git a/gnu/system/hurd.scm b/gnu/system/hurd.scm
index 6d6a20cf57..283bae6f10 100644
--- a/gnu/system/hurd.scm
+++ b/gnu/system/hurd.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2020-2024 Ludovic Courtès <[email-masked]>
-;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <[email-masked]>
+;;; Copyright © 2020, 2023, 2024 Janneke Nieuwenhuizen <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -47,6 +47,7 @@ (define-module (gnu system hurd)
   #:use-module (gnu system vm)
   #:export (%base-packages/hurd
             %base-services/hurd
+            %base-services+qemu-networking/hurd
             %hurd-default-operating-system
             %hurd-default-operating-system-kernel
             %setuid-programs/hurd))
@@ -79,14 +80,6 @@ (define %base-packages/hurd
 (define %base-services/hurd
   (append (list (service hurd-console-service-type
                          (hurd-console-configuration (hurd hurd)))
-                (service static-networking-service-type
-                         (list %loopback-static-networking
-
-                               ;; QEMU user-mode networking.  To get "eth0", you need
-                               ;; QEMU to emulate a device for which Mach has an
-                               ;; in-kernel driver, for instance with:
-                               ;; --device rtl8139,netdev=net0 --netdev user,id=net0
-                               %qemu-static-networking))
                 (service guix-service-type
                          (guix-configuration
                           (extra-options '("--disable-chroot"
@@ -102,6 +95,18 @@ (define %base-services/hurd
                            (tty (string-append "tty" (number->string n))))))
                (iota 6 1))))
 
+(define %base-services+qemu-networking/hurd
+  (cons
+   (service static-networking-service-type
+            (list %loopback-static-networking
+
+                  ;; QEMU user-mode networking.  To get "eth0", you need
+                  ;; QEMU to emulate a device for which Mach has an
+                  ;; in-kernel driver, for instance with:
+                  ;; --device rtl8139,netdev=net0 --netdev user,id=net0
+                  %qemu-static-networking))
+   %base-services/hurd))
+
 (define %setuid-programs/hurd
   ;; Default set of setuid-root programs.
   (map file-like->setuid-program
diff --git a/gnu/system/images/hurd.scm b/gnu/system/images/hurd.scm
index 9b618f7dc6..01c422a54f 100644
--- a/gnu/system/images/hurd.scm
+++ b/gnu/system/images/hurd.scm
@@ -60,7 +60,7 @@ (define hurd-barebones-os
                               (permit-root-login #t)
                               (allow-empty-passwords? #t)
                               (password-authentication? #t)))
-               %base-services/hurd))))
+                    %base-services+qemu-networking/hurd))))
 
 (define hurd-initialize-root-partition
   #~(lambda* (#:rest args)
-- 
Janneke Nieuwenhuizen <[email-masked]>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com