me
/
guix
Archived
1
0
Fork 0
Commit Graph

264 Commits (b2b838b2b4f3d0cda534a266be3e418f07decc6d)

Author SHA1 Message Date
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
Tobias Geerinckx-Rice 0dbd2c3b08
installer: tests: Expect but do not select other services by default.
* gnu/installer/tests.scm (choose-services): Accept a new
choose-other-service? keyword argument, defaulting to false.
Expect an "Other services" checkbox-list.  Update docstring.
2021-07-04 13:04:45 +02:00
Tobias Geerinckx-Rice 6f13881f1e
installer: Offer the CUPS printing service.
* gnu/installer/services.scm (%system-services): Add CUPS.
* gnu/installer/newt/services.scm (run-other-services-cbt-page):
New procedure.
(run-services-page): Call it last.
2021-06-30 21:34:26 +02:00
Mathieu Othacehe e2ff126588
installer: Fix crash when deleting a free space partition.
Fixes: <https://issues.guix.gnu.org/49126>.

* gnu/installer/newt/partition.scm (run-disk-page): Fix the return value when
removing a free space partition.
2021-06-29 20:44:23 +02:00
Tobias Geerinckx-Rice ed44e62636
installer: Remove unused procedure.
NETWORKING-SYSTEM-SERVICE? was obsoleted in commit
2e55f37c0c.

* gnu/installer/services.scm (networking-system-service?): Remove it.
2021-06-23 03:01:49 +02:00
Mathieu Othacehe e12be802e0
installer: Improve the installation device detection method.
Fixes: <https://issues.guix.gnu.org/47780>.

* gnu/installer/parted.scm (installation-device): New method.
(non-install-devices): Remove devices which are reported as read-only by
parted or which path is identical to the installation device path returned by
the above method.
2021-06-17 11:00:26 +02:00
Mathieu Othacehe 245cab2abc
installer: Fix FAT16 partition mounting.
The "fat" file-system mount type doesn't exist in Linux. Trying to mount a
FAT16 partition with "fat" file-system type returns -ENODEV.

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

* gnu/installer/parted.scm (user-fs-type->mount-type): Use the "vfat"
file-system for FAT16 partitions.
2021-06-13 14:11:59 +02:00
Mathieu Othacehe 154a4e0462
installer: Improve install device detection.
* gnu/installer/parted.scm (non-install-devices): Improve the detection by
assuming that any device with the ISO9660 label is the installation device.
2021-06-12 18:40:39 +02:00
Mathieu Othacehe f5d9d6ec68
installer: Check partitions UUIDs.
* gnu/installer/parted.scm (&cannot-read-uuid): New condition.
(cannot-read-uuid?, cannot-read-uuid-partition): New procedures.
(check-user-partitions): Check that all user-partitions have a valid UUID,
raide the above condition otherwise.
* gnu/installer/newt/partition.scm (run-disk-page): Run an error page if the
&cannot-read-uuid condition is raised.
2021-06-12 09:31:33 +02:00
Mathieu Othacehe 1a0a18d0cc
installer: Print user partitions.
* gnu/installer/newt/partition.scm (run-partitioning-page): Print
user-partitions to syslog.
2021-06-12 09:31:33 +02:00
Mathieu Othacehe 95b3fc12bc
tests: Add gui-uefi-installed-os test.
* gnu/installer/tests.scm (conclude-installation): Rename it into ...
(start-installation): ... this new procedure.
(complete-installation): New procedure.
(choose-partitioning): Add an uefi-support? argument.
* gnu/tests/install.scm (uefi-firmware): New procedure.
(run-install, qemu-command/writable-image, gui-test-program,
installation-target-os-for-gui-tests): Add an uefi-support? argument.
(%extra-packages): Add grub-efi, fatfsck/static and dosfstools.
(%test-gui-installed-os): New variable.
2021-04-28 15:51:12 +02:00
Mathieu Othacehe af7a615c5b
installer: Add MSDOS disk label support on UEFI systems.
Fixes: <https://issues.guix.gnu.org/47889>.

* gnu/installer/parted.scm (esp-partition?): Remove the MSDOS check.
(auto-partition!): On MSDOS disks, check if an ESP partition is present. If
that's the case, do not remove it. Otherwise, if UEFI is supported, create
one.
2021-04-28 15:50:02 +02:00
Mathieu Othacehe 3f8ea83e2a
installer: Force GPT disk label when UEFI is supported.
* gnu/installer/newt/partition.scm (run-label-page): Force the GPT disk label
when UEFI is supported.
2021-04-28 15:49:53 +02:00
Ludovic Courtès 70c2897ea3
installer: Internationalize comment of the generated config.
* gnu/installer/steps.scm (configuration->file): Pass the comment in the
generated file through 'G_'.
2021-04-14 22:51:38 +02:00
Tobias Geerinckx-Rice d09831fe52
installer: Edit desktop selection prompt.
* gnu/installer/newt/services.scm (run-desktop-environments-cbt-page):
Fix and clarify the #:info-text.
2021-01-31 17:08:17 +01:00
Mathieu Othacehe bb4e67415e
installer: Fix crash in parameters menu.
Fixes: <https://issues.guix.gnu.org/45378>.

