Commit Graph

39006 Commits

Author SHA1 Message Date
Mathieu Othacehe
59e8f3c3ac
installer: parted: Use read-luks-partition-uuid instead of
find-partition-by-luks-uuid.

* gnu/installer/parted.scm (user-partition->mapped-device): Replace
read-luks-partition-uuid by find-partition-by-luks-uuid,
(user-partition->file-system): only compute uuid if the partition
is not encrypted.
2019-01-17 14:04:26 +01:00
Mathieu Othacehe
8ae7044f1d
file-systems: Add read-luks-partition-uuid.
Add a specific procedure to read luks partition uuid.

* gnu/build/file-systems.scm (luks-partition-field-reader): New procedure ...
(luks-partition-uuid-predicate): ... used here,
(read-luks-partition-uuid): new exported procedure.
2019-01-17 14:04:26 +01:00
Mathieu Othacehe
df3664f1ec
installer: Clear screen upon exit.
* gnu/installer/newt.scm (exit): Call clear-screen after newt-finish,
(exit-error): ditto.
2019-01-17 14:04:26 +01:00
Mathieu Othacehe
bf304dbcea
installer: partionment: Add encryption support.
* gnu/installer.scm (set-installer-path): Add cryptsetup.
* gnu/installer/newt/partition.scm (prompt-luks-passwords): New procedure,
(run-partioning-page): Add the possibility to set encryption to "On" on a
partition and choose a label, add a new partition scheme: "Guided - using the
entire disk with encryption", prompt for encryption passwords before
proceeding to formating.
* gnu/installer/parted.scm (<user-partition>)[crypt-label],
[crypt-password]: New fields,
(partition-description): add the encryption label,
(user-partition-description): add an encryption field,
(auto-partition): add two partitioning schemes: entire-crypted-root and
entire-crypted-root-home,
(call-with-luks-key-file): new procedure,
(user-partition-upper-path): new procedure,
(luks-format-and-open): new procedure,
(luks-close): new procedure,
(format-user-partitions): format and open luks partitions before creating
file-system.
(mount-user-partitions): use the path returned by user-partition-upper-path,
(umount-user-partitions): close the luks partitions,
(user-partition->file-system): set device field to label for luks partitions
and to uuid for the rest,
(user-partition->mapped-device): new procedure,
(user-partitions->configuration): add mapped-devices field.
2019-01-17 14:04:26 +01:00
Mathieu Othacehe
71cd8a5870
installer: partition: Fix typo.
* gnu/installer/newt/partition.scm (run-disk-page): Fix typo.
2019-01-17 14:04:26 +01:00
Mathieu Othacehe
b624206d6b
installer: partition: Fix swaping and use syscalls.
* gnu/installer/parted.scm (start-swaping): Remove it,
(stop-swaping): Remove it,
(start-swapping): New procedure using swapon syscall,
(stop-swapping): New procedure using swapoff syscall,
(with-mounted-partitions): Use previous start-swapping and stop-swapping
procedures.
2019-01-17 14:04:26 +01:00
Mathieu Othacehe
a7b2a4649f
installer: menu: Fix typo.
* gnu/installer/newt/menu.scm (run-menu-page): Fix typo.
2019-01-17 14:04:26 +01:00
Mathieu Othacehe
ee4004b392
installer: partition: Precise when using Manual/Guided partionment.
* gnu/installer/newt/partition.scm (run-disk-page)[guided?]: New argument.
Use guided? to determine if we are proceeding to a guided or a manuel
partitioning and precise it the title and info-text.
2019-01-17 14:04:26 +01:00
Mathieu Othacehe
133c401f77
installer: Display an eventual backtrace in a page.
* gnu/installer.scm (installer-program): Write the backtrace in
"/tmp/last-installer-error" and pass the filename to installer-exit-error.
* gnu/installer/newt.scm (exit-error): Display the file passed above in a textbox.
2019-01-17 14:04:25 +01:00
Mathieu Othacehe
3d0f6a055c
installer: Make exit button optional for run-file-textbox-page.
* gnu/installer/newt/page.scm (run-file-textbox-page)[exit-button?]: New argument.
2019-01-17 14:04:25 +01:00
Mathieu Othacehe
d700d131be
installer: Make sure every sentence is dot terminated.
gnu/installer/newt/hostname.scm: Finish sentences by a dot.
gnu/installer/newt/network.scm: Ditto.
gnu/installer/newt/page.scm: Ditto.
gnu/installer/newt/partition.scm: Ditto.
gnu/installer/newt/user.scm: Ditto.
gnu/installer/newt/wifi.scm: Ditto.
2019-01-17 14:04:25 +01:00
Mathieu Othacehe
cbeb27025f
installer: partition: Differenciate Back button from Exit button.
* gnu/installer/newt/partition.scm (run-label-page): Pass the button text as
an argument,
(run-disk-page): Call run-label-page with the appropriate button text.
2019-01-17 14:04:25 +01:00
Mathieu Othacehe
77c00b1e57
installer: network: Do not show an empty technology list.
If no technology is detected, ask the user if he prefers to continue or to
exit the installer.

