summaryrefslogtreecommitdiff
path: root/etc/guix-install.sh
AgeCommit message (Collapse)Author
2025-02-28guix-install.sh: Convert sysv-init to SYSV_INIT_REQUIRE to match variable name.Maxim Cournoyer
See <https://lists.gnu.org/archive/html/bug-guix/2024-06/msg00145.html>. Thanks to Nyi Nyi Zaw for the patch. * etc/guix-install.sh (add_init_sys_require): Adjust value of INIT_SYS so that it matches the potential extra required arguments array name. Reported-by: Nyi Nyi Zaw Reported-by: Diana Belle <[email protected]> Change-Id: Ic41de6fba7ef37dff479728aebefaa8cb148315e
2025-02-21guix-install.sh: Check for existing installation before downloading.Liam Hupfer
Previously, the check came after guix_get_bin. There’s no need to fetch the rather large release archive if there’s an existing installation, so check first. Refactor the check into a function similar to other preflight checks. * etc/guix-install.sh: Check for existing installation before downloading. Change-Id: I5506fb1cacdc88bd6355e8dfa1f690acf7886c1f Signed-off-by: Ludovic Courtès <[email protected]>
2025-02-21guix-install.sh: Add msg helpers and use stderr consistently.Liam Hupfer
Add helpers to avoid repeated manual concatenation. _err and _msg "$ERR are used interchangeably with their only difference being output stream; convert all errors to use _err. * etc/guix-install.sh: Add msg helpers and consolidate errors to stderr. Change-Id: I06e97ccc50d108ed9e279ae80c6b2386d7b8c36b Signed-off-by: Ludovic Courtès <[email protected]>
2025-02-21guix-install.sh: Appease shellcheck.Liam Hupfer
* etc/guix-install.sh: Appease shellcheck. Change-Id: I24f0d13bb254c08d4fe45f5aa3b74bbc6a9a9d88 Signed-off-by: Ludovic Courtès <[email protected]>
2025-02-21guix-install.sh: Add to MANPATH.Liam Hupfer
Guix and Guix-provided software also have man pages. If the user doesn’t install man-db via Guix, they should still be able to read Guix-provided man pages. * etc/guix-install.sh (sys_create_init_profile): Add to MANPATH. Change-Id: Ibceb354012d23d24deeb39b1ec02790873396a6b Signed-off-by: Ludovic Courtès <[email protected]>
2025-02-21guix-install.sh: Improve Guix profile sourcing.Liam Hupfer
Make both profiles use GUIX_PROFILE and reorder some code so each profile is handled in one contiguous block. The user’s profile now takes precedence over the ‘guix pull’ profile on INFOPATH. If the user already has an info reader in their Guix profile, don’t add a duplicate entry to INFOPATH. If the user doesn’t have an imperative ~/.guix-profile (i.e. they manage software with Guix Home and ‘guix shell’), don’t add an unnecessary entry to INFOPATH. Clean up after ourselves by unsetting the temporary GUIX_PROFILE variable, which only needs to be set when sourcing. * etc/guix-install.sh (sys_create_init_profile): Improve Guix profile sourcing. Change-Id: Ibceb354012d23d24deeb39b1ec02790873396a6b Signed-off-by: Ludovic Courtès <[email protected]>
2025-02-21guix-install.sh: Remove system-level Guix Home initialization.Liam Hupfer
Guix Home handles its own profile initialization in ~/.profile and documents shell setup accordingly. It does more than what is done here, including running an on-first-login script to start a user Shepherd instance. In general, changes and improvements to Guix Home initialization are unlikely to propagate to the foreign distro install script, since many Guix contributors only use Guix via Guix System and Guix Home does not depend on system-level initialization anyway. Avoid partially initializing Guix Home in /etc/profile.d to keep search path variables free of redundant entries. Instead, leave a comment directing users to the relevant manual section. * etc/guix-install.sh (sys_create_init_profile): Remove system-level Guix Home initialization. Change-Id: Ib78aa0382268a789298d4980ee394d99a602a5ca Signed-off-by: Ludovic Courtès <[email protected]>
2025-01-27guix-install.sh: uninstall: Also remove shell completion symlinks.Denis 'GNUtoo' Carikli
Since symlinks to shell completion files are installed, it is useful to remove them during the uninstallation, especially when they point to files that are removed by 'guix-install.sh --uninstall'. * etc/guix-install.sh (sys_delete_shell_completion): Create. (sys_create_shell_completion): hardcode files being installed. (sys_customize_bashrc): call sys_delete_shell_completion. Change-Id: I70008bb55e7e1604f0c485c798460e160af7c9e5 Signed-off-by: Ludovic Courtès <[email protected]>
2024-11-14guix-install.sh: Run the uninstall even if already partially doneDavid Boilleau
Removing users, groups or Systemd units fails if they are already absent, causing the uninstall script to exit. The goal here is to make the uninstall always run entirely, whatever parts are already done. * etc/guix-install.sh (sys_delete_build_user): Test if users and groups exist before deleting them. (sys_delete_guix_daemon): Test if /etc/systemd/system/guix-daemon.service file exists before removing the matching Systemd unit. Change-Id: Ibffb1f1b39de675542fb8057af21ecaea1b53d4c Signed-off-by: Ludovic Courtès <[email protected]>
2024-11-14guix-install.sh: Replace `ROOT_HOME` with `~root`David Boilleau
The `ROOT_HOME` variable is natively absent from some systems, however the form `~root`, which is used by the install functions in this same file, works. * etc/guix-install.sh (sys_delete_store, sys_delete_guix_daemon) (sys_delete_user_profiles): Replace `ROOT_HOME` with `~root`. Change-Id: Ia867e271ac4c5557d9708235fee028bccce68342 Signed-off-by: Ludovic Courtès <[email protected]>
2024-11-14guix-install.sh: Test if gnu-store.mount exists before removing the unitDavid Boilleau
The file /etc/systemd/system/gnu-store.mount has permissions 664, since the `install_unit()` function installed it so. So the test prior to removing the matching Systemd unit should not be wether this file is executable, otherwise it will always fail. The relevant test is on the file existence. * etc/guix-install.sh (sys_delete_guix_daemon): Test if gnu-store.mount file exists rather than if it is executable. Change-Id: Ic7cc186618b0b92fccf49a3b27805756a9126b89 Signed-off-by: Ludovic Courtès <[email protected]>
2024-06-04guix-install.sh: Add unique requirement for sysv init systemRichard Sent
This improves the installer's ability to detect that all requirements are present regardless of init system. It also avoids performing the requirement check twice (printing excessively to the console) and provides a framework for adding new init system specific requirements if it's needed in the future. * etc/guix-install.sh (add_init_sys_require): Create. (SYSV_INIT_REQUIRE): Create. (main_install): Reorder installer steps so all requirements are checked in one pass. Change-Id: Ic541c1b90499d504642b7ab4ae595501b1a37b0d Signed-off-by: Ludovic Courtès <[email protected]>
2024-06-02guix-install.sh: Relax check for OpenRC.Tomas Volf
On my virtual private servers running Alpine, the install script failed to identify the init system. The virtual server is LXC based, and OpenRC identifies itself like this: # openrc --version openrc (OpenRC [LXC]) 0.52.1 The regular expression failed to match it. After relaxing the check (by removing the trailing `)' requirement) the installation went fine and I got functional Guix installation. * etc/guix-install.sh (chk_init_sys): Drop trailing \) from the regular expression. Change-Id: I5f951226341e631fb34cc6c26cfbb87656dab77a Signed-off-by: Ludovic Courtès <[email protected]>
2024-06-02guix-install.sh: Add ~/.guix-profile/share/info to INFOPATH.Trevor Arjeski
Adding ~/.guix-profile/share/info to the INFOPATH env var so that when a user does `guix install [package]` that package's info pages can be found. * etc/guix-install.sh (sys_create_init_profile): Add $GUIX_PROFILE/share/info to INFOPATH in ‘/etc/profile.d/zzz-guix.sh’. Signed-off-by: Ludovic Courtès <[email protected]> Change-Id: I8958261c388ddee5659f0f1ce1c0c9813dc0f052
2024-04-29guix-install.sh: Fix setting GUIX_LOCPATH.Tomas Volf
After installing Guix home on my new foreign system, the locale did not work and GDM did not even let me to log in. After some digging around using tty3 and tty4, I realized the GUIX_LOCPATH is not being set properly. I had nothing installed in the ~/.guix-profile (the symlink did not even exist) and I had glibc-locales installed in ~/.guix-home, yet GUIX_LOCPATH contained "$HOME/.guix-profile/lib/locale:". I believe when the code was modified from the original "home or profile" to the current "home and profile" the || was used by accident instead of &&. I also remove the trailing :, since it is taken care of by the ${...:+:}. * etc/guix-install.sh (sys_create_init_profile): Change-Id: I8a3287fe809af58aee2edc924154eecf91fa1eb8 Signed-off-by: Ludovic Courtès <[email protected]>
2024-04-29guix-install.sh: Add default value for XCURSOR_PATH.Tomas Volf
This improves compatibility with (at least) Gnome based systems. On my new Ubuntu 22.04 install the mouse cursor was broken (after I installed Guix) until I set this. * etc/guix-install.sh (sys_create_init_profile): Set default value for XCURSOR_PATH. Change-Id: I489f0307d99e4d8d82671f291c78b90c7b6dae4a Signed-off-by: Ludovic Courtès <[email protected]>
2024-04-07guix-install.sh: Make Guix modules available too.Janneke Nieuwenhuizen
* etc/guix-install.sh (GUILE_LOAD_PATH): Prepend directory to current Guix modules. (GUILE_LOAD_COMPILED_PATH): Likewise to compiled modules. Change-Id: I0b2722a38b1f8ebab32142cbc372a23cadfb0620
2024-04-05guix-install.sh: Add ‘--uninstall’ flag.Ludovic Courtès
* etc/guix-install.sh (REQUIRE): Add groupdel and userdel. (chk_term): Handle ‘WAR’. (sys_delete_store, sys_delete_build_user, sys_delete_guix_daemon) (sys_delete_init_profile, sys_delete_user_profiles): New functions. (main): Rename to… (main_install): … this. (main_uninstall): New function. (main): Dispatch between these two. * doc/guix.texi (Installation): Refer to “Binary Installation” instead of repeating it. (Binary Installation): Document uninstallation. Co-authored-by: Ludovic Courtès <[email protected]> Change-Id: I55b7c10823773bced2e268273e8ce828cb3bd98d
2024-04-03Switch order of the default substitute servers.Christopher Baines
The aim here is to improve the user experience. There's anecdotal evidence that the network performance for bordeaux is better compared to ci at least for some users, and I don't know of any issues with rate limiting or access restriction for bordeaux compared to ci. It also has IPv6 support. Additionally, bordeaux generally had more substitutes than ci, particularly for aarch64-linux and armhf-linux. This change will offer a very slight speedup for those substitutes that only bordeaux has. Bordeaux has been a default substitute server for nearly 3 years now and I think this change is overdue. I'm also hopeful that we'll be able to build on the testing regarding mirrors for bordeaux, and that'll allow potentially improving the hosting setup (through providing more redundancy) and further improving substitute fetching for users who currently have issues with substitute access. * config-daemon.ac: Switch substitute urls order. * doc/guix.texi: Ditto. * etc/guix-install.sh: Ditto. * gnu/installer/newt/network.scm (wait-service-online): Ditto. * guix/store.scm (%default-substitute-urls): Ditto. Change-Id: I4f6d93ae1fc8b03d80b47b18b5749a51f1fde17b Signed-off-by: Christopher Baines <[email protected]>
2023-07-16guix-install.sh: Fix incomplete installation.Tobias Geerinckx-Rice
‘false || return’ returns false, and ‘set -e’ aborts the script. This leaves Guix half installed with visual indication of error. * etc/guix-install.sh (sys_customize_bashrc, sys_maybe_setup_selinux): Explicitly return 0.
2023-07-16guix-install.sh: Install SELinux policy only if tools are present.Tobias Geerinckx-Rice
* etc/guix-install.sh (sys_maybe_setup_selinux): Silently return if the ‘semodule’ or ‘restorecon’ commands are missing.
2023-07-09guix-install.sh: Remove any old systemd units first.Tobias Geerinckx-Rice
Don't clobber /dev/null permissions if units are masked. * etc/guix-install.sh (sys_enable_guix_daemon): Factor out unit installation. Unconditionally remove any old units. Install and enable gnu-store.mount after guix-daemon.service.
2023-07-09guix-install.sh: Don't patch guix-daemon.service.Tobias Geerinckx-Rice
* etc/guix-install.sh (sys_enable_guix_daemon): Remove obsolete sed invocations.
2023-07-09guix-install.sh: Unconditionally install gnu-store.mount.Tobias Geerinckx-Rice
* etc/guix-install.sh (sys_enable_guix_daemon): Remove obsolete conditional.
2023-07-05guix-install.sh: Don't extract the binary ‘.’.Tobias Geerinckx-Rice
* etc/guix-install.sh (sys_create_store): Strip the first tar file name component.
2023-05-25guix-install.sh: Install SELinux policy and relabel file systems if needed.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/62487>. * etc/guix-install.sh (sys_maybe_setup_selinux): New function. (main): Use it.
2023-04-24guix-install.sh: Fix GUIX_ALLOW_OVERWRITE condition.Maxim Cournoyer
Before this change, the "Overwriting existing installation!" would be displayed erroneously. * etc/guix-install.sh (sys_create_store): Fix overwrite conditional.
2023-04-09guix-install.sh: Source both profiles, default user's and home.Andrew Tropin
* etc/guix-install.sh (sys_create_init_profile): Source both profiles, default user's and home.
2023-02-17guix-install.sh: Add GUIX_ALLOW_OVERWRITE environment variable.Maxim Cournoyer
The need for this use case appeared when attempting to install Guix on a truly minimal image made with Buildroot, which lacked enough GNU components that I had to extract a guix pack to /gnu before attempting installation, which would then refuse to proceed because of the existing /gnu. * etc/guix-install.sh: Document environment variables. (sys_create_store) [GUIX_ALLOW_OVERWRITE]: Skip pre-existing installation checks and output a warning. Extract the tarball directly to /.
2022-12-16guix-install.sh: Directly exit in case of errors in chk_require.Maxim Cournoyer
* etc/guix-install.sh (chk_require): Directly exit in case of errors in chk_require, instead of relying on 'set -e'.
2022-12-16guix-install.sh: Add missing "useradd" command.Maxim Cournoyer
* etc/guix-install.sh: (REQUIRE): Add missing "useradd" command.
2022-12-11guix-install.sh: Gracefully fail on | bash.Tobias Geerinckx-Rice
* etc/guix-install.sh (welcome): Print an error message and a hint if the first read fails.
2022-12-09guix-install.sh: Authorize all project build farms at once.Tobias Geerinckx-Rice
* etc/guix-install.sh (sys_authorize_build_farms): Iterate over all hosts. Co-authored-by: Ludovic Courtès <[email protected]>
2022-11-16guix-install.sh: Expand mktemp template for busybox compatibility.Maxim Cournoyer
Fixes <https://issues.guix.gnu.org/58858>. * etc/guix-install.sh (main): Use 6 'X' characters in the template, as this is the minimum required by Busybox's mktemp (which matches glibc's mktemp behavior). Reported-by: conses <[email protected]>
2022-11-14guix-install.sh: Remove unnecessary XDG_DATA_DIRS export.Prafulla Giri
This started out as a bug-fix for a GUI login loop that was resulting from XDG_DATA_DIRS not including any of the host distro's directories. The solution was to export the vari- able (with fail-safe defaults) before source-ing GUIX_PROFILE/etc/profile. It turns out changes have already been made to ensure that XDG_DATA_DIRS, etc. are always exported before anything guix-specific. So, this export is no longer necessary. For reference, the aforementioned bug was found on a Debian 11 machine and it's guix.sh init profile for guix version 1.2. * etc/guix-install.sh (sys_create_init_profile): Remove unnecessary XDG_DATA_DIRS export. Signed-off-by: 宋文武 <[email protected]>
2022-11-08guix-install.sh: Run guix.sh script in /etc/profile.d last.Konrad Hinsen
* etc/guix-install.sh: Rename /etc/profile.d/guix.sh to zzz-guix.sh. This script refers to environment variables set by the host distribution. They may be set in other scripts in /etc/profile.d, which must therefore be run first. Example: in Ubuntu 20.04, XDG_DATA_DIRS is set in /etc/profile.d/xdg_dirs_desktop_session.sh Signed-off-by: Mathieu Othacehe <[email protected]>
2022-10-16guix-install.sh: Cosmetically tweak non-interactive output.Tobias Geerinckx-Rice
Avoid printing Press return to continue...[1666352494.051]: Starting installation… [1666352648.869]: … when the return itself wasn't echoed on the console. * etc/guix-install.sh (welcome): Add a carriage return to the prompt, so that the next line of output may overwrite it.
2022-10-16guix-install.sh: Warn if we suspect dodgy automation.Tobias Geerinckx-Rice
This doesn't affect the installation (yet), but reserves the right to default to safe values other than ‘y’ in future. * etc/guix-install.sh (welcome): Warn if the ‘return’ wasn't.
2022-10-16guix-install.sh: Treat all uncaught errors as fatal.Tobias Geerinckx-Rice
* etc/guix-install.sh: Set -o pipefail.
2022-10-16guix-install.sh: Suggest what to do if fetching OpenPGP key(s) fails.Tobias Geerinckx-Rice
* etc/guix-install.sh (chk_gpg_keyring): Report an _err and set the exit_flag if wget | gpg --import fails.
2022-10-16guix-install.sh: Time out fetching OpenPGP keys.Tobias Geerinckx-Rice
The default 900s provide no useful backstop in interactive use. * etc/guix-install.sh (chk_gpg_keyring): Add a 30s wget --timeout.
2022-10-11guix-install.sh: Restore compatibility with "yes" invocation.Maxim Cournoyer
Commit 6a2e303d3a had modified prompt_yes_no to only read a single character, aiming to ease the user experience. This was, in retrospect, a bad idea, as it makes user input error more likely and introduces complexity. This commit reverts to line-oriented input, while preserving the default yes value so that a user can simply hit 'Enter' at the prompt in place of typing "yes". * etc/guix-install.sh (_flush): Delete function. (prompt_yes_no): Restore line-oriented read. Remove loop. Make anything else than yes means no. Use Bash features to streamline definition. Reported-by: Lars-Dominik Braun <[email protected]> and others.
2022-10-07guix-install.sh: Add Bash prompt customization option.Maxim Cournoyer
Fixes <https://issues.guix.gnu.org/55484>. * etc/guix-install.sh (sys_customize_bashrc): New function. (main): Use it.
2022-10-07guix-install.sh: Introduce 'die' utility function.Maxim Cournoyer
* etc/guix-install.sh (die): New function. (chk_sys_arch): Use it. (guix_get_bin_list, guix_get_bin, sys_create_store): Likewise.
2022-10-07guix-install.sh: Improve prompt_yes_no procedure.Maxim Cournoyer
* etc/guix-install.sh (_flush): New function. (prompt_yes_no): Clear input, then only read the first character, silently. Add the [Yes/no] string to the message. When a newline is entered by the user, treat it as the default value, which is "yes". (chk_gpg_keyring): Remove "(yes/no)" from the prompt message. (configure_substitute_discovery): Likewise. (sys_authorize_build_farms): Likewise.
2022-07-04etc/guix-install.sh: Check for profile from 'guix home'.Philip McGrath
If "$HOME/.guix-home/profile" exists, use it for GUIX_PROFILE instead of "$HOME/.guix-profile". * etc/guix-install.sh (sys_create_init_profile): Check for 'guix home' profile. Signed-off-by: Ludovic Courtès <[email protected]>
2022-07-04etc/guix-install.sh: Initialize XDG base directories.Philip McGrath
The default values from the XDG base directory specification make little sense for Guix System, and some scripts in Guix assume that they are not "empty or unset": for example, see <https://issues.guix.gnu.org/56050>. On foreign distros, however, omitting the default values is likely to break software from the distro, perhaps even preventing the desktop environment from starting. To smooth over the difference, use the system-wide configuration to ensure the environment variables are always explicitly set on foreign distros. * etc/guix-install.sh (sys_create_init_profile): Explicitly initialize XDG base directory variables. Signed-off-by: Ludovic Courtès <[email protected]>
2021-11-07guix-install.sh: Undo some bugs introduced by shellcheck.Tobias Geerinckx-Rice
* etc/guix-install.sh: Unquote all file names containing ~root.
2021-09-29guix-install.sh: Don't swallow wget errors.Tobias Geerinckx-Rice
Using ‘-q’ suppresses *all* stderr output, including errors. * etc/guix-install.sh (chk_gpg_keyring, guix_get_bin_list, guix_get_bin): Substitute ‘--no-verbose’ for ‘-q’. Reported by Maxim Cournoyer <[email protected]>
2021-07-14guix-install.sh: Untabify.Maxim Cournoyer
* etc/guix-install.sh (sys_create_build_user): Normalize to spaces.