Commit graph

258 commits

Author SHA1 Message Date
Josselin Poiret
4989f6acff
installer: Fix segfault on double logical partition removal.
* gnu/installer/parted.scm (auto-partition!): Avoid removing logical
partitions twice.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-09-01 18:43:28 +02:00
Tobias Geerinckx-Rice
d59442f24e
installer: parted: Don't export WITH-DELAY-DEVICE-IN-USE?.
* gnu/installer/parted.scm: Remove WITH-DELAY-DEVICE-IN-USE? from the
module's export list.
2022-08-14 02:00:02 +02:00
Ludovic Courtès
ff9522fb69
installer: Add comments and vertical space to the generated config.
* gnu/installer/parted.scm (user-partitions->configuration): Introduce
vertical space and a comment.
* gnu/installer/services.scm (G_): New macro.
(%system-services): Add comment for OpenSSH.
(system-services->configuration): Add vertical space and comments.
* gnu/installer/user.scm (users->configuration): Add comment.
* gnu/installer/steps.scm (format-configuration): Add comment.
(configuration->file): Expound leading comment.  Pass #:format-comment
to 'pretty-print-with-comments/splice'.
2022-08-08 11:54:25 +02:00
Ludovic Courtès
cd1a98b928
installer: Render the final configuration with (guix read-print).
* gnu/installer.scm (module-to-import?): Return #t for (guix read-print).
* gnu/installer/steps.scm (configuration->file): Use
'pretty-print-with-comments/splice' instead of 'for-each' and 'pretty-print'.
2022-08-08 11:54:24 +02:00
Mathieu Othacehe
3c381af76a
installer: parted: Call set-system before set-flags.
Parted 3.5 introduces the following regression:

- partition-set-flag sets the BIOS_GRUB flag. The partition type is set to
PARTITION_BIOS_GRUB_GUID.

- partition-set-system resets the partition type to PARTITION_LINUX_DATA_GUID
undoing what's done by partition-set-flag.

To prevent it, reverse the call order.

Fixes: <https://issues.guix.gnu.org/55549>.

* gnu/installer/parted.scm (mkpart): Call partition-set-system before
partition-set-flag.
2022-08-05 08:57:20 +02:00
Mathieu Othacehe
eb0277e7e3
installer: parted: Log partition flags.
* gnu/installer/parted.scm (mkpart): Log them.
2022-08-05 08:57:20 +02:00
Ludovic Courtès
48c748226e
Revert "installer: user: Remove useless filtering."
This reverts commit c2125e59d0.

Fixes <https://issues.guix.gnu.org/55361>.
2022-05-21 00:15:08 +02:00
Mathieu Othacehe
c2125e59d0
installer: user: Remove useless filtering.
* gnu/installer/user.scm (users->configuration): Remove root account filtering
that is now performed in the "run-user-add-page" procedure.
2022-04-06 21:19:08 +02:00
Mathieu Othacehe
2bfb27af56
installer: user: Forbid root user creation.
Forbid root user creation as it could lead to a system without any
non-priviledged user accouts.

Fixes: <https://issues.guix.gnu.org/54666>.

* gnu/installer/newt/user.scm (run-user-add-page): Forbid it.
2022-04-06 21:19:07 +02:00
Maxim Cournoyer
0dc019e19a
initrd: Use non-hyphenated kernel command-line parameter names.
This is to make it less surprising, given the common convention sets forth by
the kernel Linux command-line parameters.

* gnu/build/linux-boot.scm (boot-system): Rename '--load', '--repl', '--root'
and '--system' to 'gnu.load', 'gnu.repl', 'root' and 'gnu.system',
respectively.  Adjust doc.
(find-long-option): Adjust doc.
* gnu/installer/parted.scm (installer-root-partition-path): Adjust accordingly.
* gnu/system.scm (bootable-kernel-arguments): Add a VERSION argument and
update doc.  Use VERSION to conditionally return old style vs new style initrd
arguments.
(%boot-parameters-version): Increment to 1.
(operating-system-boot-parameters): Adjust doc.
(operating-system-boot-parameters-file): Likewise.
* gnu/system/linux-initrd.scm (raw-initrd, base-initrd): Likewise.
* doc/guix.texi: Adjust doc.
* gnu/build/activation.scm (boot-time-system): Adjust accordingly.
* gnu/build/hurd-boot.scm (boot-hurd-system): Likewise.
* gnu/packages/commencement.scm (%final-inputs-riscv64): Adjust comment.
2022-03-01 10:30:17 -05:00
Florian Pelz
cc11905568
installer: Continue even if Connman cannot phone home.
Connman's online check is unreliable for me.