* gnu/installer/newt/keymap.scm (run-layout-page): Return false when
"Continue" button is pressed.
(run-keymap-page): Do not try to compute variants if layout is false. Also do
not try to format the result if layout is false.
* gnu/installer.scm (compute-keymap-step): Do not apply keymap if
"run-keymap-page" returns false.
2021-01-12 16:40:27 +01:00
Mathieu Othacehe 8361817bf6
install: Discover local substitute servers.
* gnu/installer/substitutes.scm: New file.
* gnu/installer/newt/substitutes.scm: New file.
* gnu/local.mk (INSTALLER_MODULES): Add them.
* po/guix/POTFILES.in: Add gnu/installer/newt/substitutes.scm.
* gnu/installer/proxy.scm (with-silent-shepherd): Move to ...
* gnu/installer/utils.scm: ... here.
* gnu/installer/record.scm (<installer>)[substitutes-page]: New field.
* gnu/installer/newt.scm (substitutes-page): New procedure,
(newt-installer): register it.
* gnu/installer.scm (installer-steps): Add "substitutes-page" step.
* gnu/system/install.scm (%installation-services): Add avahi-service-type and
enable substitute server discover in guix-service-type.
[<name-service-switch>]: Set it to %mdns-host-lookup-nss.
2020-12-11 21:37:07 +01:00
Ludovic Courtès d8051557ae
Revert "services: openssh: Warn about 'password-authentication?' default."
This reverts commit aecd2a13cb for two
reasons:

  1. The warning would fire every time (gnu services ssh) is loaded;

  2. There's still no clear consensus on the approach to follow as
     discussed in <https://issues.guix.gnu.org/44808>.
2020-12-11 19:06:53 +01:00
Ludovic Courtès aecd2a13cb
services: openssh: Warn about 'password-authentication?' default.
Fixes <https://bugs.gnu.org/44808>.
Reported by Christopher Lemmer Webber <cwebber@dustycloud.org>.

* gnu/services/ssh.scm (true-but-soon-false): New procedure.
(<openssh-configuration>)[password-authentication?]: Change default to
'true-but-soon-false'.
* gnu/installer/services.scm (%system-services): Explicitly set
'password-authentication?' to #f.
2020-12-07 12:48:26 +01:00
Mathieu Othacehe 3d3ffb30f9
installer: Fix device synchronization.
Reported by Florian Pelz:
https://lists.gnu.org/archive/html/guix-devel/2020-11/msg00326.html.

* gnu/installer/utils.scm (call-with-time): New procedure,
(let/time): new macro.
* gnu/installer/parted.scm (with-delay-device-in-use?): Increase the retry
count to 16.
(non-install-devices): Remove the call to with-delay-device-in-use? as it
doesn't return the expected result, and would block much longer now.
(free-parted): Log the time required to sync each device.
2020-11-17 19:10:14 +01:00
Mathieu Othacehe 8c287bb2fb
installer: parted: Add debug output.
* gnu/installer/parted.scm (mkpart): Log partition creation.
2020-11-08 19:41:12 +01:00
Mathieu Othacehe c2396ceb6e
installer: parameters: Add a reboot button.
Suggested by: zimoun <zimon.toutoune@gmail.com>.

* gnu/installer/newt/parameters.scm (run-parameters-page): Add a reboot
button.
2020-11-07 18:17:32 +01:00
Mathieu Othacehe 6dcbbcdab7
installer: Edit partitioning warning message.
* gnu/installer/newt/partition.scm (draw-formatting-page): Add an extra new
line.
2020-11-07 13:19:25 +01:00
Mathieu Othacehe 8338d414b3
installer: Limit listbox height.
Fixes: <https://issues.guix.gnu.org/44428>.

* gnu/installer/newt.scm (init): Print screen size.
* gnu/installer/newt/page.scm (default-listbox-height): New variable.
(run-listbox-selection-page): Use it.
* gnu/installer/newt/wifi.scm (wifi-listbox-height): Ditto.
* gnu/installer/newt/network.scm (run-technology-page): Set the maximum
listbox height to 5.
* gnu/installer/newt/ethernet.scm (run-ethernet-page): Ditto.
* gnu/installer/newt/final.scm (run-config-display-page): Change listbox
height.
* gnu/installer/newt/partition.scm (run-disk-page): Ditto.
* gnu/installer/newt/welcome.scm (display-logo?): New procedure.
(run-menu-page): Use it.
* gnu/installer/steps.scm (%configuration-file-width): Remove it.
2020-11-07 13:19:25 +01:00
Miguel Ángel Arruga Vivas bc9e66f0fe
installer: Report to the user the formatted partitions.
* gnu/installer/newt/partitions.scm (define-module): Use (ice-9 format).
(draw-formatting-page): Add parameter partitions and provide the list of
formatted partitions to the user.
(run-partitioning-page): Provide user-partitions to draw-formatting-page.
2020-11-02 03:42:08 +01:00
Ludovic Courtès 8f71305e8f
installer: parted: Internationalize the partition handling code.
* gnu/installer/parted.scm (user-partition-description): Use 'format'
and 'G_' for i18n.
2020-11-01 23:56:29 +01:00
Ludovic Courtès 1c6d985331
installer: Use UUIDs in the 'swap-devices' field.
Note: This change requires an updated 'guix' package that contains
Linux-swap support in (gnu build file-systems).

