A modular, portable terminal setup for Debian/Ubuntu/Kali systems (including WSL) and Windows (PowerShell 7). Quickly bootstrap a new machine with your favorite tools and configurations.
- Profile-Based: Auto-detects OS (Kali/Debian) and adjusts installation
- Modular Design: Install only what you need
- Portable: Keep everything in git - clone and go
- Smart Restore: Auto-detects existing configs on new machines
- Modern Tools: eza, zoxide, fzf, ripgrep, bat, and more
- Security Tools: impacket, kerbrute, NetExec
- Beautiful Shell: zsh + oh-my-zsh + Starship prompt
- Nerd Fonts: JetBrainsMono with icons and symbols
The setup automatically detects your OS and uses the appropriate profile:
- kali: Minimal install, skips pre-installed tools (Kali Linux)
- debian: Full installation (Debian/Ubuntu)
- minimal: Only shell + dotfiles, no heavy tools
You can manually override: ./setup.sh --profile=debian
# Clone this repo
git clone <your-repo-url> terminal-toolkit
cd terminal-toolkit
# Run setup (installs everything)
chmod +x setup.sh
./setup.sh
# Backup your customized configs
chmod +x scripts/*.sh
./scripts/backup.sh
# Commit and push
git add dotfiles/
git commit -m "Add my dotfiles"
git push# Clone your repo
git clone <your-repo-url> terminal-toolkit
cd terminal-toolkit
# Run setup (auto-restores your configs!)
chmod +x setup.sh
./setup.sh
# That's it! Your machine is ready
exec zshThe same tools on Windows, in PowerShell 7 with winget:
git clone <your-repo-url> terminal-toolkit
cd terminal-toolkit
# Installs PowerShell 7, eza, zoxide, fzf, ripgrep, fd, bat, Starship,
# JetBrainsMono Nerd Font and PSFzf, then installs the profile
powershell -ExecutionPolicy Bypass -File .\setup.ps1
# Also make PowerShell 7 the default shell for SSH logins (run as administrator)
powershell -ExecutionPolicy Bypass -File .\setup.ps1 -SshShellRunning it again skips installed packages. A changed $PROFILE is backed up as
Microsoft.PowerShell_profile.ps1.bak-<timestamp>, and an existing ~\.config\starship.toml
is kept. Open a new pwsh window afterwards and set the terminal font to
"JetBrainsMono Nerd Font" so the icons show.
The profile gives the same aliases, shortcuts and mkcd as .zshrc (see below).
On Windows, ls prints eza's text instead of PowerShell objects: use Get-ChildItem
(gci) in pipelines such as gci | Where-Object Length -gt 1MB.
terminal-toolkit/
├── setup.sh # Main orchestrator script
├── setup.ps1 # Windows setup (winget + PowerShell profile)
├── modules/ # Modular installation scripts
│ ├── 00-system.sh # System updates + essential packages
│ ├── 10-shell.sh # zsh + oh-my-zsh + plugins
│ ├── 15-fonts.sh # Nerd Fonts (JetBrainsMono)
│ ├── 20-starship.sh # Starship prompt
│ ├── 30-modern-tools.sh # eza, zoxide, fzf, ripgrep, bat, etc.
│ └── 90-security-tools.sh # impacket, kerbrute, nxc, seclists
├── scripts/ # Utility scripts
│ ├── backup.sh # Backup dotfiles to repo
│ └── restore.sh # Restore dotfiles from repo
├── dotfiles/ # Your backed up configs
│ ├── .zshrc
│ ├── .gitconfig
│ ├── starship.toml
│ ├── Microsoft.PowerShell_profile.ps1 # Windows twin of .zshrc
│ └── ...
└── README.md # This file
- System updates and upgrades
- Essential build tools
- Core utilities: git, curl, wget, vim, tmux
- System tools: btop, ncdu, duf, procs
- Networking: net-tools, netcat, tcpdump
- Development: python3, pip3
- Utilities: jq, tree, tldr, httpie
- zsh shell
- oh-my-zsh framework
- zsh-autosuggestions plugin
- zsh-syntax-highlighting plugin
- Sets zsh as default shell
- JetBrainsMono Nerd Font (system-wide)
- Installed to
/usr/local/share/fonts/nerd-fonts - Set as default monospace font
- Includes icons and symbols for better terminal UI
- Starship prompt (cross-shell)
- Tokyo Night preset
- Handles config from repo if available
- eza: Modern ls replacement
- zoxide: Smarter cd (learns your patterns)
- fzf: Fuzzy file finder
- ripgrep: Fast grep alternative
- fd-find: Better find command
- bat: Cat with syntax highlighting
- impacket: Network protocol tools
- kerbrute: Kerberos user enumeration
- NetExec (nxc): Network execution tool
./setup.shInteractive prompts will let you:
- Restore existing dotfiles (if found in repo)
- Select which modules to install
- Choose to regenerate .zshrc or keep existing
./scripts/backup.shBacks up these files to dotfiles/:
.zshrc.gitconfig.vimrcstarship.toml.tmux.conf(if exists)
./scripts/restore.shRestores all backed up dotfiles from repo to your home directory.
After setup, these aliases will be available:
ls→eza --icons- Better directory listingll→eza -la --icons- Detailed listinglt→eza --tree --icons- Tree viewcat→batcat- Syntax highlighted cat (baton Windows)fd→fdfind- Better file finder (alreadyfdon Windows)cd→z- Smart cd with zoxide
Ctrl+R- fzf fuzzy history searchCtrl+T- fzf file searchCtrl+O- Accept autosuggestion (→on Windows,F2toggles a suggestion list)Tab- Completion menu (Windows)↑/↓- Search history for what is already typed (Windows)
mkcd <dir>- Create directory and cd into it
The scripts automatically detect and configure proxy settings from /etc/profile.d/proxy.sh if available.
The setup automatically detects if running in WSL or native Linux and adjusts accordingly.
chmod +x setup.sh scripts/*.sh modules/*.shexec zshMake sure ~/.config/starship.toml exists and your .zshrc has:
eval "$(starship init zsh)"NetExec (nxc) requires Rust compilation which can take several minutes. This is normal.
- Create a new script in
modules/(e.g.,50-mytools.sh) - Follow the pattern:
#!/bin/bash set -e echo "🔧 [MYTOOLS] Starting..." # Your installation commands echo "✅ [MYTOOLS] Complete!"
- Update
setup.shto include it in the module list
Edit scripts/backup.sh and scripts/restore.sh to include additional files.
MIT - Do whatever you want with it!
Built for rapid deployment and consistency across development environments.