* gnu/installer/newt/final.scm (run-install-success-page): Return
'success.
* gnu/installer.scm (installer-program): Check the result of the 'final
step and reboot upon success.
This allows the installer to distinguish success from failure, and also
ensures the shell that runs 'guix system init' exits upon completion.
* gnu/installer/utils.scm (run-shell-command)[pause]: New procedure.
Add "exec" before COMMAND in the script. Guard 'invoke' call and handle
'invoke-error?'. Add call to 'pause' on completion.
* gnu/installer/final.scm (install-system): Remove 'false-if-exception'.
Fixes <https://bugs.gnu.org/35399>.
* gnu/installer/newt/user.scm (run-root-password-page): New procedure.
* gnu/installer/user.scm (users->configuration): Filter out the "root"
account.
* gnu/installer/final.scm (create-user-database): Set 'uid' field in
'user-account' form.
Partly fixes <https://bugs.gnu.org/35399>.
* gnu/installer/user.scm (<user>)[password]: New field.
* gnu/installer/final.scm (%seed): New variable.
(integer->alphanumeric-char, random-string)
(create-user-database): New procedures.
(install-system): Call 'create-user-database'.
* gnu/installer/newt/final.scm (run-install-shell): Add #:users and pass
it to 'install-system'.
(run-final-page): Pass #:users to 'run-install-shell'.
* gnu/installer/newt/user.scm (run-user-add-page): Add password entry.
Pass its result as the 'password' field of <user>.
* gnu/installer/utils.scm (run-shell-command): Add #:locale and honor it.
* gnu/installer/newt/final.scm (run-install-shell): Add 'locale'
parameter; pass it to 'install-system'.
(run-final-page): Obtain locale from RESULT; pass it to 'run-install-shell'.
* gnu/installer/final.scm (install-system): Add 'locale' parameter; pass
it to 'run-shell-command'.
When trying to jump to the first step, DONE-STEPS ends-up being null, which
fails the matching condition.
* gnu/installer/steps.scm (skip-to-step): Split matching conditions to handle
the empty DONE-STEPS case properly.
Previously, we would always (1) put English first, and (2) sort the
other layouts based on their English description. This fixes both
issues.
* gnu/installer/newt/keymap.scm (sort-layouts)[layout<?]: New procedure.
[preferred]: New variable.
Partition according to both the 'name' and 'synopsis' fields. Sort both
the main layouts and the other layouts according to 'layout<?'.
That way "Österreich" comes before "Schweiz" in a German locale (or
pretty much any sane locale.)
* gnu/installer/newt/page.scm (run-listbox-selection-page)[sort-listbox-items]:
Use 'string-locale<?' instead of 'string<=?'.
Previously we'd call 'setlocale' only after the complete 'locale' step
had finished.
* gnu/installer/newt/locale.scm (run-language-page): Set the 'LANGUAGE'
environment variable before returning.
* gnu/installer/services.scm (<system-service>)[snippet]: Change to be a
list of sexps and add default value.
[packages]: New field.
(%system-services): Adjust 'snippet' fields to be lists of sexps.
Add Openbox, awesome, i3, and ratpoison.
(system-services->configuration): Adjust 'snippet' handling. Honor
'packages' field.
Previously, for non-desktop configs, users could choose any number of
network management methods, including 0, 2, or more.
* gnu/installer/newt/services.scm (run-networking-cbt-page): Remove
'network-management?' parameter and select only 'networking services.
(run-network-management-page): New procedure.
(run-services-page): Call it when DESKTOP is the empty list.
* gnu/installer/services.scm (%system-services): Mark networking service
names with 'G_'.
* gnu/installer/newt/services.scm (run-networking-cbt-page): Pass
'system-service-name' through 'G_'.
* gnu/installer/newt/services.scm (run-networking-cbt-page): New procedure.
(run-services-page): Call it.
* gnu/installer/services.scm (%system-services): Add OpenSSH and Tor.
(networking-system-service?): New procedure.
* gnu/installer/steps.scm (format-configuration): Add 'networking' and
'ssh' to the service modules.
* gnu/installer/services.scm (<desktop-environment>): Rename to...
(<system-service>): ... this. Add a 'type' field.
(%desktop-environments): Rename to...
(%system-services): ... this.
(desktop-system-service?): New procedure.
(desktop-environments->configuration): Rename to...
(system-services->configuration): ... this. Determine the base list of
services based on whether SERVICES contains at least one "desktop"
service.
* gnu/installer/newt/services.scm (run-desktop-environments-cbt-page):
Adjust accordingly.
* gnu/installer.scm (installer-steps): Likewise.
* gnu/installer/newt/locale.scm (run-language-page): Simplify text.
(run-territory-page): Likewise.
(run-codeset-page): Likewise.
(run-locale-page): Don't call 'run-codeset-page' when "UTF-8" is among
the codesets of LOCALES.
* gnu/installer/parted.scm (root-user-partition?): New procedure.
(bootloader-configuration): Use it.
(user-partition-missing-modules, initrd-configuration): New procedures.
(user-partitions->configuration): Call 'initrd-configuration'.o
* gnu/installer.scm (not-config?): Rename to...
(module-to-import?): ... this. Add cases to exclude non-installer and
non-build (gnu …) modules.
(installer-program)[installer-builder]: Add GUIX to the extension list.
* gnu/installer/newt/partition.scm (run-partioning-page): When METHOD is
'manual, use 'filter-map' on DEVICES, not 'map', since 'disk-new' can
return #f.