* gnu/installer/parted.scm (user-partitions->configuration): Use UUIDs
in the 'swap-devices' field.
* gnu/installer/newt/final.scm (run-final-page)[wait-for-clients]: New
procedure.   Use it.
* gnu/installer/tests.scm (choose-partitioning): Wait for
'starting-final-step' message and move configuration file dialog
handling to...
(conclude-installation): ... here.  Send over PORT the reply
corresponding to 'starting-final-step'.
* gnu/tests/install.scm (gui-test-program): When ENCRYPTED? is false,
invoke 'swaplabel' in the marionette.
(installation-target-os-for-gui-tests): When ENCRYPTED? is false, except
a fixed UUID.
2020-10-30 01:14:21 +01:00
Ludovic Courtès 6d1fd37182
installer: Log partition formatting.
* gnu/installer/newt/partition.scm (run-partitioning-page): Add 'syslog' call.
2020-10-28 16:24:47 +01:00
Ludovic Courtès bfb65a6768
installer: Make the network management selection window tighter.
* gnu/installer/newt/services.scm (run-network-management-page): Pass
 #:listbox-height.
2020-10-23 16:35:38 +02:00
Miguel Ángel Arruga Vivas 19c14d95b3
installer: Create bios_grub partition when it is needed.
* gnu/installer/parted.scm (auto-partition!): Only check for ESP on EFI
installations.
2020-10-19 21:54:25 +02:00
Jan (janneke) Nieuwenhuizen 1197b8b20f
installer: Add Emacs EXWM desktop environment.
Suggested by zenny via IRC.

* gnu/installer/services.scm (%system-services): Add emacs, emacs-exwm,
emacs-desktop-environment.
* etc/release-manifest.scm (%system-packages): Likewise.
* gnu/system/examples/lightweight-desktop.tmpl: Likewise.
* gnu/tests/install.scm (installation-target-desktop-os-for-gui-tests)
[packages]: Likewise
* gnu/installer/newt/services.scm (run-desktop-environments-cbt-page): Make
one entry taller.
2020-10-13 21:17:40 +02:00
Tobias Geerinckx-Rice 5e17ae7fbd
installer: Rename RUN-PARTIONING-PAGE.
* gnu/installer/newt/partition.scm (run-partioning-page): Rename to
run-partitioning-page.  Adjust all callers.
2020-09-21 00:31:15 +02:00
Tobias Geerinckx-Rice e1f3788944
installer: Fix docstring typoes.
* gnu/installer/connman.scm (connman-state, run-locale-page)
(start-swapping, stop-swapping, run-installer-steps): Fix typo in
docstring.
2020-09-21 00:31:15 +02:00
Mathieu Othacehe cafbc5f390
installer: final: Introduce call-with-mnt-container.
* gnu/installer/final.scm (call-with-mnt-container): New procedure,
(install-system): use it instead of call-with-container, to make sure that the
container is not jailed.
2020-09-10 09:38:52 +02:00
Mathieu Othacehe 8ce6f4dc28
installer: Run the installation inside a container.
When the store overlay is mounted, other processes such as kmscon, udev
and guix-daemon may open files from the store, preventing the
underlying install support from being umounted. See:
https://lists.gnu.org/archive/html/guix-devel/2018-12/msg00161.html.

To avoid this situation, mount the store overlay inside a container,
and run the installation from within that container.

* gnu/build/shepherd.scm (fork+exec-command/container): New procedure.
* gnu/services/base.scm (guix-shepherd-service): Support an optional PID
argument passed to the "start" method. If that argument is passed, ensure that
guix-daemon enters the given PID MNT namespace by using
fork+exec-command/container procedure.
* gnu/installer/final.scm (umount-cow-store): Remove it,
(install-system): run the installation from within a container.
* gnu/installer/newt/final.scm (run-install-shell): Remove the display hack.
2020-09-02 17:05:23 +02:00
Mathieu Othacehe 5697a524a7
installer: Remove logical devices.
If a device contains an active logical volume, BLKRRPART will report that the
device is busy. This will cause this device to be filtered by
"non-install-devices" procedure, which is not desired.

Make sure to deactivate all logical volumes before device probing.

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

* gnu/installer.scm (installer-program): Add lvm2-static to the inputs.
* gnu/installer/parted.scm (remove-logical-devices): New procedure,
(init-parted): call it.
2020-08-06 11:31:38 +02:00
Mathieu Othacehe 218a67dfab
installer: Add NTFS support.
This adds support for creating and editing NTFS partitions. It is however not
possible yet to create root NTFS partitions, as overlaying on top of a fuse
partition does not seem supported.

* gnu/installer.scm (installer-program): Add "ntfs-3g" to the inputs.
* gnu/installer/parted.scm (user-fs-type-name, user-fs-type->mount-type,
partition-filesystem-user-type, create-ntfs-file-system,
format-user-partitions): Add NTFS support.
* gnu/installer/newt/partition.scm (run-fs-type-page): Add NTFS support.
2020-07-26 18:35:10 +02:00
Mathieu Othacehe 4febc38d9f
installer: final: Remove restart-service procedure.
* gnu/installer/final.scm (umount-cow-store): Remove "restart-service" that is
now provided by (gnu services herd).
2020-06-16 16:33:55 +02:00
Mathieu Othacehe 876a8d9870
installer: final: Make sure 'bold' font files are loaded.
* gnu/installer/newt/final.scm (run-install-shell): Force kmscon to open
'bold' font files, before the cow-store overlay is mounted.
2020-06-14 17:42:36 +02:00
Mathieu Othacehe 478d1270ce
install: final: Add some logging.
* gnu/installer/final.scm (umount-cow-store): Add some logging.
2020-06-13 15:21:20 +02:00
Mathieu Othacehe 9392652e91
installer: final: Dump "guix system init" command output when testing.
When debugging the installation tests, it can be very handy to be able to read
"guix system init" command output.

