#!/bin/bash # # Hotfixes for the ISOs that can be used after releasing the ISO. # This file is meant for fixes that need to be done before starting calamares. Main() { local progname=$(basename "$0") source /usr/share/endeavouros/scripts/eos-script-lib-yad || return 1 local ISO_VERSION="$(IsoVersion)" local DE="$(eos_GetDeOrWm)" # Add hotfixes below: # - For ISO version specific hotfixes: use the $ISO_VERSION variable. # - For DE/WM specific hotfixes: use the $DE variable (all upper case letter). # - Make sure execution does NOT stop (e.g. to ask a password) nor EXIT! if [ -z "$ISO_VERSION" ] ; then HotMsg "ISO version not found!" warning return fi HotMsg "hotfixes after ISO $ISO_VERSION" # Permanent fixes common to the latest stable ISO and dev ISOs after that. # Remove installing of nvidia-installer-dkms. sed -i /etc/calamares/scripts/chrooted_cleaner_script.sh \ -e 's|_install_needed_packages nvidia-installer-dkms nvidia-inst |_install_needed_packages nvidia-inst |' # ISO specific fixes. case "$ISO_VERSION" in 2021.11.30) # Atlantis 2021.11.30 Atlantis_fix_update-mirrorlist Atlantis_fix_installer_start ;; 2021.12.*) # Atlantis neo Atlantis_neo_fix # Update_packages calamares_config_ce calamares_config_default ;; 2022.03.30) SkipPackageInstall pcurses # remove pcurses ;; 2022.04.08) # Apollo HotMsg "remove the uninstalling of qt6-base (in offline install) because eos-quickstart needs it" sed -i /etc/calamares/scripts/chrooted_cleaner_script.sh \ -e 's|\(qt6-base\)|# \1|' \ -e 's|^rm -R /etc/calamares /opt/extra-drivers|rm -rf /etc/calamares /opt/extra-drivers|' if eos-connection-checker ; then HotMsg "fix a keyring issue by installing latest archlinux-keyring before pacstrap" sed -i /etc/calamares/modules/shellprocess_initialize_pacman.conf \ -e '/^script:$/a \ - command: "pacman -Sy --needed --noconfirm archlinux-keyring"\n timeout: 1200' fi SkipPackageInstall pipewire-media-session # package pipewire-media-session is no more available officially ;; 2022.08.28) # Artemis neo (second version with grub fix) # font name change for community editions sed -i /etc/calamares/modules/packagechooser_ce.conf -e 's|\(- ttf-nerd-fonts-symbols\)|\1-2048-em|' ;; 2022.09.10) # Artemis nova SkipPackageInstall ipw2100-fw ipw2200-fw # delete removed firmware packages from install lists (ipw2100-fw and ipw2200-fw) # exchange nitrogen with feh for i3 installs sed -i 's/ - nitrogen/ - feh/g' /etc/calamares/modules/netinstall.yaml # remove the installing of nvidia-installer-dkms because it no longer exists in the repo sed -i /etc/calamares/scripts/chrooted_cleaner_script.sh \ -e 's|_install_needed_packages nvidia-installer-dkms|_install_needed_packages|' # remove picom from install list for i3 SkipPackageInstall picom ;; 2022.11.13) # Artemis nova November rebuild SkipPackageInstall ipw2100-fw ipw2200-fw grub-tools # delete removed firmware packages from install lists (ipw2100-fw and ipw2200-fw) # remove grub2-theme-endeavouros from pacstrap sed '/ - grub2-theme-endeavouros/d' -i /etc/calamares/modules/pacstrap.conf ;; 2022.12.06) # Artemis nova December rebuild SkipPackageInstall ipw2100-fw ipw2200-fw grub-tools # delete removed firmware packages from install lists (ipw2100-fw and ipw2200-fw) # remove grub2-theme-endeavouros from pacstrap sed '/ - grub2-theme-endeavouros/d' -i /etc/calamares/modules/pacstrap.conf ;; 2022.12.17) # Cassini # Delete removed firmware packages from install lists (ipw2100-fw and ipw2200-fw). SkipPackageInstall ipw2100-fw ipw2200-fw ;; 2023.03.06) # Cassini nova # [hardwaredetect] Do not return error if hardware detection fails wget -qN -P "/usr/lib/calamares/modules/hardwaredetect/" "https://raw.githubusercontent.com/endeavouros-team/calamares/01aeb60d05c864bacc926f718686c27c69b84f49/src/modules/hardwaredetect/main.py" ;; 2023.03.26) # Cassini nova R1 # [hardwaredetect] Do not return error if hardware detection fails wget -qN -P "/usr/lib/calamares/modules/hardwaredetect/" "https://raw.githubusercontent.com/endeavouros-team/calamares/01aeb60d05c864bacc926f718686c27c69b84f49/src/modules/hardwaredetect/main.py" SkipPackageInstallInFile packagechooser_ce.conf xcursor-neutral sed -i 's/ttf-nerd-fonts-symbols-2048-em/ttf-nerd-fonts-symbols/g' /etc/calamares/modules/packagechooser_ce.conf ;; 2023.05.28) # Cassini nova R2 # [hardwaredetect] Do not return error if hardware detection fails # wget -qN -P "/usr/lib/calamares/modules/hardwaredetect/" "https://raw.githubusercontent.com/endeavouros-team/calamares/01aeb60d05c864bacc926f718686c27c69b84f49/src/modules/hardwaredetect/main.py" FetchFile_timestamp "/usr/lib/calamares/modules/hardwaredetect/main.py" \ "https://gitlab.com/endeavouros-filemirror/calamares/-/raw/01aeb60d05c864bacc926f718686c27c69b84f49/src/modules/hardwaredetect/main.py" \ "https://raw.githubusercontent.com/endeavouros-team/calamares/01aeb60d05c864bacc926f718686c27c69b84f49/src/modules/hardwaredetect/main.py" SkipPackageInstallInFile packagechooser_ce.conf xcursor-neutral sed -i 's/ttf-nerd-fonts-symbols-2048-em/ttf-nerd-fonts-symbols/g' /etc/calamares/modules/packagechooser_ce.conf # [netinstall.yaml] fix cinnamon to not get xdg-desktop-portal-gnome installed sed -i '/^ - x-apps.*/ a\ - xdg-desktop-portal-gtk' /etc/calamares/modules/netinstall.yaml # remove xfs from offered filesystems in partition module # https://github.com/calamares/calamares/issues?q=xfs sed -i -e 's/availableFileSystemTypes: \["ext4","btrfs","xfs"\]/availableFileSystemTypes: ["ext4","btrfs"]/g' /etc/calamares/modules/partition.conf ;; 2023.08.05) # Cassini nova R3 # [hardwaredetect] Do not return error if hardware detection fails # wget -qN -P "/usr/lib/calamares/modules/hardwaredetect/" "https://raw.githubusercontent.com/endeavouros-team/calamares/01aeb60d05c864bacc926f718686c27c69b84f49/src/modules/hardwaredetect/main.py" FetchFile_timestamp "/usr/lib/calamares/modules/hardwaredetect/main.py" \ "https://gitlab.com/endeavouros-filemirror/calamares/-/raw/01aeb60d05c864bacc926f718686c27c69b84f49/src/modules/hardwaredetect/main.py" \ "https://raw.githubusercontent.com/endeavouros-team/calamares/01aeb60d05c864bacc926f718686c27c69b84f49/src/modules/hardwaredetect/main.py" # Community Edition fixes SkipPackageInstallInFile packagechooser_ce.conf xcursor-neutral sed -i 's/ttf-nerd-fonts-symbols-2048-em/ttf-nerd-fonts-symbols/g' /etc/calamares/modules/packagechooser_ce.conf # [netinstall.yaml] fix cinnamon to not get xdg-desktop-portal-gnome installed (now in the patchfile for netinstall.yaml down there) # sed -i '/^ - x-apps.*/ a\ - xdg-desktop-portal-gtk' /etc/calamares/modules/netinstall.yaml # [netinstall.yaml] fix gnome to get xdg-desktop-portal-gnome installed for dark-light mode switch to work (Gnome 45 change) # + fixes for KDE (package renaming upstream) wget -qN -P "/tmp/" "https://raw.githubusercontent.com/endeavouros-team/ISO-hotfixes/main/netinstall.yaml-cassini-R3.patch" patch "/etc/calamares/modules/netinstall.yaml" < "/tmp/netinstall.yaml-cassini-R3.patch" # remove xfs from offered filesystems in partition module # https://github.com/calamares/calamares/issues?q=xfs sed -i -e 's/availableFileSystemTypes: \["ext4","btrfs","xfs"\]/availableFileSystemTypes: ["ext4","btrfs"]/g' /etc/calamares/modules/partition.conf ;; 2023.10.13) # Cassini nova R3 -last weekly rebuild # [netinstall.yaml] fix gnome to get xdg-desktop-portal-gnome installed for dark-light mode switch to work (Gnome 45 change) # + fixes for KDE (package renaming upstream) wget -qN -P "/tmp/" "https://raw.githubusercontent.com/endeavouros-team/ISO-hotfixes/main/netinstall.yaml-cassini-R3.patch" patch "/etc/calamares/modules/netinstall.yaml" < "/tmp/netinstall.yaml-cassini-R3.patch" ;; 2023.11.17) # Galileo # 12/6/23 KDE package rename from kgamma5 to kgamma sed -i 's/ - kgamma5/ - kgamma/g' /etc/calamares/modules/packagechooser.conf ;; 2024.01.25) # Galileo Neo # Plasma 6 release fixing kde packages list wget -qN -P "/tmp/" "https://raw.githubusercontent.com/endeavouros-team/ISO-hotfixes/main/packagechooser.conf.patch" patch "/etc/calamares/modules/packagechooser.conf" < "/tmp/packagechooser.conf.patch" ;; 2024.04.20) # Gemini # Gnome nautilus-send removed from repo wget -qN -P "/tmp/" "https://raw.githubusercontent.com/endeavouros-team/ISO-hotfixes/main/packagechooser.conf_gemini_1.patch" patch "/etc/calamares/modules/packagechooser.conf" < "/tmp/packagechooser.conf_gemini_1.patch" ;; 2024.06.25) # Endeavour # Move fstab after lukskeyfile job so crypttab is correct [settings_online.conf] [settings_offline.conf] wget -qN -P "/tmp/" "https://raw.githubusercontent.com/endeavouros-team/ISO-hotfixes/main/settings_online.conf.patch" wget -qN -P "/tmp/" "https://raw.githubusercontent.com/endeavouros-team/ISO-hotfixes/main/settings_offline.conf.patch" patch "/etc/calamares/settings_online.conf" < "/tmp/settings_online.conf.patch" patch "/etc/calamares/settings_offline.conf" < "/tmp/settings_offline.conf.patch" # replace bad mirror f4st.host with moson.org in /etc/calamares/scripts/update-mirrorlist sed -i /etc/calamares/scripts/update-mirrorlist -e s'|https://mirror.f4st.host/archlinux/$repo/os/$arch|https://mirror.moson.org/arch/$repo/os/$arch|' # skip xsane from /etc/calamares/modules/netinstall.yaml SkipPackageInstall xsane # fixing non working copy paste for vmware installs: wget -qN -O "/etc/calamares/scripts/chrooted_cleaner_script.sh" "https://raw.githubusercontent.com/endeavouros-team/calamares/calamares/data/eos/scripts/chrooted_cleaner_script.sh" # exchange mlocate with plocate (change on repo) sed -i 's/ - mlocate/ - plocate/g' /etc/calamares/modules/netinstall.yaml # pacman.conf changes for pacman 7 update wget -qN -P "/etc/" "https://raw.githubusercontent.com/endeavouros-team/EndeavourOS-ISO/main/airootfs/etc/pacman.conf" # makepkg.conf and makepkg.conf.d changes wget -qN -P "/etc/" "https://raw.githubusercontent.com/endeavouros-team/EndeavourOS-ISO/main/airootfs/etc/makepkg.conf" wget -qN -P "/etc/makepkg.conf.d/" "https://gitlab.archlinux.org/archlinux/packaging/packages/pacman/-/raw/main/rust.conf" ;; 2024.09.22) # Endeavour_Neo # xss-lock added to i3 setup wget -qN -P "/tmp/" "https://raw.githubusercontent.com/endeavouros-team/ISO-hotfixes/main/packagechooser.conf_endeavour_neo_1.patch" patch "/etc/calamares/modules/packagechooser.conf" < "/tmp/packagechooser.conf_endeavour_neo_1.patch" # reiserfsprogs removed from repos wget -qN -P "/tmp/" "https://raw.githubusercontent.com/endeavouros-team/ISO-hotfixes/main/pacstrap.conf_endeavour_neo.patch" patch "/etc/calamares/modules/pacstrap.conf" < "/tmp/pacstrap.conf_endeavour_neo.patch" ;; 2025.02.08) # Mercury # xwaylandvideobridge has been removed from the [extra] repository. SkipPackageInstallInFile packagechooser.conf xwaylandvideobridge # fix for not ranking Arch mirrors in update-mirrorlist Galileo-rate-mirrors-workaround # re-use existing code! ;; 2025.03.19) # Mercury_Neo # obconf replaced with lxappearance-obconf-gtk3 for LXDE # several name changes for LXDE # add plasma-x11-session to be installed note: added to the patch from AddPackageToFile (resorting) # replacing maliit with plasma-keyboard # replacing xbacklight with brightnessctl i3-wm wget -qN -P "/tmp/" "https://raw.githubusercontent.com/endeavouros-team/ISO-hotfixes/main/packagechooser.conf_mercury_neo.patch" patch "/etc/calamares/modules/packagechooser.conf" < "/tmp/packagechooser.conf_mercury_neo.patch" # adding python-jinja for glances wget -qN -P "/tmp/" "https://raw.githubusercontent.com/endeavouros-team/ISO-hotfixes/main/netinstall.yaml_mercury_neo.patch" patch "/etc/calamares/modules/netinstall.yaml" < "/tmp/netinstall.yaml_mercury_neo.patch" ;; *) HotMsg "no hotfixes for ISO version $ISO_VERSION." ;; esac } Galileo-rate-mirrors-workaround() { local remote=$(eos-github2gitlab "https://raw.githubusercontent.com/endeavouros-team/calamares/calamares/data/eos/scripts/update-mirrorlist") local local=/etc/calamares/scripts/update-mirrorlist FetchFile "$remote" "$local" return 0 } Atlantis_neo_fix() { if ! eos-connection-checker ; then HotMsg "$FUNCNAME: no internet connection!" warning return # fail fi # Swap lines of /etc/calamares/settings_community.conf: # - contextualprocess # - packages@online local file=/etc/calamares/settings_community.conf local file2=$file.tmp123 mv $file $file2 grep -Pv 'contextualprocess|packages@online' $file2 | sed '/user_pkglist/i \ - packages@online\n - contextualprocess' > $file rm -f $file2 # fix pcurses sed -i /etc/calamares/modules/netinstall.yaml -e '/pcurses$/d' sed -i /etc/calamares/modules/netinstall-ce-base.yaml -e '/pcurses$/d' # Fix netinstall*.yaml for community editions by removing the https URLs sed -i /etc/calamares/modules/netinstall.conf -e '/gitlab/d' sed -i /etc/calamares/modules/netinstall_community-base.conf -e '/gitlab/d' # fix missing icons in Xfce panel and i3 sed -i /etc/calamares/modules/netinstall.yaml -e 's|^\( [ ]*\)- arc-x-icons-theme$|\1- eos-qogir-icons|' sed -i /etc/calamares/modules/netinstall.yaml -e '337s|arc-x-icons-theme|eos-qogir-icons|' } Atlantis_fix_update-mirrorlist() { if [ "$(PackageVersion calamares_current)" = "3.2.47-5" ] ; then if eos-connection-checker ; then local remote="$(eos-github2gitlab "https://github.com/endeavouros-team/EndeavourOS-calamares/raw/main/calamares/scripts/update-mirrorlist")" local local="/etc/calamares/scripts/update-mirrorlist" FetchFile "$remote" "$local" else HotMsg "$FUNCNAME: no internet connection!" warning fi fi return 0 } Atlantis_fix_installer_start() { local file=/usr/bin/eos-install-mode-run-calamares if [ -n "$(grep "workdir 2>/dev/null" $file)" ] ; then sudo sed \ -i $file \ -e 's|workdir 2>/dev/null|workdir >/dev/null|' \ -e 's|popd 2>/dev/null|popd >/dev/null|' local icon==/usr/share/endeavouros/EndeavourOS-icon.png local txt="" txt+="Currently the Atlantis release requires clicking the install button a second time\n" txt+="in order to actually start the install process.\n\n" txt+="Users are advised to download the Atlantis neo release\n" txt+="where this issue is already fixed.\n\n" txt+="Sorry for the inconvenience.\n" eos_yad --form --image=dialog-information --button=yad-quit --title="Hotfix information" --text="$txt" fi } #### Common services: HotMsg() { local msg="$1" local type="$2" [ -n "$type" ] || type=info echo "==> $progname: $type: $msg" } IsoVersion() { local VERSION="" local file=/usr/lib/endeavouros-release LANG=C source $file || return echo "$VERSION" } PackageVersion() { local pkgname="$1" pacman -Q "$pkgname" | awk '{print $2}' } FetchFile() { local remote="$1" local local="$2" local localtmp=$(mktemp) if curl --fail -Lsm 60 -o "$localtmp" "$remote" ; then sudo cp $localtmp "$local" else HotMsg "fetching new '$local' failed" warning fi rm $localtmp } FetchFile_timestamp() { # Try fetching $remoteurl to $localfile. If it fails, try $remoteutl_alt instead. local localfile="$1" local remoteurl="$2" # a github file local remoteurl_alt="$3" # a gitlab file # wget -qN --timeout=60 -O "$localfile" "$remoteurl" curl -R -Lfsm 60 -o"$localfile" "$remoteurl" case "$?" in 0) return ;; *) if [ -n "$remoteurl_alt" ] ; then FetchFile_timestamp "$localfile" "$remoteurl_alt" "" else HotMsg "fetching '$remoteurl' failed" warning fi ;; esac } Update_packages() { # parameters: package names local pkg pkgs=() for pkg in "$@" ; do if pacman -Q $pkg >& /dev/null ; then pkgs+=("$pkg") fi done if [ -n "$pkgs" ] ; then HotMsg "$DE: updating ${pkgs[*]}" pacman -Sy --noconfirm "${pkgs[@]}" fi } SkipPackageInstall() { # deprecated because of SkipPackageInstallInFile() # remove given packages from the list of packages to be installed HotMsg "skip installing package(s): $*" local pkg for pkg in "$@" ; do sed -E -i /etc/calamares/modules/netinstall.yaml -e "/^[ \t]+-[ \t]+$pkg$/d" sed -E -i /etc/calamares/modules/netinstall-ce-base.yaml -e "/^[ \t]+-[ \t]+$pkg$/d" done } SkipPackageInstallInFile() { # Example calls: # SkipPackageInstallInFile /etc/calamares/modules/netinstall.yaml ipw2100-fw ipw2200-fw # file with absolute path, then package(s) # SkipPackageInstallInFile netinstall.yaml ipw2100-fw ipw2200-fw # file with relative path, then package(s) # # SkipPackageInstallInFile packagechooser_ce.conf xcursor-neutral local file="$1" local -r defpath=/etc/calamares/modules local pkg shift # make sure file has an absolute path case "$file" in /*) ;; # file has absolute path *) file="$defpath/$file" ;; # file has relative path, add the default path esac HotMsg "skip installing package(s) in $file: $*" # handle skipping given packages for pkg in "$@" ; do sed -E -i "$file" -e "/^[ \t]+-[ \t]+$pkg$/d" done } AddPackageToFile() { local file="$1" local after_this_pkg="$2" local new_pkg="$3" if ! grep -E "^[ ]+-[ ]+$new_pkg[ ]*$" "$file" ; then local line=$(grep -E "^[ ]+-[ ]+${after_this_pkg}[ ]*$" "$file") local spaces=$(echo "$line" | sed -E 's|^ ([ ]+).*|\1|') sed -i "/^ ${spaces}- ${after_this_pkg}.*/ a\ ${spaces}- ${new_pkg}" "$file" fi } #### Execution starts here Main "$@"