~ruther/guix-local

0ac92150b1e4de3486b453fc10debc082a1a5f1f — Janneke Nieuwenhuizen a month ago 0afb832
installer: Add Hurd x86_64 as an option.

* gnu/installer/newt/kernel.scm (run-kernel-page): Rename "Hurd" to "Hurd
32-bit (experimental)".  On 64-bit, also offer "Hurd 64-bit (highly
experimental!)", and make these strings translatable.  Make "Linux Libre" the
first option.  Add a line break after "When in doubt...".  Upon re-entrry,
use pre-selected kernel as the default.  Make sure to always [re]set
%current-target-system, as this page may be revisited and another kernel
choice selected.
* gnu/installer/kernel.scm (kernel->configuration): Update accordingly.
* gnu/installer/final.scm (install-system): Also cater for the 64-bit Hurd by
simply adding --target=(%current-target-system).

Change-Id: I14cb2d2815265b8841c16cf9bcc3857b1024f507
3 files changed, 38 insertions(+), 13 deletions(-)

M gnu/installer/final.scm
M gnu/installer/kernel.scm
M gnu/installer/newt/kernel.scm
M gnu/installer/final.scm => gnu/installer/final.scm +5 -3
@@ 1,7 1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019, 2020, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2024,2026 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 168,8 168,10 @@ or #f.  Return #t on success and #f on failure."
                            (const '())))
         (install-command (append `( "guix" "system" "init"
                                     "--fallback"
                                     ,@(if (target-hurd?)
                                           '("--target=i586-pc-gnu")
                                     ,@(if (%current-target-system)
                                           `(,(string-append
                                               "--target="
                                               (%current-target-system)))
                                           '()))
                                  options
                                  (list (%installer-configuration-file)

M gnu/installer/kernel.scm => gnu/installer/kernel.scm +2 -2
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2024, 2026 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 27,7 27,7 @@
  str)

(define (kernel->configuration kernel dry-run?)
  (if (equal? kernel "Hurd")
  (if (string-prefix? "Hurd" kernel)
      `((kernel %hurd-default-operating-system-kernel)
        ,(comment (G_ ";; \"noide\" disables the gnumach IDE driver, enabling rumpdisk.\n"))
        (kernel-arguments '("noide"))

M gnu/installer/newt/kernel.scm => gnu/installer/newt/kernel.scm +31 -8
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2024, 2026 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 23,23 23,46 @@
  #:export (run-kernel-page))

(define (run-kernel-page)
  (let* ((kernels `(,@(if (target-x86?) '("Hurd") '())
                    "Linux Libre"))
  ;; TRANSLATORS: "Hurd" is a proper noun and must not be translated.
  (let* ((hurd-x86 (G_ "Hurd 32-bit (experimental)"))
         (hurd-x86_64 (G_ "Hurd 64-bit (highly experimental!)"))
         (linux-libre "Linux Libre")
         (kernels (parameterize ((%current-target-system #f))
                    `(,linux-libre
                      ,@(cond ((target-x86-64?)
                               (list hurd-x86 hurd-x86_64))
                              ((target-x86?)
                               (list hurd-x86))
                              (else
                               '())))))
         (default (cond ((equal? (%current-target-system) "i586-pc-gnu")
                         hurd-x86)
                        ((equal? (%current-target-system) "x86_64-pc-gnu")
                         hurd-x86_64)
                        (else
                         linux-libre)))
         (result
          (run-listbox-selection-page
           #:title (G_ "Kernel")
           #:info-text
           ;; TRANSLATORS: "Hurd" is a proper noun and must not be translated.
           ;; TRANSLATORS: "Linux Libre" is a literal and must not be translated.
           (G_ "Please select a kernel.  When in doubt, choose \"Linux Libre\".
The Hurd is offered as a technology preview and development aid; many packages \
are not yet available in Guix, such as a desktop environment or even a windowing \
system (X, Wayland).")
are not yet available in Guix, such as a desktop environment or even a \
windowing system (X, Wayland).")
           #:listbox-items kernels
           #:listbox-item->text identity
           #:listbox-default-item "Linux Libre"
           #:listbox-default-item default
           #:button-text (G_ "Back")
           #:button-callback-procedure
           (lambda _
             (abort-to-prompt 'installer-step 'abort)))))
    (when (equal? result "Hurd")
      (%current-target-system "i586-pc-gnu"))
    (let ((target (cond ((equal? result hurd-x86)
                         "i586-pc-gnu")
                        ((equal? result hurd-x86_64)
                         "x86_64-pc-gnu")
                        (else
                         #f))))
      (%current-target-system target))
    result))