* gnu/installer/final.scm (install-system): Dump installation command output
to the console when running the installation tests.
2020-06-09 17:59:05 +02:00
Mathieu Othacehe ce16b07d10
installer: final: Remove left-over pk call.
* gnu/installer/final.scm (kill-cow-users): Remove pk call.
2020-06-09 17:59:05 +02:00
Mathieu Othacehe 5f7c4416b5
Revert "installer: utils: Dump command output to syslog when testing."
This reverts commit f73ed55791. This was pushed
by error, as this is not reviewed yet.
2020-06-09 10:33:04 +02:00
Mathieu Othacehe f73ed55791
installer: utils: Dump command output to syslog when testing.
When debugging the installation tests, it can be very handy to be able to read
"run-command" output, for instance when executing "guix system init".

Introduce a new "invoke-with-log" procedure that is able to log a command
standard and error outputs to the syslog. Use it, only when running the
installation tests, to dump "run-command" output.

* gnu/installer/utils.scm (open-pipe-with-stderr, invoke-with-log): New
procedures,
(invoke-log-port): new variable,
(run-command): move to the end of the file and use invoke-with-log when
running the installation tests.
2020-06-09 10:32:19 +02:00
Mathieu Othacehe 7730f41afd
installer: final: Add some extra logging.
* gnu/installer/final.scm (kill-cow-users): Log the killed process name,
(umount-cow-store): inform that we are umounting the cow-store.
2020-06-05 09:04:23 +02:00
Mathieu Othacehe ea6594e08e
installer: connman: Fix Wifi connection.
Issue reported by SergioBG here:
https://lists.gnu.org/archive/html/bug-guix/2020-04/msg00432.html.

Due to default buffering mode, the installer was reading from the pipe without
having actually written a command before.

* gnu/installer/connman.scm (connman-connect-with-auth): Set pipe buffering
mode to 'line.
2020-04-19 11:46:21 +02:00
Ludovic Courtès 475d48145d
installer: tests: Don't install to a CD/DVD.
* gnu/installer/tests.scm (choose-partitioning): Use 'find' to select
the disk.
2020-04-10 16:02:52 +02:00
Mathieu Othacehe 1a24df4434
gnu: installer: Fix issue with "Esperanto" locale.
According to glibc manual, locale are under the following form:
          language[_territory[.codeset]][@modifier]

The esperanto locale "epo" does not have a territory. Modify run-command to
take this into account.

Reported by Alex Sassmannshausen here:
https://lists.gnu.org/archive/html/guix-devel/2020-04/msg00192.html.

* gnu/installer/utils.scm (run-command): Handle locale without territory such
as "epo".
2020-04-10 15:50:44 +02:00
Florian Pelz 7bc71025cc
installer: Include empty variant in keyboard layout selection.
Previously for Azerbaijani, no Latin layout but only the Cyrillic variant
could be selected.

* gnu/installer/newt/keymap.scm (add-empty-variant): New procedure.
(run-keymap-page): Use it to insert an empty variant.
2020-04-09 03:45:22 +00:00
Florian Pelz 91c231a222
installer: Allow Alt+Shift toggle from non-Latin keyboard layouts.
Fixes <https://bugs.gnu.org/40493>.

* gnu/installer/newt/keymap.scm (%non-latin-layouts): New variable.
(%non-latin-variants): New variable.
(%latin-layout+variants): New variable.
(toggleable-latin-layout): New procedure to compute combined layouts.
(run-keymap-page): Use it.
(keyboard-layout->configuration): Apply it in config.scm.
(run-layout-page): Mention Alt+Shift.
* gnu/installer/keymap.scm (kmscon-update-keymap): Pass on XKB options.
* gnu/installer/record.scm (<installer>): Adjust code comments.
* gnu/installer.scm (apply-keymap): Pass on XKB options.
(installer-steps): Adjust code comments.
* gnu/packages/patches/kmscon-runtime-keymap-switch.patch: Apply XKB options.
2020-04-09 02:42:54 +00:00
Mathieu Othacehe ee0ad7803c
installer: Add proxy support.
* gnu/installer/proxy.scm: New file.
* gnu/local.mk (INSTALLER_MODULES): Add it.
* po/guix/POTFILES.in: Add it.
* gnu/installer/newt/parameters.scm (run-proxy-page): New procedure,
(run-parameters-page): add the previous procedure to the parameters menu.
2020-04-08 10:24:02 +02:00
Mathieu Othacehe 07a53bd512
installer: Turn help menu into parameters menu.
* gnu/local.mk (INSTALLER_MODULES): Rename help.scm into parameters.scm.
* po/guix/POTFILES.in: Ditto.
* gnu/installer/record.scm (<installer>): Rename help-menu into parameter-menu
and help-page into parameters-page.
* gnu/installer/newt/parameters.scm: Renamed from help.scm. Update information
messages.
* gnu/installer/newt.scm: Update accordingly.
* gnu/installer/newt/keymap.scm: Ditto.
2020-04-08 10:24:02 +02:00
Ludovic Courtès e2385584db
installer: Reduce height of the help window.
* gnu/installer/newt/help.scm (run-help-page): Pass #:listbox-height.
2020-04-07 12:31:36 +02:00
Mathieu Othacehe d52111450a
installer: Adapt to Guile-newt revision 2.
* gnu/installer/newt/page.scm (run-input-page): Remove component argument that
  is not longer passed to the procedure passed to 'add-component-callback',
 (run-listbox-selection-page): ditto.
 * gnu/installer/newt/user.scm (run-user-add-page): Ditto,
 (run-user-add-page): ditto.