* gnu/installer/connman.scm (connman-online?): Accept if
connman state is ready instead of online.
2022-02-26 15:56:55 +01:00
Josselin Poiret
4943ac86e4
installer: Use system-wide guix for system init.
* gnu/installer.scm (installer-program): Remove dependency on the guix
package for the PATH.
* gnu/installer/final.scm (install-system): Set PATH inside container
to /run/current-system/profile/bin/.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:44 +01:00
Josselin Poiret
ad55ccf9b1
installer: Make dump archive creation optional and selective.
* gnu/installer.scm (installer-program): Let the installer customize
the dump archive.
* gnu/installer/dump.scm (prepare-dump, make-dump): Split make-dump in
prepare-dump, which copies the files necessary for the dump, and
make-dump which creates the archive.
* gnu/installer/record.scm (installer): Add report-page field.  Change
documented return value of exit-error.
* gnu/installer/newt.scm (exit-error): Change arguments to be a string
containing the error.  Let the user choose between exiting and
initiating a dump.
(report-page): Add new variable.
* gnu/installer/newt/page.scm (run-dump-page): New variable.
* gnu/installer/newt/dump.scm: Delete it.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:44 +01:00
Josselin Poiret
112ef30b84
installer: Turn passwords into opaque records.
* gnu/installer/user.scm (<secret>, secret?, make-secret,
secret-content): Add opaque <secret> record that boxes its contents,
with a custom printer that doesn't display anything.
* gnu/installer/newt/user.scm (run-user-add-page, run-user-page): Box
it.
* gnu/installer/final.scm (create-user-database): Unbox it.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:44 +01:00
Josselin Poiret
7cbd95a9f6
installer: Add error page when running external commands.
* gnu/installer/newt.scm (newt-run-command): Add it.
* gnu/installer/newt/page.scm (%ok-button, %exit-button,
%default-buttons, make-newt-buttons, run-textbox-page): Add them.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:44 +01:00
Josselin Poiret
726d0bd2f3
installer: Use named prompt to abort or break installer steps.
* gnu/installer/steps.scm (run-installer-steps): Set up
'installer-step prompt.
* gnu/installer/newt/ethernet.scm (run-ethernet-page)
* gnu/installer/newt/final.scm (run-config-display-page,
run-install-failed-page)
* gnu/installer/newt/keymap.scm (run-layout-page, run-variant-page)
* gnu/installer/newt/locale.scm (run-language-page,
run-territory-page, run-codeset-page, run-modifier-page,
run-locale-page)
* gnu/installer/newt/network.scm (run-technology-page,
wait-service-online)
* gnu/installer/newt/page.scm (run-listbox-selection-page,
run-checkbox-tree-page)
* gnu/installer/newt/partition.scm (button-exit-action)
* gnu/installer/newt/services.scm (run-desktop-environments-cbt-page,
run-networking-cbt-page, run-other-services-cbt-page,
run-network-management-page)
* gnu/installer/newt/timezone.scm (run-timezone-page)
* gnu/installer/newt/user.scm (run-user-page)
* gnu/installer/newt/welcome.scm (run-menu-page)
* gnu/installer/newt/wifi.scm (run-wifi-page): Use the 'installer-step
prompt to abort.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:44 +01:00
Josselin Poiret
ed6567abbf
installer: Replace run-command by invoke in newt/page.scm.
* gnu/installer/newt/page.scm (edit-file): Replace it.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:43 +01:00
Josselin Poiret
dad9a1c0b2
installer: Fix run-file-textbox-page when edit-button is #f.
* gnu/installer/newt/page.scm (run-file-textbox-page): Check if
edit-button is #f.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:43 +01:00
Josselin Poiret
0a74509a69
installer: Raise condition when mklabel fails.
* gnu/installer/parted.scm (mklabel): Do it.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:43 +01:00
Josselin Poiret
af59e53631
installer: Use run-command-in-installer in (gnu installer parted).
* gnu/installer/parted.scm (remove-logical-devices,
create-btrfs-file-system, create-ext4-file-system,
create-fat16-file-system, create-fat32-file-system,
create-jfs-file-system, create-ntfs-file-system,
create-xfs-file-system, create-swap-partition, luks-format-and-open,
luks-close): Use run-command-in-installer.
(with-null-output-ports): Remove.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:43 +01:00
Josselin Poiret
408427a36c
installer: Add installer-specific run command process.
* gnu/installer/record.scm (installer)[run-command]: Add field.
* gnu/installer/utils.scm (run-command-in-installer): Add parameter.
* gnu/installer.scm (installer-program): Parameterize
run-command-in-installer with current installer's run-command.
* gnu/installer/newt.scm (newt-run-command): New variable.
(newt-installer): Use it.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:43 +01:00
Josselin Poiret
0b9fbbb4dd
installer: Capture external commands output.
* gnu/installer/utils.scm (run-external-command-with-handler,
run-external-command-with-line-hooks): New variables.
(run-command): Use run-external-command-with-line-hooks.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:43 +01:00
Josselin Poiret
c57ec6ed1e
installer: Remove specific logging code.
* gnu/installer/final.scm (install-system): Remove command logging to
syslog, as this is taken care of by the new facilities.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:43 +01:00
Josselin Poiret
2f7f1d11e9
installer: Keep PATH inside the install container.
* gnu/installer/final.scm (install-system): Set PATH inside the
container.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:43 +01:00
Josselin Poiret
438bf9b840
installer: Un-export syslog syntax.
* gnu/installer/utils.scm (syslog): Remove export.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:43 +01:00
Josselin Poiret
4f2fd33b4f
installer: Use new installer-log-line everywhere.
* gnu/installer.scm (installer-program)
* gnu/installer/final.scm (install-locale)
* gnu/installer/newt.scm (init)
* gnu/installer/newt/final.scm (run-final-page)
* gnu/installer/newt/page.scm (run-form-with-clients)
* gnu/installer/newt/partition.scm (run-partitioning-page)
* gnu/installer/parted.scm (eligible-devices, mkpart,
luks-format-and-open, luks-close, mount-user-partitions,
umount-user-partitions, free-parted):
* gnu/installer/steps.scm (run-installer-steps):
* gnu/installer/utils.scm (run-command, send-to-clients): Use it.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:43 +01:00
Josselin Poiret
7251b15d30
installer: Generalize logging facility.
* gnu/installer/utils.scm (%syslog-line-hook, open-new-log-port,
installer-log-port, %installer-log-line-hook, %display-line-hook,
%default-installer-line-hooks, installer-log-line): Add new
variables.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2022-02-02 16:46:43 +01:00
Mathieu Othacehe
0d37a5df7e
installer: Add crash dump upload support.
Suggested-by: Josselin Poiret <dev@jpoiret.xyz>

