Structure the installers explicitly with clearly defined segments

This commit is contained in:
David Heinemeier Hansson
2025-07-25 16:48:53 -04:00
parent 25acc313b1
commit b5f60f78a8
29 changed files with 67 additions and 44 deletions

View File

@ -3,6 +3,8 @@
# Exit immediately if a command exits with a non-zero status # Exit immediately if a command exits with a non-zero status
set -e set -e
OMARCHY_INSTALL=~/.local/share/omarchy/install/
# Give people a chance to retry running the installation # Give people a chance to retry running the installation
catch_errors() { catch_errors() {
echo -e "\n\e[31mOmarchy installation failed!\e[0m" echo -e "\n\e[31mOmarchy installation failed!\e[0m"
@ -12,16 +14,70 @@ catch_errors() {
trap catch_errors ERR trap catch_errors ERR
# Install everything show_logo() {
for f in ~/.local/share/omarchy/install/*.sh; do clear
echo -e "\nRunning installer: $f" tte -i ~/.local/share/omarchy/logo.txt --frame-rate ${2:-120} ${1:-expand}
source "$f" echo
done }
# Ensure locate is up to date now that everything has been installed show_subtext() {
echo "$1" | tte --frame-rate ${3:-640} ${2:-wipe}
echo
}
# Install prerequisites
source $OMARCHY_INSTALL/preflight/aur.sh
source $OMARCHY_INSTALL/preflight/presentation.sh
# Configuration
show_logo beams 240
show_subtext "Let's configure Omarchy! [1/5]"
source $OMARCHY_INSTALL/config/identification.sh
source $OMARCHY_INSTALL/config/config.sh
source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
source $OMARCHY_INSTALL/config/fix-fkeys.sh
source $OMARCHY_INSTALL/config/network.sh
source $OMARCHY_INSTALL/config/power.sh
source $OMARCHY_INSTALL/config/theme.sh
source $OMARCHY_INSTALL/config/login.sh
source $OMARCHY_INSTALL/config/plymouth.sh
source $OMARCHY_INSTALL/config/nvidia.sh
# Development
show_logo decrypt 920
show_subtext "Installing terminal tools [2/10]"
source $OMARCHY_INSTALL/development/terminal.sh
source $OMARCHY_INSTALL/development/developmment.sh
source $OMARCHY_INSTALL/development/nvim.sh
source $OMARCHY_INSTALL/development/ruby.sh
source $OMARCHY_INSTALL/development/docker.sh
source $OMARCHY_INSTALL/development/firewall.sh
# Desktop
show_logo slice
show_subtext "Installing desktop tools [3/10]"
source $OMARCHY_INSTALL/desktop/desktop.sh
source $OMARCHY_INSTALL/desktop/hyprlandia.sh
source $OMARCHY_INSTALL/desktop/bluetooth.sh
source $OMARCHY_INSTALL/desktop/asdcontrol.sh
source $OMARCHY_INSTALL/desktop/fonts.sh
source $OMARCHY_INSTALL/desktop/printer.sh
# Apps
show_logo expand
show_subtext "Installing default applications [4/5]"
source $OMARCHY_INSTALL/apps/webapps.sh
source $OMARCHY_INSTALL/apps/xtras.sh
source $OMARCHY_INSTALL/apps/mimetypes.sh
# Updates
show_logo highlight
show_subtext "Updating system packages [5/5]"
sudo updatedb sudo updatedb
# Update all built-in packages
sudo pacman -Syu --noconfirm sudo pacman -Syu --noconfirm
# Reboot
show_logo laseretch 920
show_subtext "You're done! So we'll be rebooting now..."
sleep 2
reboot reboot

View File

@ -1,15 +0,0 @@
#!/bin/bash
# Need gum to query for input
yay -S --noconfirm --needed gum python-terminaltexteffects
show_logo() {
clear
tte -i ~/.local/share/omarchy/logo.txt --frame-rate ${2:-120} ${1:-expand}
echo -e ""
}
show_subtext() {
echo "$1" | tte --frame-rate ${3:-640} ${2:-wipe}
echo -e ""
}

View File

@ -1,7 +1,4 @@
#!/bin/bash #!/bin/bash
show_logo beams 240
show_subtext "Let's install Omarchy!"
export OMARCHY_USER_NAME=$(gum input --placeholder "Enter full name" --prompt "Name> ") export OMARCHY_USER_NAME=$(gum input --placeholder "Enter full name" --prompt "Name> ")
export OMARCHY_USER_EMAIL=$(gum input --placeholder "Enter email address" --prompt "Email> ") export OMARCHY_USER_EMAIL=$(gum input --placeholder "Enter email address" --prompt "Email> ")

View File

@ -1,8 +1,5 @@
#!/bin/bash #!/bin/bash
show_logo
show_subtext "Install decryption and boot loader..."
yay -S --noconfirm --needed uwsm yay -S --noconfirm --needed uwsm
# Compile the seamless login helper -- needed to prevent seeing terminal between loader and desktop # Compile the seamless login helper -- needed to prevent seeing terminal between loader and desktop

View File

@ -1,8 +1,5 @@
#!/bin/bash #!/bin/bash
show_logo
show_subtext "Let's install desktop tools..."
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
brightnessctl playerctl pamixer wiremix wireplumber \ brightnessctl playerctl pamixer wiremix wireplumber \
fcitx5 fcitx5-gtk fcitx5-qt wl-clip-persist \ fcitx5 fcitx5-gtk fcitx5-qt wl-clip-persist \

View File

@ -1,8 +1,5 @@
#!/bin/bash #!/bin/bash
show_logo
show_subtext "Install beautiful fonts..."
if [ -z "$OMARCHY_BARE" ]; then if [ -z "$OMARCHY_BARE" ]; then
yay -S --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji noto-fonts-cjk noto-fonts-extra yay -S --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji noto-fonts-cjk noto-fonts-extra
else else

View File

@ -1,8 +1,5 @@
#!/bin/bash #!/bin/bash
show_logo
show_subtext "Installing Hyprland ecosystem..."
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \ hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \
walker-bin libqalculate waybar mako swaybg swayosd \ walker-bin libqalculate waybar mako swaybg swayosd \

View File

@ -1,7 +1,4 @@
#!/bin/bash #!/bin/bash
show_logo
show_subtext "Installing printer system..."
sudo pacman -S --noconfirm cups cups-pdf cups-filters system-config-printer sudo pacman -S --noconfirm cups cups-pdf cups-filters system-config-printer
sudo systemctl enable --now cups.service sudo systemctl enable --now cups.service

View File

@ -1,8 +1,5 @@
#!/bin/bash #!/bin/bash
show_logo
show_subtext "Let's install development tools..."
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
cargo clang llvm mise \ cargo clang llvm mise \
imagemagick \ imagemagick \

View File

@ -0,0 +1,3 @@
#!/bin/bash
yay -S --noconfirm --needed gum python-terminaltexteffects