A beautiful, intelligent, cross-distribution Linux setup wizard that actually respects your time.
ShadeInstaller is a terminal-based installation wizard that transforms the painful process of setting up a fresh Linux system into an elegant, interactive experience. Choose your shell, select packages from curated domains, configure Neovim, and let ShadeInstaller handle the rest—across Arch, Debian/Ubuntu, and Fedora.
- 🎨 Gorgeous UI — Catppuccin Mocha theming with color-coded interactions
- 🔀 Cross-Distribution — One script, three major Linux families
- 🛡️ Safe & Transparent — Dry-run mode, error recovery, full logging
- 🎛️ Domain-Based Selection — Organized categories prevent overwhelm
- 🔧 Smart Package Resolution — Automatically maps packages to your distro
- 📝 Neovim Configs — Pre-configured setups (NvShade, LazyVim, NvChad, etc.)
- ✨ Professional Error Handling — Retry, skip, or abort on failures
- 🎓 Educational — Learn package manager commands via dry-run
You only need Lua or LuaJIT installed:
# Arch
sudo pacman -S lua
# Debian/Ubuntu
sudo apt install lua5.4
# Fedora
sudo dnf install luacurl -O https://raw.githubusercontent.com/shadowdevforge/ShadeInstaller/refs/heads/master/install.lua
lua install.luaWant to see what commands will run before executing? Use dry-run:
curl -O https://raw.githubusercontent.com/shadowdevforge/ShadeInstaller/refs/heads/master/install.lua
lua install.lua --dry-runWant to see source code before executing? Use cat:
curl -O https://raw.githubusercontent.com/shadowdevforge/ShadeInstaller/refs/heads/master/install.lua
cat install.lua| Domain | Examples |
|---|---|
| Browsers | Firefox, Chromium, Brave, LibreWolf, Tor, Qutebrowser |
| Multimedia | VLC, MPV, OBS Studio, GIMP, Inkscape, Blender |
| Dev Tools | Git, Docker, VS Code, LazyGit, CMake, Ninja |
| System Utils | Htop, Btop, Neofetch, Curl, Wget, GParted |
| Social | Discord, Telegram, Slack, Signal, Zoom, Element |
| Gaming | Steam, Lutris, Wine, GameMode, MangoHud, RetroArch |
| Terminal | FZF, RipGrep, Bat, Tmux, Zoxide, Eza, Yazi |
| Languages | Python, Node.js, Go, Rust, GCC, Lua, Ruby, PHP |
- Shell Configuration — Zsh (recommended), Fish, or Bash
- Neovim Distributions — NvShade★, LazyVim, NvChad, AstroNvim, Kickstart
- Git Global Config — Name and email setup with validation
-
Shell Selection
:: Select Shell ---------------------------------------- 1. Zsh (Recommended) 2. Fish 3. Bash (Default) Choice? [1]: -
Package Domain Navigation
:: Package Domains ---------------------------------------- 1. Browsers 2. Multimedia [3 selected] 3. Dev Tools [5 selected] ... Enter ID to open domain, (d)one to proceed. -
Domain-Level Selection
:: Domain: Dev Tools ---------------------------------------- 1. [x] Base Tools 2. [x] Git 3. [ ] Docker 4. [x] VS Code (ID) Toggle, (a) All, (n) None, (b) Back -
Neovim Setup
:: Neovim Setup ---------------------------------------- Install Neovim & Config? [y]: y Choose Distribution: ★ 1. NvShade 2. LazyVim 3. NvChad -
Summary & Confirmation
:: Manifest Summary ---------------------------------------- Distro: ARCH Shell: Zsh (Recommended) Neovim: NvShade Git: user@example.com Packages: 12 queued Preview: firefox, git, docker, vlc, mpv... Options: (p) Proceed with Install (e) Edit Selections (q) Quit -
Installation Progress
:: Installation Progress ---------------------------------------- [1/8] Update System Repos [2/8] Install Shell: Zsh [3/8] Install User Packages ... ✔ Installation Complete! Log: ~/ShadeInstaller.log
Preview all commands before execution:
lua install.lua --dry-runOutput Example:
[1/8] Update System Repos
[DRY] sudo pacman -Syu --noconfirm
[2/8] Install Shell: Zsh
[DRY] sudo pacman -S --noconfirm zsh
[3/8] Install User Packages
[DRY] sudo pacman -S --noconfirm firefox git docker neovim
If a command fails, you get three options:
[!] Command failed: sudo pacman -S brave-bin
Select action:
(r) Retry
(s) Skip this step
(a) Abort installation
Action? [r]:
Changed your mind? Hit (e) in the summary screen to go back and modify selections without restarting.
See exactly what package names will be used for your distro:
Packages: 5 queued
Preview: firefox-esr, build-essential, python3, nodejs, code
^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^
Debian-specific mappings shown
ShadeInstaller automatically resolves package names:
-- You select: "Base Tools"
-- ShadeInstaller installs:
-- • base-devel (Arch)
-- • build-essential (Debian/Ubuntu)
-- • @development-tools (Fedora)- Installs your chosen shell
- Changes default shell safely
- Provides post-install instructions
- Backs up existing configs
- Backs up
~/.config/nvimto~/.config/nvim.bak - Clones your chosen distro directly
- Installs Neovim itself if needed
- Works with: NvShade, LazyVim, NvChad, AstroNvim, Kickstart
- Validates email format (must contain
@) - Sets global user.name and user.email
- Skippable if you prefer manual setup
Everything is logged to ~/ShadeInstaller.log:
--- ShadeInstaller Log ---
Distro: arch
Mode: Live
Date: Fri Nov 26 15:34:12 2025
[TASK] Update System Repos
[CMD] sudo pacman -Syu --noconfirm
[SUCCESS] Exit code: 0
...
| Key | Action |
|---|---|
1-8 |
Open domain / Toggle package |
a |
Select all in domain |
n |
Deselect all in domain |
b |
Go back |
d |
Done / Proceed |
e |
Edit from summary |
p |
Proceed with install |
q |
Quit |
| Distribution | Package Manager | Status |
|---|---|---|
| Arch Linux | Pacman | ✅ Full Support |
| Manjaro | Pacman | ✅ Full Support |
| Debian | APT | ✅ Full Support |
| Ubuntu | APT | ✅ Full Support |
| Linux Mint | APT | ✅ Full Support |
| Fedora | DNF | ✅ Full Support |
Edit install.lua to add your own packages:
Data.domains = {
...
{
name = "My Custom Tools",
items = {
{ n="MyApp", p="myapp" },
{ n="Another", p={ arch="pkg1", deb="pkg2", default="pkg3" } }
}
}
}Some packages like brave-bin and visual-studio-code-bin require an AUR helper (yay, paru). ShadeInstaller will attempt installation via pacman, which will fail. Use the error recovery to skip, then install manually:
yay -S brave-bin visual-studio-code-bin- Brave Browser: Requires brave repository on Debian/Ubuntu
- VS Code: Requires Microsoft repository on Debian/Ubuntu
- Packages not in default repos will fail gracefully
Some packages require additional configuration:
- Docker: Enable service with
sudo systemctl enable --now docker - Shell Change: Log out and back in for changes to take effect
- Neovim: Run
nvimto trigger plugin installation
- Check
~/ShadeInstaller.logfor detailed errors - Verify internet connection
- Ensure package repositories are up to date
- Run with
--dry-runto preview commands
Some packages have different names across distros. Check your distribution's package search:
# Arch
pacman -Ss package-name
# Debian/Ubuntu
apt search package-name
# Fedora
dnf search package-nameEnsure your user has sudo privileges:
sudo -vAfter installation, you must log out and back in (or restart) for shell changes to apply.
Contributions are welcome! Here's how you can help:
- Fork the repository
- Edit
Data.domainsto add packages - Use the resolution pattern:
{ n="Package Name", p={ arch="pkg-arch", deb="pkg-deb", default="pkg-name" } } - Test on multiple distros
- Submit a pull request
- Use dry-run mode to capture command output
- Include
~/ShadeInstaller.logcontent - Specify your distribution and version
- Describe expected vs actual behavior
Open an issue with the enhancement label and describe:
- The use case
- Proposed implementation
- Why it benefits users
ShadeInstaller is released under the MIT License.
MIT License
Copyright (c) 2025 ShadowDevForge
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
[Full license text at LICENSE file]
- Catppuccin — For the beautiful Mocha color palette
- Neovim Community — For the amazing distributions (LazyVim, NvChad, AstroNvim)
- Linux Community — For making cross-distro tooling possible
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Author: ShadowDevForge
Made with love for the amazing Linux community
"Because your fresh install deserves better than copy-pasting random commands from StackOverflow."