2020-04-06 15:06:03 +02:00
Mathieu Othacehe 786c9c39bc
installer: Add a help page.
* gnu/installer/newt/help.scm: New file.
* gnu/local.mk (INSTALLER_MODULES): Add it.
* po/guix/POTFILES.in: Add it.
* gnu/installer/record.scm (<installer>): Add 'help-menu' and 'help-page'
 fields,
 (installer-help-menu, installer-help-page): new exported procedures.
 * gnu/installer/newt.scm (init): Set the help line,
 (help-menu, help-page): new procedures used ...
 (newt-installer): ... here.
 * gnu/installer/newt/keymap.scm (run-layout-page): Add a context argument to
 differenciate the help context from the main one,
 (run-keymap-page): add a context argument and pass it to run-layout-page.
 * gnu/installer.scm (compute-keymap-step): Add a context argument and pass it
 to 'installer-keymap-page',
 (installer-steps): set the help menu and pass the appropriate context to
 compute-keymap-step calls,
 (guile-newt): update to revision 2.
2020-04-06 15:06:03 +02:00
Mathieu Othacehe 7a1a10dbd4
installer: tests: Use a filter to select desktop-environments.
* gnu/installer/tests.scm (choose-services): Turn desktop-environments list
into a choose-desktop-environment procedure. This way, it is easier to select
all desktop-environments or none, in the same way as choose-network-service?
and choose-network-management-tool? arguments.
2020-03-26 11:53:50 +01:00
Mathieu Othacehe f9b6f75d1c
installer: Fix cow-store umount issue.
* gnu/installer/final.scm (kill-cow-users): Ignore exception that could be
raised if a process disappears between reading its pid and its maps file.
2020-03-23 18:46:40 +01:00
Mathieu Othacehe 64704be417
installer: Fix cow-store umount.
This fixes <https://bugs.gnu.org/39712>.

The guix-daemon was preventing the cow-store umount, so restart it.  Some
udevd workers, using cow-store files might also still be around, so have some
umount retries.

* gnu/installer/final.scm (kill-cow-users): New procedure,
(umount-cow-store): restart guix-daemon and kill all processes started from
within the cow-store before trying to umount the store overlay. Also try 5
times to umount the overlay in case it is still busy.
2020-03-05 23:40:24 +01:00
Ludovic Courtès ccb1a8c437
tests: install: Add "gui-installed-os".
* gnu/installer/tests.scm: New file.
* gnu/local.mk (INSTALLER_MODULES): Add it.
* gnu/tests/install.scm (run-install): Add #:gui-test.  Add (gnu
installer tests) to the marionette imported modules.  Honor GUI-TEST.
Check whether SCRIPT is true.
(%root-password, %syslog-conf): New variable.
(operating-system-with-console-syslog, gui-test-program)
(guided-installation-test): New procedures.
(%extra-packages, installation-os-for-gui-tests)
(%test-gui-installed-os): New variable.
2020-03-05 23:40:23 +01:00
Ludovic Courtès e458726ab4
installer: Honor /tmp/installer-system-init-options.
* gnu/installer/final.scm (install-system): Honor
"/tmp/installer-system-init-options".
2020-03-05 23:40:23 +01:00
Ludovic Courtès 8a4b11c6a9
installer: Run commands without hopping through the shell.
* gnu/installer/utils.scm (run-shell-command): Rename to...
(run-command): Remove call to 'call-with-temporary-output-file' and hop
through Bash.  Expect COMMAND to be a list of strings rather than a
string.
* gnu/installer/final.scm (install-system): Turn INSTALL-COMMAND into a
list of strings and pass it to 'run-command'.
* gnu/installer/newt/page.scm (edit-file): Likewise.
2020-03-05 23:40:23 +01:00
Ludovic Courtès f901f5d2bc
installer: Bypass connectivity check when /tmp/installer-assume-online exists.
This is useful for automated tests.

* gnu/installer/newt/network.scm (wait-service-online)[online?]: New
procedure.  Check for /tmp/installer-assume-online.
Use it instead of 'connman-online?'.
2020-03-05 23:40:22 +01:00
Ludovic Courtès 63b8c089c1
installer: Implement a dialog on /var/guix/installer-socket.
This will allow us to automate testing of the installer.

* gnu/installer/utils.scm (%client-socket-file)
(current-server-socket, current-clients): New variables.
(open-server-socket, call-with-server-socket): New procedure.
(with-server-socket): New macro.
(run-shell-command): Add call to 'send-to-clients'.  Select on both
current-input-port and current-clients.
* gnu/installer/steps.scm (run-installer-steps): Wrap 'call-with-prompt'
in 'with-socket-server'.  Call 'sigaction' for SIGPIPE.
* gnu/installer/newt/page.scm (watch-clients!, close-port-and-reuse-fd)
(run-form-with-clients, send-to-clients): New procedures.
(draw-info-page): Add call to 'run-form-with-clients'.
(run-input-page): Likewise.  Handle EXIT-REASON equal to 'exit-fd-ready.
(run-confirmation-page): Likewise.
(run-listbox-selection-page): Likewise.  Define 'choice->item' and use it.
(run-checkbox-tree-page): Likewise.
(run-file-textbox-page): Add call to 'run-form-with-clients'.  Handle
'exit-fd-ready'.
* gnu/installer/newt/partition.scm (run-disk-page): Pass
 #:client-callback-procedure to 'run-listbox-selection-page'.