* gnu/installer/newt/network.scm (run-technology-page): Run a choice-window if
technology-items procedure returns an empty list.
2019-01-17 14:04:25 +01:00
Mathieu Othacehe
9e58d4e90e
installer: keymap: Fix keymap selection of layouts with not variant.
* gnu/installer/newt/keymap.scm (run-keymap-page): Test if the layout has no
variant at 'variant step, instead of raising a condition at 'layout step.
2019-01-17 14:04:25 +01:00
Mathieu Othacehe
479414e1c9
installer: keymap: Do not fail on non-kmscon terminals.
kmscon-update-keymap fails on non kmscon terminals because KEYMAP_UPDATE
environment variable is not defined. As it is convenient to test the installer
on a regular terminal, do nothing if KEYMAP_UPDATE is missing.

* gnu/installer/keymap.scm (kmscon-update-keymap): Do nothing if KEYMAP_UPDATE
is not defined.
2019-01-17 14:04:25 +01:00
Mathieu Othacehe
7d812901da
installer: Turn "Cancel" buttons into "Exit" buttons.
This change and previous ones were,
Suggested-by: Thorsten Wilms <t_w_@freenet.de>
here: https://lists.gnu.org/archive/html/guix-devel/2018-11/msg00330.html

gnu/installer/newt/ethernet.scm: Turn cancel into exit.
gnu/installer/newt/final.scm: Ditto.
gnu/installer/newt/keymap.scm: Ditto.
gnu/installer/newt/locale.scm: Ditto.
gnu/installer/newt/network.scm: Ditto.
gnu/installer/newt/page.scm: Ditto.
gnu/installer/newt/partition.scm: Ditto.
gnu/installer/newt/services.scm: Ditto.
gnu/installer/newt/timezone.scm: Ditto.
gnu/installer/newt/user.scm: Ditto.
gnu/installer/newt/wifi.scm: Ditto.
2019-01-17 14:04:25 +01:00
Mathieu Othacehe
30cf5e0426
installer: locale: Set English as the default language.
* gnu/installer/newt/locale.scm (sort-languages): New procedure ...
(run-locale-page)[locale-steps]: ... used here to make english the default
language.
2019-01-17 14:04:24 +01:00
Mathieu Othacehe
30b4df8627
installer: locale: Make clear that the point is to select a glibc locale.
* gnu/installer/newt/locale.scm (run-language-page): Be more specific about
what is a locale and what are the different steps involved in the info messages.
2019-01-17 14:04:24 +01:00
Mathieu Othacehe
5bfdde503e
installer: Reorder partitionment step.
* gnu/installer.scm (installer-steps): Run partitionment step after keymap
step, so that the keyboard is correctly mapped when filling the mount-point
entry in partitionment page.
2019-01-17 14:04:24 +01:00
Mathieu Othacehe
54754efc91
installer: Fix compute calls.
* gnu/installer/newt/keymap.scm (run-keymap-page): Add missing argument to
compute procedure.
* gnu/installer/newt/network.scm (run-network-page): Ditto.
2019-01-17 14:04:24 +01:00
Mathieu Othacehe
35e99a23b5
installer: Remove group selection in user page.
Assume that the user's group is always "users".

