Personal Linux dotfiles & auto-install script
Clone on a fresh machine → run one command → everything is ready.
git clone https://github.com/<your-username>/back-up-tools.git ~/back-up-tools
cd ~/back-up-tools
chmod +x install.sh
./install.shThe script will automatically:
- 🔍 Detect your distro (Arch or Ubuntu/Debian)
- 📦 Install all packages via the native package manager
- 🔌 Install Zsh plugins and TPM (Tmux Plugin Manager)
- 🔗 Symlink all configs into the correct locations
- 🐚 Set Zsh as the default shell
| Tool | Description |
|---|---|
| git | Version control |
| zsh | Main shell |
| tmux | Terminal multiplexer |
| neovim | Text editor |
| kitty | GPU-accelerated terminal emulator |
| Tool | Replaces | Description |
|---|---|---|
| eza | ls |
Modern file listing with icons |
| bat | cat |
Syntax highlighting pager |
| fd | find |
Fast and user-friendly file finder |
| ripgrep | grep |
Fast recursive content search |
| duf | df |
Better disk usage overview |
| tree | tree |
Directory structure as a tree |
| Tool | Description |
|---|---|
| fzf | Fuzzy finder for files, history, etc. |
| zoxide | Smarter cd — jumps to frecent directories |
| atuin | Shell history with search and sync |
| yazi | Terminal file manager |
| lazygit | Terminal UI for git |
| btop | Resource monitor (CPU / mem / net / disk) |
| Tool | Description |
|---|---|
| docker | Container runtime (docker.io or docker-ce depending on environment) |
| lazydocker | Terminal UI for Docker |
Note
On Ubuntu, if containerd.io (Docker's official package) is already installed, the script will automatically install docker-ce from Docker's official repository instead of docker.io to avoid package conflicts.
| Plugin | Description |
|---|---|
| oh-my-zsh | Zsh framework with plugins and helpers |
| Powerlevel10k | Fast and customizable Zsh prompt theme |
| zsh-autosuggestions | Fish-like command suggestions |
| zsh-syntax-highlighting | Syntax highlighting in the shell |
oh-my-zsh plugins enabled: git sudo docker extract
🐚 Zsh — configs/zsh/
zshrc— main Zsh configp10k.zsh— Powerlevel10k prompt config
Aliases:
alias ls='eza --icons --group-directories-first'
alias ll='eza -lh --icons --group-directories-first'
alias la='eza -a --icons --group-directories-first'
alias tree='eza --tree --icons'
alias nv='nvim'
alias yz='yazi'
alias rg='rg --smart-case'[!NOTE]
cdis powered by zoxide viazoxide init zsh --cmd cd— tab completion works as expected.
🐱 Kitty — configs/kitty/
kitty.conf— main terminal configcurrent-theme.conf— Catppuccin Mocha color theme
| Setting | Value |
|---|---|
| Font | JetBrainsMono Nerd Font |
| Font size | 12 |
| Background opacity | 0.85 |
| Cursor shape | Beam |
| Tab bar style | Powerline (slanted) |
[!NOTE] Requires JetBrainsMono Nerd Font — install via:
# Arch sudo pacman -S ttf-jetbrains-mono-nerd # Ubuntu sudo apt install fonts-jetbrains-mono
| Keybinding | Action |
|---|---|
Ctrl+Shift+T |
New tab in current directory |
Ctrl+Shift+Enter |
New window in current directory |
📟 Tmux — configs/tmux/
.tmux.conf— main tmux config
[!IMPORTANT] Prefix key has been changed from
Ctrl+B→Ctrl+Space
Plugins (via TPM):
| Plugin | Description |
|---|---|
| tmux-sensible | Sensible default settings |
| tmux-resurrect | Save and restore sessions |
| tmux-continuum | Auto-save sessions continuously |
| tmux-yank | Copy to system clipboard |
| tmux-open | Open files/URLs from tmux |
| tmux-fzf | Manage tmux with fzf |
| catppuccin/tmux | Catppuccin Mocha theme |
After install, open tmux and press Ctrl+Space + I to install plugins.
Pane navigation (shared with Neovim via vim-tmux-navigator):
| Key | Action |
|---|---|
Ctrl+H |
Move to left pane |
Ctrl+J |
Move to bottom pane |
Ctrl+K |
Move to top pane |
Ctrl+L |
Move to right pane |
🗂️ Yazi — configs/yazi/
yazi.toml— file manager config
| Setting | Value |
|---|---|
| Show hidden files | enabled |
| Default editor | nvim |
📊 Btop — configs/btop/
btop.conf— main configthemes/caelestia.theme— custom color theme
| Setting | Value |
|---|---|
| Theme | caelestia (included) |
| Background | transparent |
| Graph style | braille (high resolution) |
🦥 Lazygit
No custom config — uses default settings.
🦇 Bat
No config file — works out of the box with syntax highlighting.
[!NOTE] On Ubuntu/Debian,
batis installed asbatcat. Add this alias if needed:alias bat='batcat'
Neovim is installed by this script but no config is included here. Config lives in a separate repo → AssachanDev/nvim
After running install.sh, verify everything is working:
bash scripts/check_tools.shback-up-tools/
├── install.sh # Main entry point
├── scripts/
│ ├── utils.sh # Logging helpers, link_config()
│ ├── detect_distro.sh # Auto-detect Arch / Ubuntu / Debian
│ ├── packages_arch.sh # Arch package list
│ ├── packages_ubuntu.sh # Ubuntu/Debian package list
│ ├── setup_configs.sh # Symlink configs + install plugins
│ └── check_tools.sh # Verify all tools are installed correctly
└── configs/
├── zsh/
├── kitty/
├── tmux/
├── yazi/
└── btop/