NoSignal-OS/os updates/fish-to-bash/install-fish-to-bash.sh
28allday 19fd794b6b NoSignal — fully-offline Arch → Hyprland desktop installer
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>
2026-06-21 11:03:10 +01:00

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."