Single-script builder (nosignal.sh) that turns a stock Arch Linux ISO into a fully-offline installer for a themed Hyprland + caelestia (Quickshell) desktop: matching SDDM greeter, Btrfs/Limine bootable snapshots, chwd-style GPU detection, and a curated "os updates" layer (keybind cheatsheet, settings panels, system polish, on-box management skill). See README.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
68 lines
2.3 KiB
Bash
Executable file
68 lines
2.3 KiB
Bash
Executable file
#!/bin/sh
|
|
# install-fish-to-bash.sh — migrate this NoSignal box from fish to bash, matching
|
|
# the Omarchy bash setup. Everything ships in this folder so it survives a wipe.
|
|
#
|
|
# Applies:
|
|
# 1. Vendors Omarchy's default/bash tree -> ~/.local/share/omarchy/default/bash
|
|
# 2. Installs ~/.bashrc (Omarchy template + Caelestia colour-scheme line)
|
|
# 3. Points kitty + foot at bash
|
|
# 4. Replaces the two Hyprland helper scripts with bash ports (kept at their
|
|
# .fish paths so the stock keybinds.conf / hyprland.conf keep working)
|
|
#
|
|
# Idempotent (safe to re-run). Backs up an existing ~/.bashrc once.
|
|
# Does NOT remove the fish package — see README.md.
|
|
set -eu
|
|
|
|
SRC=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
|
OMARCHY_BASH="$HOME/.local/share/omarchy/default/bash"
|
|
|
|
# 1. Vendor the Omarchy bash tree.
|
|
mkdir -p "$OMARCHY_BASH/fns"
|
|
for f in rc shell aliases envs init functions inputrc completions; do
|
|
cp "$SRC/bash/$f" "$OMARCHY_BASH/$f"
|
|
done
|
|
cp "$SRC/bash/fns/"* "$OMARCHY_BASH/fns/"
|
|
echo "vendored Omarchy bash tree -> $OMARCHY_BASH"
|
|
|
|
# 2. Install ~/.bashrc (back up any existing one, once).
|
|
if [ -f "$HOME/.bashrc" ] && [ ! -f "$HOME/.bashrc.pre-omarchy" ]; then
|
|
cp "$HOME/.bashrc" "$HOME/.bashrc.pre-omarchy"
|
|
echo "backed up existing ~/.bashrc -> ~/.bashrc.pre-omarchy"
|
|
fi
|
|
cp "$SRC/bashrc" "$HOME/.bashrc"
|
|
echo "installed ~/.bashrc"
|
|
|
|
# 3. Terminals -> bash.
|
|
KITTY="$HOME/.config/kitty/kitty.conf"
|
|
if [ -f "$KITTY" ]; then
|
|
if grep -q '^shell ' "$KITTY"; then
|
|
sed -i 's/^shell .*/shell bash/' "$KITTY"
|
|
else
|
|
printf '\nshell bash\n' >> "$KITTY"
|
|
fi
|
|
echo "kitty -> bash"
|
|
fi
|
|
FOOT="$HOME/.config/foot/foot.ini"
|
|
if [ -f "$FOOT" ]; then
|
|
if grep -q '^shell=' "$FOOT"; then
|
|
sed -i 's/^shell=.*/shell=bash/' "$FOOT"
|
|
else
|
|
sed -i '1i shell=bash' "$FOOT"
|
|
fi
|
|
echo "foot -> bash"
|
|
fi
|
|
|
|
# 4. Hyprland helper scripts -> bash (keep the .fish filenames the config calls).
|
|
SCRIPTS="$HOME/.config/hypr/scripts"
|
|
if [ -d "$SCRIPTS" ]; then
|
|
install -m 0755 "$SRC/hypr-wsaction.bash" "$SCRIPTS/wsaction.fish"
|
|
install -m 0755 "$SRC/hypr-configs.bash" "$SCRIPTS/configs.fish"
|
|
echo "Hyprland helper scripts -> bash"
|
|
fi
|
|
|
|
# 5. Reload Hyprland if running.
|
|
if command -v hyprctl >/dev/null 2>&1 && hyprctl version >/dev/null 2>&1; then
|
|
hyprctl reload >/dev/null 2>&1 && echo "reloaded Hyprland"
|
|
fi
|
|
|
|
echo "Done. Open a NEW terminal to land in bash."
|