- set -Eeuo pipefail at the top (was only enabled after the menu, so
package installs and shelly bootstrap ran unchecked); preamble audited
for guarded vs unguarded commands ([ -t 1 ] && ... became an if, clear
is now 'clear || true')
- error_handler now reports exit status, line number and the failing
command, and the ERR trap is installed after strict mode so preamble
failures abort instead of printing a message and continuing
- exit 1 when any step was recorded as failed (was: always exit 0)
- single STAMP shared by LOG and REPORT; both created via mktemp
(predictable /tmp log names + tee -a was the same symlink class)
- local script/config fallbacks resolved via BASH_SOURCE (SCRIPT_DIR),
not the caller's CWD; falls back to remote fetch when piped
- $? captured via rc=$? inside each failure branch (idempotent under
reordering) for all record_failure call sites
- ${1:-} for the flag check, ${SHELL:-} in the fish detection,
tty-guarded fish warning prompt
Single-install-script
This script automatically installs my favourite Linux applications I use every day such as: Docker, zsh, oh-my-zsh and neovim. This uses the shelly-cli package manager. You can choose what sections to install with the gum menu.
This script will automatically install shelly-cli if it is not already present.
Most of this script is intended for Arch Linux with some Debian compatibility on the zsh, bat and LazyVim install scripts.
It also installs custom configuration for zsh and it's plugins.
If you don't like the configurations fork this and edit to you liking.
Please consider staring this project. It helps me see how important this is for everyone.
Usage
Warning: Run this script with bash, not fish (or another shell). It uses bash-only syntax and will fail if run under fish. Keep
bashin the commands below — do not replace it withfishorsourcethe script. If fish is your default shell, a warning (agum confirmdialog if gum is installed, otherwise a text prompt) will remind you before anything is installed.
To use this script paste the following in the Terminal:
curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/install.sh | bash
For installing zsh and themes (also works on Debian based systems):
curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/zsh.sh | bash
Zsh configuration
My Zsh configuration includes the following plugins run through oh-my-zsh: git, zsh-history-substring-search, zsh-autosuggestions, zsh-autocomplete, fzf-zsh-plugin and zsh-syntax-highlighting
Running the update function will update all your package managers if the command exists without confirmation. (Please use shelly-cli if you are on Arch Linux)
Using the key bind ALT + S will add the sudo command before your previously run command e.g.
╭─alvin@Alvin ~
╰─➤ nano /etc/fstab
# Pressed CTRL + U
╭─alvin@Alvin ~
╰─➤ sudo !!
╭─alvin@Alvin ~
╰─➤ sudo nano /etc/fstab
If you have any issues please add one in the issues tab.