* gnu/installer/newt/user.scm (run-user-add-page): Remove group fields,
(run-user-page): ditto.
2019-01-17 14:04:24 +01:00
Mathieu Othacehe
1ad1b6e2f2
installer: Reorder local.mk.
* gnu/local.mk (GNU_SYSTEM_MODULES): Reorder list.
2019-01-17 14:04:24 +01:00
Mathieu Othacehe
32f7b2fe82
installer: Reorder POTFILES.in
* po/guix/POTFILES.in: Reorder file list.
2019-01-17 14:04:24 +01:00
Mathieu Othacehe
69a934f23a
installer: Add partitioning support.
* gnu/installer.scm (installer-steps): Add partitioning step.
* gnu/installer/newt.scm (newt-installer): Add partition-page field.
* gnu/installer/newt/partition.scm: New file.
* gnu/installer/parted.scm: New file.
* gnu/installer/record (installer): New partition-page field.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add new files.
* po/guix/POTFILES.in: Add new files.
2019-01-17 14:04:24 +01:00
Mathieu Othacehe
47c9480165
installer: Add user module.
* gnu/installer/user.scm: New file.
2019-01-17 14:04:24 +01:00
Mathieu Othacehe
6efd8430ae
installer: Fix comments.
* gnu/installer.scm (installer-steps): Fix comments.
2019-01-17 14:04:23 +01:00
Mathieu Othacehe
fb1675cbca
installer: Fix ethernet connection.
* gnu/installer/newt/ethernet.scm (connect-ethernet-service): Return the
service passed as parameter.
2019-01-17 14:04:23 +01:00
Mathieu Othacehe
6aa625c2f8
installer: Redirect to TTY3 root shell for unguided install.
* gnu/installer/newt/welcome.scm (run-welcome-page): Switch to TTY3 for
unguided shell based install.
2019-01-17 14:04:23 +01:00
Mathieu Othacehe
29d8d9196b
installer: Add new pages.
* gnu/installer/newt/page.scm (run-scale-page): New exported procedure,
(run-checkbox-tree-page): ditto,
(run-file-textbox-page): ditto.
2019-01-17 14:04:23 +01:00
Mathieu Othacehe
b4658c258e
installer: Add hostname.
* gnu/installer/hostname.scm: New file.
* gnu/installer.scm (installer-program): Use new module above.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add new file.
* po/guix/POTFILES.in: Add new file.
2019-01-17 14:04:23 +01:00
Mathieu Othacehe
b51bde71a9
installer: Add services page.
Add a page to select services, for now only desktop environments choice is
available.

* gnu/installer.scm (steps): Add services step.
* gnu/installer/newt.scm (newt-installer): Add services-page field.
* gnu/installer/newt/services.scm: New file.
* gnu/installer/record.scm (installer): Add services-page field.
* gnu/installer/services.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add new files.
* po/guix/POTFILES.in: Add new files.
2019-01-17 14:04:23 +01:00
Mathieu Othacehe
c088b2e47f
installer: Do not ask for keyboard model.
Suppose that the keyboard model is "pc105".

* gnu/installer.scm (apply-keymap): Remove model ...
* gnu/installer/newt/keymap.scm (run-keymap-page): passed here.
(run-model-page): remove procedure
* gnu/installer/record.scm (installer): Edit keymap-page prototype in comment.
* gnu/installer/keymap.scm (default-keyboard-model): New exported parameter.
2019-01-17 14:04:23 +01:00
Mathieu Othacehe
dc5f3275ec
installer: Add configuration formatter.
* gnu/installer.scm (installer-steps): Add configuration-formatter procedures.
* gnu/installer/final.scm: New file.
* gnu/installer/locale.scm (locale->configuration): New exported procedure.
* gnu/installer/newt.scm (newt-installer): Add final page.
* gnu/installer/newt/final.scm: New file.
* gnu/installer/record.scm (installer): Add final-page field.
* gnu/installer/timezone.scm (posix-tz->configuration): New exported
procedure.
* gnu/installer/steps.scm (installer-step): Rename configuration-proc field to
configuration-formatter.
(%installer-configuration-file): New exported parameter,
(%installer-target-dir): ditto,
(%configuration-file-width): ditto,
(format-configuration): new exported procedure,
(configuration->file): new exported procedure.
2019-01-17 14:04:22 +01:00
Mathieu Othacehe
3ad8f7757c
installer: Add new utils.
* gnu/installer/utils.scm (nearest-exact-integer): New exported procedure,
(read-percentage): ditto,
(run-shell-command): ditto.
2019-01-17 14:04:22 +01:00
Mathieu Othacehe
5cdb6bd2db
installer: Remove "selection" from all titles.
* gnu/installer/newt/hostname.scm (run-hostname-page): Remove selection from
page title,
(run-variant-page): ditto.
* gnu/installer/newt/keymap.scm (run-layout-page): Ditto.
* gnu/installer/newt/locale.scm (run-layout-page): Ditto,
(run-territory-page): ditto,
(run-codeset-page): ditto,
(run-modifier-page): ditto
* gnu/installer/newt/network.scm (run-territory-page): Ditto.
* gnu/installer/newt/timezone.scm (run-timezone-page): Ditto.
* gnu/installer/newt/wifi.scm (run-wifi-page): Ditto.
2019-01-17 14:04:22 +01:00
Mathieu Othacehe
983abd2cf9
file-systems: Export read-partition-label and read-partition-uuid.
* gnu/build/file-systems.scm (read-partition-label): Export it,
(read-partition-uuid): ditto.
2019-01-17 14:04:22 +01:00
Mathieu Othacehe
a8307a178b
gnu: Add guile-parted.
* gnu/packages/guile.scm (guile-parted): New variable.
2019-01-17 14:04:22 +01:00
Mathieu Othacehe
7e3e6d721d
gnu: guile-newt: Update to revision 4.
* gnu/packages/guile.scm (guile-newt): Update to revision 4.
2019-01-17 14:04:22 +01:00
Mathieu Othacehe
ca0c43ecf0
services: herd: Allow to pass arguments to start-service.
* gnu/services/herd.scm (start-service)[arguments]: New optional argument.
2019-01-17 14:04:22 +01:00
Mathieu Othacehe
b08bea0497
build: syscalls: Add device-in-use?.
This new procedure uses BLKRRPART to determine whether or not a device is
busy. It is useful when a device does not appear as mounted but is maybe used
by the kernel. This is the case with overlayfs lowerdir backend device for
example.