* gnu/installer/dump.scm: New file.
* gnu/installer/newt/dump.scm: New file.
* gnu/local.mk (INSTALLER_MODULES): Add them.
* gnu/installer/record.scm (<installer>)[dump-page]: New field.
* gnu/installer/steps.scm (%current-result): New variable.
(run-installer-steps): Update it.
* gnu/installer.scm (installer-program): Add tar and gip to the installer
path. Add guile-webutils and gnutls to the Guile extensions. Generate and send
the crash dump report.
* gnu/installer/newt.scm (exit-error): Add a report argument. Display the
report id.
(dump-page): New procedure.
(newt-installer): Update it.
2022-02-02 16:46:42 +01:00
Mathieu Othacehe
e92723452d
installer: Install the locale before mounting the cow-store.
Fixes: <https://issues.guix.gnu.org/52831>.

Make sure to install the en_US.utf8 fallback locale if the selected locale is
not supported.

* gnu/installer/final.scm (install-locale): New procedure.
(install-system): Call it.
2022-01-14 14:29:19 +01:00
Mathieu Othacehe
0c9693d8b3
installer: Do not set the locale in run-command.
Installing the locale inside the container, once the cow-store is mounted,
causes the process to keep opened locale files that can later prevent the
cow-store umount.

* gnu/installer/utils.scm (run-command): Remove locale argument.
* gnu/installer/final.scm (install-system): Adapt it.
2022-01-14 14:29:15 +01:00
Mathieu Othacehe
7c923e6cf4
installer: Remove an unused procedure.
* gnu/installer/final.scm (kill-cow-users): Remove it.
2022-01-14 14:29:12 +01:00
Mathieu Othacehe
ee897e5f51
installer: Check if ci.guix.gnu.org can be reached.
* gnu/installer.scm (installer-program): Add gnutls extension.
* gnu/installer/newt/network.scm (wait-service-online): Check if the CI server
can be reached.
2022-01-14 14:29:08 +01:00
Mathieu Othacehe
c6910baf36
installer: Ignore small devices.
Filter the devices that are smaller than 2GiB in the device selection list.

