summary refs log tree commit diff
path: root/gnu/installer.scm
AgeCommit message (Collapse)Author
2020-04-18installer: Fix backtrace display.Mathieu Othacehe
The 'syslog' macro cannot be resolved in the pre-unwind-handler context. Failed to resolve 'syslog' in this context resulted in the swallowing of all installation errors. Fixes 5c04b00cf463a543b8ffc9eb55991f6b4cc145dd. * gnu/installer.scm (installer-program): Use (gnu installer utils) module.
2020-04-16installer: Remove guile-newt definition.Mathieu Othacehe
This is no longer necessary since 0.0.2 release of Guile-Newt. * gnu/installer.scm (guile-newt): Remove variable.
2020-04-14installer: Open manual in the selected language on tty2.Ludovic Courtès
Fixes <https://bugs.gnu.org/40624>. Reported by Florian Pelz <pelzflorian@pelzflorian.de>. Regression introduced in b5c2d93d7a223155898dd0ed6932f6acf78ac454. * gnu/installer.scm (apply-locale): Remove 'lambda' around 'stop-service' and 'start-service' calls.
2020-04-09installer: Allow Alt+Shift toggle from non-Latin keyboard layouts.Florian Pelz
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-08installer: Turn help menu into parameters menu.Mathieu Othacehe
* 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-06installer: Hide shepherd messages.Mathieu Othacehe
* gnu/installer.scm (apply-locale): Set "shepherd-message-port" instead of redirecting stderr to make sure that nothing is printed on console.
2020-04-06installer: Add a help page.Mathieu Othacehe
* 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-06installer: Remove trailing tabs.Mathieu Othacehe
* gnu/installer.scm (installer-steps): Remove trailing tabs.
2020-03-22installer: Do not include the host (guix config).Ludovic Courtès
Previously, "locales.drv" would depend on the host's (guix config). Thus, the derivation would depend on details of the user's installation. * gnu/installer.scm (not-config?): New procedure. (build-compiled-file): Pass it to 'source-module-closure' and use 'make-config.scm'.
2020-03-05installer: Use a Guile-Newt snapshot that supports 'form-watch-fd'.Ludovic Courtès
* gnu/installer.scm (guile-newt): New variable.
2020-02-22installer: Log important bits to syslog.Ludovic Courtès
* 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-12installer: Fix installer restart dialog.Mathieu Othacehe
* 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-01-05installer: Add JFS support.Tobias Geerinckx-Rice
* 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.
2019-08-26installer: Partition as the last step.Tobias Geerinckx-Rice
Multiple users have been understandably displeased to find out that their network card was unsupported, and Internet access mandatory, after having already formatted their partitions. * gnu/installer.scm (installer-steps): Run the ‘partition’ step just before the ‘final’ one.
2019-07-25maint: Switch to Guile-JSON 3.x.Ludovic Courtès
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-05-15installer: Increase backtrace verbosity.Mathieu Othacehe
* gnu/installer.scm (installer-program): Set terminal-width to 200 to make guile backtraces more verbose.
2019-05-14installer: Add btrfs-progs to PATH.Danny Milosavljevic
* gnu/installer.scm (installer-program): Add btrfs-progs to PATH.
2019-05-13installer: Use 'glibc-supported-locales'.Ludovic Courtès
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-04-26installer: Actually reboot when the user presses "Reboot."Ludovic Courtès
* 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.
2019-04-26installer: Run wrapped program with 'execl', not 'system'.Ludovic Courtès
'system' invokes /bin/sh, which is certainly not needed here. * gnu/installer.scm (installer-program): Use 'execl', not 'system'.
2019-04-17installer: Translate keyboard layout names.Ludovic Courtès
* gnu/installer.scm (installer-program)[installer-builder]: Call 'bindtextdomain' for "xkeyboard-config". * gnu/installer/newt/keymap.scm (run-keymap-page): Add calls to 'gettext'.
2019-04-17installer: Display language and territory names natively.Ludovic Courtès
* gnu/installer.scm (installer-program): Add calls to 'bindtextdomain'. * gnu/installer/newt/locale.scm (run-locale-page) <language, territory>: Add calls to 'gettext'.
2019-04-12installer: Choosing a locale opens the translated manual on tty2.Ludovic Courtès
Suggested by Florian Pelz. * gnu/system/install.scm (%installation-node-names): New variable. (log-to-info): Expect the chosen locale as an argument. Compute the language, Info file name, and node name. Install the locale. (documentation-shepherd-service): Add 'locale' parameter to the 'start' action and honor it. Set GUIX_LOCPATH and TERM as environment variables for the process. * gnu/installer.scm (apply-locale): Use (gnu services herd). Call 'stop-service' and 'start-service' with the chosen locale.
2019-04-07installer: Generalize desktop environments to system services.Ludovic Courtès
* 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.
2019-04-07installer: Move the 'locale' step before the 'welcome' step.Ludovic Courtès
* gnu/installer.scm (installer-steps): Move the 'locale step before 'welcome.
2019-03-27installer: Produce an 'initrd-modules' field if needed.Ludovic Courtès
* 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.
2019-03-25installer: Set the system's 'keyboard-layout' field.Ludovic Courtès
* gnu/installer/newt/keymap.scm (keyboard-layout->configuration): New procedure. * gnu/installer.scm (compute-keymap-step): Return RESULT. (installer-steps) <'keymap>: Add 'configuration-formatter' field. (installer-program): Use (gnu installer newt keymap). * gnu/installer/parted.scm (bootloader-configuration): Set 'keyboard-layout'.
2019-01-28gnu: Move most packages from guile.scm to new module.Ricardo Wurmus
* gnu/packages/guile.scm (artanis, guildhall, guile-aspell, guile-bash, guile-8sync, guile-daemon, guile-dsv, guile-fibers, guile-syntax-highlight, guile-sjson, guile-colorized, guile-pfds, guile-aa-tree, guile-simple-zmq, jupyter-guile-kernel, guile-sparql, guile-debbugs, guile-email, guile-debbugs-next, guile-newt, guile-mastodon, guile-parted, guile-xosd, guile-dbi, guile-dbd-sqlite3, guile-config, guile-hall, guile-ics, guile-wisp, guile-sly, g-wrap, guile-miniadapton, guile-reader, guile2.2-reader, guile-ncurses, guile-ncurses/gpm, guile-lib, guile2.0-lib, guile2.2-lib, guile-minikanren, guile2.0-minikanren, guile2.2-minikanren, guile-irregex, guile2.0-irregex, guile2.2-irregex, haunt, guile2.0-haunt, guile2.2-haunt, guile-redis, guile2.0-redis, guile2.2-redis, guile-commonmark, guile2.0-commonmark, guile2.2-commonmark, mcron, mcron2): Move these variables from here... * gnu/packages/guile-xyz.scm: ...to this new file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * gnu/installer.scm, gnu/packages/bioinformatics.scm, gnu/packages/ci.scm, gnu/packages/gtk.scm, gnu/packages/guile.scm, gnu/packages/mail.scm, gnu/packages/package-management.scm, gnu/packages/skribilo.scm, gnu/packages/web.scm, gnu/services/mcron.scm: Update module references.
2019-01-17installer: Various renamings.Mathieu Othacehe
1. s/partitionment/partitioning/ 2. s/crypted/encrypted/ * gnu/installer.scm (installer-steps): Apply renamings. * gnu/installer/newt/partition.scm (run-disk-page): ditto, * gnu/installer/parted.scm (auto-partition): ditto, (luks-format-and-open): ditto, (luks-close): ditto, (user-partitions->configuration): ditto.
2019-01-17installer: partionment: Add encryption support.Mathieu Othacehe
* 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-17installer: Display an eventual backtrace in a page.Mathieu Othacehe
* 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-17installer: Reorder partitionment step.Mathieu Othacehe
* 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-17installer: Add partitioning support.Mathieu Othacehe
* 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-17installer: Fix comments.Mathieu Othacehe
* gnu/installer.scm (installer-steps): Fix comments.
2019-01-17installer: Add hostname.Mathieu Othacehe
* 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-17installer: Add services page.Mathieu Othacehe
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-17installer: Do not ask for keyboard model.Mathieu Othacehe
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-17installer: Add configuration formatter.Mathieu Othacehe
* 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-17installer: Fix locale installation.Mathieu Othacehe
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-17installer: Move everything to the build side.Mathieu Othacehe
* 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-17gnu: Add graphical installer support.Mathieu Othacehe
* configure.ac: Require that guile-newt is available. * gnu/installer.scm: New file. * gnu/installer/aux-files/logo.txt: New file. * gnu/installer/build-installer.scm: New file. * gnu/installer/connman.scm: New file. * gnu/installer/keymap.scm: New file. * gnu/installer/locale.scm: New file. * gnu/installer/newt.scm: New file. * gnu/installer/newt/ethernet.scm: New file. * gnu/installer/newt/hostname.scm: New file. * gnu/installer/newt/keymap.scm: New file. * gnu/installer/newt/locale.scm: New file. * gnu/installer/newt/menu.scm: New file. * gnu/installer/newt/network.scm: New file. * gnu/installer/newt/page.scm: New file. * gnu/installer/newt/timezone.scm: New file. * gnu/installer/newt/user.scm: New file. * gnu/installer/newt/utils.scm: New file. * gnu/installer/newt/welcome.scm: New file. * gnu/installer/newt/wifi.scm: New file. * gnu/installer/steps.scm: New file. * gnu/installer/timezone.scm: New file. * gnu/installer/utils.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add previous files. * gnu/system.scm: Export %root-account. * gnu/system/install.scm (%installation-services): Use kmscon instead of linux VT for all tty. (installation-os)[users]: Add the graphical installer as shell of the root account. [packages]: Add font related packages. * po/guix/POTFILES.in: Add installer files.