* gnu/installer/newt/user.scm (run-user-page): Call
'run-form-with-clients'.  Handle 'exit-fd-ready'.
* gnu/installer/newt/welcome.scm (run-menu-page): Define
'choice->item' and use it.  Call 'run-form-with-clients'.
* gnu/installer/newt/final.scm (run-install-success-page)
(run-install-failed-page): When (current-clients) is non-empty, call
'send-to-clients' without displaying a choice window.
2020-03-05 23:40:22 +01:00
Ludovic Courtès 5c04b00cf4
installer: Log important bits to syslog.
* gnu/installer.scm (installer-program): Log crashes with 'syslog'.
* gnu/installer/parted.scm (luks-format-and-open, luks-close)
(mount-user-partitions, umount-user-partitions): Add 'syslog' calls.
* gnu/installer/steps.scm (run-installer-steps): Log the running step
with 'syslog'.
* gnu/installer/utils.scm (run-shell-command): Add calls to 'syslog'.
2020-02-22 00:45:42 +01:00
Ludovic Courtès 2cf65e1d54
installer: Add 'syslog' macro to write to syslog.
* gnu/installer/utils.scm (open-syslog-port, syslog-port): New
procedures.
(syslog): New macro.
2020-02-22 00:45:42 +01:00
Mathieu Othacehe d008352bfb
installer: Fix installer restart dialog.
* gnu/installer/newt/final.scm (run-install-failed-page): Propose between
installer resume or restart. Do actually resume the installation by raising an
&installer-step-abort condition if "Resume" button is pressed. Otherwise, keep
going as the installer will be restarted by login.
* gnu/installer.scm (installer-program): Remove the associated TODO comment.
2020-02-12 10:52:17 +01:00
Mathieu Othacehe 1d02052067
installer: Remove the cow-store overlay after system installation.
Fixes <https://issues.guix.info/issue/39217>.
Fixes <https://issues.guix.info/issue/38447>.

* gnu/installer/final.scm (umount-cow-store): New procedure ...,
(install-system): ... used here, to remove the store overlay so that the
target device is not seen as busy during further umount calls.
2020-02-12 10:49:48 +01:00
Ludovic Courtès 6bd072ff66
installer: Make "TRANSLATORS" comment visible.
* gnu/installer/newt/user.scm (run-root-password-page): Move
"TRANSLATORS" comment right above 'G_' call.
2020-01-23 11:26:54 +01:00
Ludovic Courtès 37eda8c044
installer: Disable F12 hot key.
Fixes <https://bugs.gnu.org/38562>.
Reported by Brice Waegeneire <brice@waegenei.re>.

Previously, pressing F12 or shift-F2 in one of those forms would cause
it to exit, usually with the default value #t because the caller had not
provided a useful hotkey "callback".

* gnu/installer/newt/page.scm (run-input-page, run-confirmation-page)
(run-listbox-selection-page, run-checkbox-tree-page)
(run-file-textbox-page): Pass #:flags FLAG-NOF12 to 'make-form'.
2020-01-20 23:21:00 +01:00
Ludovic Courtès 48659aa221
installer: Makes sure the installer proceeds after hitting "Edit".
Fixes <https://bugs.gnu.org/39199>.
Reported by Jonathan Brielmaier <jonathan.brielmaier@web.de>.

* gnu/installer/newt/page.scm (run-file-textbox-page): Move 'loop' to
the beginning of the body.  Do not call 'loop' from the 'dynamic-wind'
exit handler as we would not return the value of the second call to
'loop'.
2020-01-20 23:20:59 +01:00
Ludovic Courtès 9ced0f376b
installer: Add an "Edit" button on the final page.
Fixes <https://bugs.gnu.org/36885>.
Reported by <lukasbf@tutanota.com>.

* gnu/installer/newt/page.scm (edit-file): New procedure.
(run-file-textbox-page): Add #:edit-button? and #:editor-locale
parameters.  Remove 'file-text' and add 'edit-button', and add it
to the horizontal stacked grid when EXIT-BUTTON? is true.  Wrap
body in 'loop'.  Handle case where ARGUMENT is EDIT-BUTTON by calling
'loop'.
* gnu/installer/newt/final.scm (run-config-display-page): Add #:locale
parameter.  Pass #:edit-button? and #:editor-locale to
'run-file-textbox-page'.
(run-final-page): Pass LOCALE to 'run-config-display-page'.
2020-01-12 23:26:39 +01:00
Tobias Geerinckx-Rice 8fec416cec
installer: Add JFS support.
* gnu/installer/newt/partition.scm (run-fs-type-page): Add ‘jfs’ to the
list box.
* gnu/installer/parted.scm (user-fs-type-name, user-fs-type->mount-type)
(partition-filesystem-user-type): Add ‘jfs’ mapping
(create-jfs-file-system): New procedure.
(format-user-partitions): Use it.
* gnu/installer.scm (set-installer-path): Add jfsutils.
2020-01-05 02:40:07 +01:00
Tobias Geerinckx-Rice 1133596b42
installer: Fix typo.
* gnu/installer/parted.scm (create-btrfs-file-system): Fix typo in docstring.
2020-01-05 02:40:07 +01:00
Ludovic Courtès a4ee6ac444
installer: Pass '--fallback' to 'guix system init'.
Fixes <https://bugs.gnu.org/38608>.
Reported by Nathan Dehnel <ncdehnel@gmail.com>.