* gnu/installer/parted.scm (%min-device-size): New variable.
(non-install-devices): Rename it ...
(eligible-devices): ... this way. Filter the install device as well as the
small devices.
* gnu/installer/newt/partition.scm (run-partitioning-page): Adapt it.
2022-01-14 14:29:08 +01:00
Leo Famulari
0d9d151424
installer: Offer 'gpm-service-type' for non-graphical systems.
* gnu/installer/services.scm (%system-services): Add the gpm-service-type.
2021-12-28 15:26:39 -05:00
Leo Famulari
2842a42b51
installer: Recommend 'ntp-service-type' for non-graphical systems.
We had several bug reports with a root cause of "the clock was
incorrect" from users who used the installer to install a non-graphical
Guix System.

* gnu/installer/services.scm (%system-services): Add the ntp-service-type.
* gnu/installer/newt/services.scm (run-system-administration-cbt-page): New
variable.
(run-services-page): Use run-system-administration-cbt-page when not
installing a desktop.
* gnu/installer/tests.scm (choose-services): Add and use a
choose-misc-service?  procedure.
* gnu/tests/install.scm (installation-target-os-for-gui-tests)<services>: Add
ntp-service-type.
2021-12-28 15:26:39 -05:00
Leo Famulari
029f8d7c12
installer: Offer the CUPS printing service on a dedicated page.
Currently, the installer page RUN-OTHER-SERVICES-CBT-PAGE offers to the user all
installer services that are not of the types 'desktop', 'network-management', or
'networking'. Concretely, this means that it offers the CUPS printing service,
because that is the only service of a different type defined in the installer.

In later commits, we will add some services of a new type, and we only want them
to be offered when the user is installing a non-graphical system.

At least one of these new services (NTP) is part of %DESKTOP-SERVICES. If it
was also offered on RUN-OTHER-SERVICES-CBT-PAGE, and the user had configured a
system using %DESKTOP-SERVICES, the user could accidentally add NTP to their
services twice, which is an error and would break installation.

So, this commit makes the RUN-OTHER-SERVICES-CBT-PAGE be more specific about
what services to offer. This makes it easier to discriminate between desktop and
non-desktop installations, in terms of when a given service is offered.

* gnu/installer/newt/services.scm (RUN-OTHER-SERVICES-CBT-PAGE): Rename to ...
(RUN-PRINTING-SERVICES-CBT-PAGE): ... new variable, and select only 'document' services.
(RUN-SERVICES-PAGE): Adjust accordingly.
* gnu/installer/tests.scm (CHOOSE-SERVICES): Adjust accordingly.
2021-12-28 15:26:39 -05:00
Mathieu Othacehe
32750e8c3e
Merge remote-tracking branch 'signed/master' into core-updates 2021-12-10 21:49:25 +01:00
Tobias Geerinckx-Rice
e5e307b676
Revert "installer: Make LUKS2 the default format for encrypted devices"
This reverts commit a82e9f45fd at the
author's request.  We are not quite ready to boot all resulting
systems.

See <https://logs.guix.gnu.org/guix/2021-12-08.log#231815>.
2021-12-08 23:23:19 +01:00
Ricardo Wurmus
9bc0f45df5
Merge remote-tracking branch 'origin/master' into core-updates-frozen 2021-12-05 19:17:41 +01:00
Mathieu Othacehe
d64b78ef0c
installer: parted: Use the swap-space record.
* gnu/installer/parted.scm (user-partitions->configuration): Use the
swap-space record.
2021-12-01 20:59:06 +01:00
Josselin Poiret
a82e9f45fd
installer: Make LUKS2 the default format for encrypted devices
* gnu/installer/parted.scm (luks-format-and-open): Change it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-12-01 17:51:37 +01:00
Josselin Poiret
b90504cdb5
installer: Rework installation device detection.
* gnu/installer/parted.scm (installation-device): Remove it.
* gnu/installer/parted.scm (installer-root-partition-path): Add it.
* gnu/installer/parted.scm (non-install-devices): Add installation-device?
predicate.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-11-26 10:52:02 +00:00
Efraim Flashner
bc5155b952
Merge remote-tracking branch 'origin/master' into core-updates-frozen 2021-10-31 14:49:47 +02:00
Tobias Geerinckx-Rice
3a7504cbc4
installer: Reorder file system type listbox.
Recommending ext4 over btrfs is probably ill-advised nowadays.  See the
regular bug reports about running out of /gnu/store directory entries,
for which the documented fix then breaks booting with GRUB.

