StianNOR-ZSHkit 🚀
A clean, powerful Zsh setup for Linux — featuring Powerlevel10k, Oh My Zsh, Hack Nerd Font, colorls, fastfetch, and a full-featured update dashboard with health checks, tool suggestions and interactive install mode.
Tip
Having issues? Please open an issue: https://github.com/StianNOR/StianNOR-ZSHkit/issues Join the community on Discord: https://discord.gg/eHEHCzGCAE
What's Included
- Zsh with Oh My Zsh and Powerlevel10k prompt
- Hack Nerd Font installed system-wide with automatic terminal/DE configuration
- colorls for beautiful directory listings
- fastfetch for a system info splash on terminal open
- zsh-autosuggestions, zsh-syntax-highlighting, zsh-completions plugins
- Update Dashboard (
up.sh) — a full system update + health check tool with interactive tool browser - ZSHrc Merge Script (
update_zshrc.sh) — safely merges new features into your existing~/.zshrcwithout overwriting personal config
Supported Package Managers ✅
| Package Manager | Distros |
|---|---|
| APT | Debian, Ubuntu, Linux Mint, Pop!_OS, etc |
| DNF | Fedora, CentOS 8+, RHEL 8+, Rocky Linux, etc |
| Pacman | Arch Linux, Manjaro, EndeavourOS, etc |
| Zypper | openSUSE, SUSE Linux Enterprise, etc |
| APK | Alpine Linux |
Installation
cd ~
git clone https://github.com/StianNOR/StianNOR-ZSHkit.git ZSHkit
cd ZSHkit
chmod +x *.sh
./setup_zsh.sh
After installation, log out and back in (or reboot) for the shell change and font to take effect.
Then run p10k configure to set up your prompt style.
Update Dashboard 🚀
The update dashboard keeps your system up to date and healthy with a single command.
up # update everything: packages, flatpak, gems, Oh My Zsh, docker
upc # first-run config: full update + interactive tool install/suppress mode
uph # health check only
ups # tool suggestions and interactive info browser
uphelp # show all commands
What up does
- Updates system packages (pacman/yay, apt, dnf, zypper, or apk)
- Updates Flatpak apps
- Updates Ruby gems (colorls etc.)
- Updates Oh My Zsh and all custom plugins
- Prunes Docker images and volumes
- Cleans journals, thumbnail cache and /tmp
- Rotates logs automatically (keeps last 10)
- Shows a health summary with GOOD/BAD verdict
Tool Suggestions & Info Mode 📖
After running upc (or pressing i after ups), an interactive tool browser opens:
| Category | Tools |
|---|---|
| 🔒 Security | UFW, fail2ban, rkhunter, lynis, ClamAV, auditd, AppArmor |
| ⚡ Optimization | earlyoom, irqbalance, thermald, zram, preload |
| 📡 Monitoring | btop, smartmontools, ncdu, gdu, duf, nethogs, logwatch, nvtop |
| 🛠 Terminal | bat, fzf, rsync, restic, tldr |
| 🌐 Network & Extras | nmap, mtr, timeshift, yay (Arch), nala (Debian) |
Controls:
| Key | Action |
|---|---|
↑ / ↓ |
Navigate tools |
→ / ← |
Next / previous page |
i |
Queue tool for install |
s |
Suppress tool (hide from suggestions permanently) |
q |
Save and exit |
Keeping Your Config Up To Date
If you already have a customised ~/.zshrc and don't want it overwritten, use the merge script instead of copying:
cd ~/ZSHkit
git pull
zup # merges new ZSHkit sections into your existing ~/.zshrc
fresh # reload
The merge script only updates the managed sections (aliases, autosuggestions config) and leaves everything else untouched.
zup --dry-run # preview changes without writing anything
zup --status # check which sections are present in your ~/.zshrc
Helpful Aliases
| Alias | Description |
|---|---|
up |
Run system updates |
upc |
First-run config + tool browser |
uph |
Health check |
ups |
Suggestions + info mode |
uphelp |
Show all up commands |
zup |
Merge new ZSHkit config into local ~/.zshrc |
fresh |
Reload ~/.zshrc |
ali |
Show all active aliases |
rsy |
rsync with progress display |
p10 |
Launch Powerlevel10k configurator |
ls / ll / la / sls |
colorls variants |
Uninstall
./uninstall_zsh_setup.sh
Screenshots
| Before | After |
|---|---|
![]() |
![]() |
Author
StianNOR
Disclaimer ⚠️
Provided as-is for supported Linux distributions. Always back up important data before running scripts. The author accepts no responsibility for data loss or damage. Test in a VM if unsure.