* guix/build/syscalls.scm (device-in-use?): New exported procedure.
2019-01-17 14:04:22 +01:00
Mathieu Othacehe
4f83afd28a
tests: Rename %test-encrypted-os to %test-encrypted-root-os.
* gnu/tests/install.scm (%test-encrypted-os): Rename to
%test-encrypted-root-os for consistency with its system-test name.
2019-01-17 14:04:21 +01:00
Mathieu Othacehe
6b48825e4b
installer: Fix locale installation.
For some mysterious reason, calling 'setlocale' as first instruction of
installer-builder does not install unicode support correctly. So set LANG env
variable and start the installer until this is understood.

* gnu/installer.scm (installer-program): Wrap installer-builder to have the
opportunity to set LANG environment variable before starting the installer.
2019-01-17 14:04:21 +01:00
Mathieu Othacehe
a49d633c0c
installer: Move everything to the build side.
* gnu/installer.scm: Rename to ...
* gnu/installer/record.scm: ... this.
* gnu/installer/build-installer.scm: Move everything to the build side and
rename to gnu/installer.scm.
* gnu/installer/newt.scm: Remove all the gexps and add depencies to newt
modules as this code will only be used on the build side by now.
* gnu/local.mk (GNU_SYSTEM_MODULES): Adapt it,
(dist_installer_DATA): New rule to install installer's aux-files.
* gnu/system/install.scm (%installation-services): Use only
'installer-program' from (gnu installer). The installer is now choosen on the
build side.
* guix/self.scm (*system-modules*): Restore previous behaviour and add all
installer files to #:extra-files field of the scheme-node.
* po/guix/POTFILES.in: Adapt it.
2019-01-17 14:04:21 +01:00
Mathieu Othacehe
113bdf6ae1
installer: Rewrite welcome page.
The welcome page is the only page using absolute positioning for the newt
components, so that the page occupies all the screen space. This is becoming
too hard to manage, so switch to grid management like elsewhere, even if the
result is less appealing.

Also add an info text to the page with a mention on how to switch back to the
original installer.

* gnu/installer/newt/welcome.scm (run-menu-page): Use a vertically stacked
grid instead of hard window placement.
2019-01-17 14:04:21 +01:00
Mathieu Othacehe
a79617468e
gnu: installer: Launch the installer as kmscon login-program.
Source /etc/environment just before starting the installer. The login program
is supposed to load the environment variables of this file through PAM, but as
we replace it by the installer, they are no longer available. This is mostly
useful for the LANG environment variable.

* gnu/installer/build-installer.scm (installer-program-launcher): New exported
procedure.
* gnu/system/install.scm (%installation-services): Restore most of the origin
code. kmscon is only started on TTY1, and the graphical installer is the
login-program.
2019-01-17 14:04:21 +01:00
Mathieu Othacehe
16006a05a1
guix: self: Do not install (gnu system install).
As we do not want to add a dependency to newt and the graphical installer
in (guix self), do not install (gnu system install).

* guix/self.scm (*system-modules*): Remove (gnu system install) from
"guix-system" scheme-node.
2019-01-17 14:04:21 +01:00
Mathieu Othacehe
2e7addd20b
doc: Document the graphical installer.
* doc/guix.texi (Preparing for Installation): Mention the graphical installer.
2019-01-17 14:04:21 +01:00
Mathieu Othacehe
7d328e341a
configure: Disable installer build by default.
Only build installer if "--enable-installer" is passed. In that case only, the
support for Guile-newt becomes mandatory.

* configure.ac: Add --enable-installer argument. Export ENABLE_INSTALLER
conditional according to the argument value.
* gnu/local.mk (GNU_SYSTEM_MODULES): Remove installer modules and build them
only if ENABLE_INSTALLER is set.
2019-01-17 14:04:21 +01:00
Mathieu Othacehe
9b9a5e3283
installer: newt: Locate the logo within local-file.
* gnu/installer/newt.scm (logo): Remove it,
(welcome-page): Use a relative path to locate the logo.
2019-01-17 14:04:20 +01:00
Mathieu Othacehe
ba32109a28
installer: newt: Use scheme-modules* instead of scheme-modules.
* gnu/installer/newt.scm (modules): Use scheme-modules*.
2019-01-17 14:04:20 +01:00