Instead, just list regular file systems alphabetically.  We can bikeshed
bcachefs later ;-)

Move second-class file systems like NTFS to their own section at the end
of the list.

* gnu/packages/package-management.scm (run-fs-type-page): Reorder the
LISTBOX-ITEMS.
2021-10-21 22:08:24 +02:00
Mathieu Othacehe
a1eca979fb
Merge remote-tracking branch 'origin/master' into core-updates-frozen. 2021-10-12 17:46:23 +00:00
Tobias Geerinckx-Rice
f1a3c11407
installer: Fix typo in docstrings.
* gnu/packages/gnu/installer/parted.scm
(force-user-partitions-formatting, format-user-partitions):
Fix ‘formating’ docstring typo.
2021-10-01 21:27:36 +02:00
Tobias Geerinckx-Rice
f34b808741
installer: Support XFS.
* gnu/installer/newt/partition.scm (run-fs-type-page): Add ‘xfs’ to the
list box.
* gnu/installer/parted.scm (user-fs-type-name, user-fs-type->mount-type)
(partition-filesystem-user-type): Add ‘xfs’ mapping.
(create-xfs-file-system): New procedure.
(format-user-partitions): Use it.
* gnu/installer.scm (set-installer-path): Add xfsprogs.
2021-09-23 18:17:18 +02:00
Mathieu Othacehe
d58e52b071
installer: keymap: Fix optional fields handling.
Fixes: <https://issues.guix.gnu.org/50723>.

The keymap xml contains optional shortDescription and description fields. The
assoc-ref call on those fields can return false, handle it correctly.

* gnu/installer/keymap.scm (xkb-rules->models+layouts): Introduce a new
"maybe-empty" helper to deal with optional fields. Use it for shortDescription
and description fields.
2021-09-21 20:35:49 +00:00
Maxim Cournoyer
da4e409483
Migrate to the new 'targets' field of bootloader-configuration.
The old 'target' field is deprecated; adjust the sources to use the new
'targets' one instead.

* doc/guix-cookbook.texi<target>: Replace by 'targets'.
* gnu/bootloader/grub.scm: Likewise.
* gnu/installer/parted.scm: Likewise.
* gnu/machine/digital-ocean.scm: Likewise.
* gnu/system/examples/asus-c201.tmpl: Likewise
* gnu/system/examples/bare-bones.tmpl: Likewise
* gnu/system/examples/bare-hurd.tmpl: Likewise
* gnu/system/examples/beaglebone-black.tmpl: Likewise
* gnu/system/examples/desktop.tmpl: Likewise
* gnu/system/examples/docker-image.tmpl: Likewise
* gnu/system/examples/lightweight-desktop.tmpl: Likewise
* gnu/system/examples/vm-image.tmpl: Likewise
* gnu/system/examples/yggdrasil.tmpl: Likewise
* gnu/system/hurd.scm: Likewise
* gnu/system/images/hurd.scm: Likewise
* gnu/system/images/novena.scm: Likewise
* gnu/system/images/pine64.scm: Likewise
* gnu/system/images/pinebook-pro.scm: Likewise
* gnu/system/images/rock64.scm: Likewise
* gnu/system/install.scm: Likewise
* gnu/system/vm.scm: Likewise
* gnu/tests.scm: Likewise
* gnu/tests/ganeti.scm: Likewise
* gnu/tests/install.scm: Likewise
* gnu/tests/nfs.scm: Likewise
* gnu/tests/telephony.scm: Likewise
* tests/boot-parameters.scm: Likewise
* tests/system.scm: Likewise
2021-08-29 01:05:26 -04:00
Tobias Geerinckx-Rice
8dc852b940
installer: Unconditionally import (gnu services cups) in config.scm.
* gnu/installer/steps.scm (format-configuration): Add cups to the list
of GNU service modules.
2021-07-04 13:04:45 +02:00