* gnu/installer/final.scm (install-system): Pass '--fallback' to 'guix
system init'.
2019-12-29 18:24:55 +01:00
Mathieu Othacehe 70c7b7c799
installer: Update to Guile-Parted 0.0.2 release.
* gnu/installer/parted.scm (data-partition?, metadata-partition?,
freespace-partition?, normal-partition?, extended-partition?,
logical-partition?): Remove, as now provided by Guile-Parted.
* gnu/installer/newt/partition.scm (run-disk-page): Remove disk-destroy calls,
replace disk-delete-all by disk-remove-all-partitions and
disk-delete-partition by disk-remove-partition*.
2019-09-25 16:03:23 +02:00
Mathieu Othacehe 3dd3ac4d83
installer: Fix run-input-page calls.
This fixes 55c43108 commit that renamed input-hide-checkbox? into
input-visibility-checkbox?.

* gnu/installer/newt/partition.scm (prompt-luks-passwords): Rename
input-hide-checkbox? into input-visibility-checkbox?.
2019-09-23 13:55:50 +02:00
Tobias Geerinckx-Rice 3c56d03033
installer: Hide the Wi-Fi passphrase by default.
* gnu/installer/newt/wifi.scm (run-wifi-password-page):
Add an #:INPUT-VISIBILITY-CHECKBOX? to the input page.
2019-08-26 15:56:33 +02:00
Tobias Geerinckx-Rice 55c43108ac
installer: Show, don't Hide.
* gnu/installer/newt/user.scm (run-user-add-page): Change the input
visibility checkbox's text to ‘Show’, and default to unchecked.
* gnu/installer/newt/page.scm (run-input-page): Likewise.
Rename INPUT-HIDE-CHECKBOX? argument to INPUT-VISIBILITY-CHECKBOX?.
2019-08-26 15:56:32 +02:00
Ludovic Courtès 81c3dc3224
maint: Switch to Guile-JSON 3.x.
Guile-JSON 3.x is incompatible with Guile-JSON 1.x, which we relied on
until now: it maps JSON dictionaries to alists (instead of hash tables),
and JSON arrays to vectors (instead of lists).  This commit is about
adjusting all the existing code to this new mapping.

* m4/guix.m4 (GUIX_CHECK_GUILE_JSON): New macro.
* configure.ac: Use it.
* doc/guix.texi (Requirements): Mention the Guile-JSON version.
* guix/git-download.scm (git-fetch)[guile-json]: Use GUILE-JSON-3.
* guix/import/cpan.scm (string->license): Expect vectors instead of
lists.
(module->dist-name): Use 'json-fetch' instead of 'json-fetch-alist'.
(cpan-fetch): Likewise.
* guix/import/crate.scm (crate-fetch): Likewise, and call 'vector->list'
for DEPS.
* guix/import/gem.scm (rubygems-fetch): Likewise.
* guix/import/json.scm (json-fetch-alist): Remove.
* guix/import/pypi.scm (pypi-fetch): Use 'json-fetch' instead of
'json-fetch-alist'.
(latest-source-release, latest-wheel-release): Call 'vector->list' on
RELEASES.
* guix/import/stackage.scm (stackage-lts-info-fetch): Use 'json-fetch'
instead of 'json-fetch-alist'.
(lts-package-version): Use 'vector->list'.
* guix/import/utils.scm (hash-table->alist): Remove.
(alist->package): Pass 'vector->list' on the inputs fields, and default
to the empty vector.
* guix/scripts/import/json.scm (guix-import-json): Remove call to
'hash-table->alist'.
* guix/swh.scm (define-json-reader): Expect pair? or null? instead of
hash-table?.
[extract-field]: Use 'assoc-ref' instead of 'hash-ref'.
(json->branches): Use 'map' instead of 'hash-map->list'.
(json->checksums): Likewise.
(json->directory-entries, origin-visits): Call 'vector->list' on the
result of 'json->scm'.
* tests/import-utils.scm ("alist->package with dependencies"): New test.
* gnu/installer.scm (build-compiled-file)[builder]: Use GUILE-JSON-3.
* gnu/installer.scm (installer-program)[installer-builder]: Likewise.
* gnu/installer/locale.scm (iso639->iso639-languages): Use 'assoc-ref'
instead of 'hash-ref', and pass vectors through 'vector->list'.
(iso3166->iso3166-territories): Likewise.
* gnu/system/vm.scm (system-docker-image)[build]: Use GUILE-JSON-3.
* guix/docker.scm (manifest, config): Adjust for Guile-JSON 3.
* guix/scripts/pack.scm (docker-image)[build]: Use GUILE-JSON-3.
* guix/import/github.scm (fetch-releases-or-tags): Update docstring.
(latest-released-version): Use 'assoc-ref' instead of 'hash-ref'.  Pass
the result of 'fetch-releases-or-tags' to 'vector->list'.
* guix/import/launchpad.scm (latest-released-version): Likewise.
2019-07-25 00:16:41 +02:00
Tobias Geerinckx-Rice 232a7e69ce
installer: Fix typo.
* gnu/installer/newt/network.scm (run-technology-page): Fix plural typo.
2019-06-08 02:30:25 +02:00
Ludovic Courtès d998902214
installer: Install xterm alongside ratpoison.
* gnu/installer/services.scm (%system-services) <"ratpoison">: Add
xterm.
2019-06-07 22:32:19 +02:00
Ludovic Courtès 676eb5880e
installer: Install companion packages alongside i3.
Fixes <http://bugs.gnu.org/36008>.
Suggested by Giovanni Biscuolo <g@xelera.eu>.

* gnu/installer/services.scm (%system-services) <"i3">: Add i3status,
dmenu, and st.
2019-06-07 22:32:10 +02:00
Ludovic Courtès 15ec93a783
Add (gnu build locale).
* gnu/build/locale.scm: New file.
* gnu/local.mk (MODULES_NOT_COMPILED): Add it.
* gnu/installer/locale.scm (normalize-codeset): Remove.
* gnu/system/locale.scm (localedef-command): Remove.
(single-locale-directory): Use (gnu build locale).
(glibc-supported-locales)[build]: Likewise, and remove
'read-supported-locales'.
2019-06-07 21:50:18 +02:00
Ludovic Courtès 0b051bacb3
installer: Always add '%base-initrd-modules' to 'initrd-modules'.
Fixes <https://bugs.gnu.org/36099>.
Reported by Jonathan Brielmaier <jonathan.brielmaier@web.de>.

* gnu/installer/parted.scm (initrd-configuration): Add
%BASE-INITRD-MODULES to the 'initrd-modules' field.
2019-06-05 17:27:22 +02:00
Mathieu Othacehe 694cb8dc62
installer: Fix wifi menu crash with hidden SSIDs.
This fixes https://issues.guix.gnu.org/issue/35622.

* gnu/installer/connman.scm (<service>): Mention that name may be false.
* gnu/installer/newt/wifi.scm (wifi-services): Filter out wifi services
without name.

Co-authored by: Pierre Neidhardt <mail@ambrevar.xyz>
2019-05-29 11:44:49 +02:00
Ludovic Courtès d68de958b6
installer: Fix Guile-Parted crash on i686.
Fixes <https://bugs.gnu.org/35783>.
This is a followup to 7d567af46b.

* gnu/installer/parted.scm (auto-partition!): Append ESP-PARTITION, when
it is true, to the result of 'create-adjacent-partitions!'.
* gnu/installer/newt/partition.scm (run-partioning-page): Remove
'initial-partitions' variable, and remove call to
'create-special-user-partitions'.

Co-authored-by: Mathieu Othacehe <m.othacehe@gmail.com>
2019-05-19 11:58:36 +02:00
Ludovic Courtès 1537464819
installer: Rename 'auto-partition' to 'auto-partition!'.
This is a followup to 7d567af46b.

* gnu/installer/parted.scm (create-adjacent-partitions): Rename to...
(create-adjacent-partitions!): ... this.  Make private.
(auto-partition): Rename to...
(auto-partition!): ... this.
* gnu/installer/newt/partition.scm (run-partioning-page): Adjust
accordingly.
2019-05-15 16:36:20 +02:00
Ludovic Courtès 7d567af46b
installer: Mount ESP once only.
Fixes <https://bugs.gnu.org/35731>.

* gnu/installer/newt/partition.scm (run-partioning-page)[run-page]:
Introduce 'initial-partitions' variable.  Previously we'd call
'disk-partitions' after 'auto-partition' had done its job of creating
new partitions, and thus its result would contain the just-created
partitions.  Consequently, 'create-special-user-partitions' would return
the ESP partition we just created, and thus it would appear twice in the
list.
2019-05-15 12:18:51 +02:00
Danny Milosavljevic 1a92f1ff1c
installer: Add fat16.
* gnu/installer/newt/partition.scm (run-fs-type-page): Add fat16.
2019-05-14 18:01:10 +02:00
Mathieu Othacehe 2bfb3883b9
installer: Reflow run-file-textbox-page text.
* gnu/installer/newt/page.scm (run-file-textbox-page): Reflow text.

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
2019-05-14 18:01:10 +02:00
Danny Milosavljevic b7488b321d
installer: Fix docstring.
* gnu/installer/parted.scm (create-fat32-file-system): Fix docstring.
2019-05-14 18:01:09 +02:00
Danny Milosavljevic 628d09ae53
installer: Add fat16.
* gnu/installer/parted.scm (user-fs-type-name): Add fat16.
(user-fs-type->mount-type): Add fat16.
(create-fat16-file-system): New procedure.
(format-user-partitions): Use it.
2019-05-14 18:01:08 +02:00
Ludovic Courtès ef250707d3
installer: Allow for arbitrary long passphrases and passwords.
Fixes <https://bugs.gnu.org/35716>.
Reported by sirmacik <sirmacik@wioo.waw.pl>.

* gnu/installer/newt/page.scm (run-input-page): Add FLAG-SCROLL to
INPUT-FLAGS*.
* gnu/installer/newt/user.scm (run-user-add-page): Add FLAG-SCROLL to
ENTRY-PASSWORD.
2019-05-14 12:11:04 +02:00
Danny Milosavljevic c5b1377840
installer: Create btrfs file system.
Fixes <https://bugs.gnu.org/35655>.

* gnu/installer/parted.scm (create-btrfs-file-system): New procedure.
(format-user-partitions): Use it.
2019-05-14 00:44:03 +02:00
Ludovic Courtès 76269f6bc4
installer: Use 'glibc-supported-locales'.
The list of locales supported by glibc is now built from source.

* gnu/installer/locale.scm (locale-string->locale): Add optional
'codeset' parameter and honor it.
(supported-locales->locales): Rewrite to 'read' from SUPPORTED-LOCALES.
* gnu/installer.scm (compute-locale-step): Pass the result of
'glibc-supported-locales' instead of the "aux-files/SUPPORTED" file.
* gnu/installer/aux-files/SUPPORTED: Remove.
* gnu/local.mk (dist_installer_DATA): Remove it.
2019-05-13 23:46:08 +02:00