Shell, editor, and terminal configs for a consistent dev environment across machines. One command sets up vim, tmux (with session persistence), bash, git, SSH templates, and a collection of helper scripts. Detects your OS and installs dependencies automatically.
Works on Fedora/RHEL, Ubuntu/Debian, and Raspberry Pi OS.
There are three ways to install, depending on what you're starting with:
Run this single command. It installs git, tmux, vim, and curl, then clones this repo and sets everything up:
curl -sL https://raw.githubusercontent.com/malingatembo/dotfiles/main/install.sh | bash
source ~/.bashrcClone the repo yourself, then run the installer:
git clone git@github.com:malingatembo/dotfiles.git ~/projects/personal/dotfiles
cd ~/projects/personal/dotfiles
./install.sh
source ~/.bashrcIf you can't install packages (e.g. a training lab VM where tools are already present), skip the package step:
git clone git@github.com:malingatembo/dotfiles.git ~/projects/personal/dotfiles
cd ~/projects/personal/dotfiles
./install.sh --no-packages
source ~/.bashrcRun with --dry to see what the installer would do without making any changes:
./install.sh --dry| File | Description |
|---|---|
vim/.vimrc |
YAML/Ansible-optimized vim config |
tmux/.tmux.conf |
tmux with C-a prefix, vim nav, resurrect + continuum |
bash/.bashrc |
Shell config (works on Fedora and Debian) |
git/.gitconfig |
Git defaults with conditional work identity |
vscode/settings.json |
VS Code settings for YAML/Ansible/vim-mode |
Copied (not symlinked) to ~/.ssh/. Fill in <PLACEHOLDERS> after install.
| File | Description |
|---|---|
ssh/config |
Global defaults + includes |
ssh/config-redhat |
Red Hat training lab entries (managed by rht-lab-ssh-setup.sh) |
ssh/config-git_personas |
Multiple GitHub account SSH config |
ssh/config-pi |
Homelab cluster nodes |
| Script | Description |
|---|---|
rht-lab-ssh-setup.sh |
Set up SSH for Red Hat training labs — paste the portal's ssh command |
vim-cheatsheet.sh |
Vim reference for YAML editing, can also write a .vimrc and install plugins |
tmux-cheatsheet.sh |
tmux reference with multi-course training workflow |
fix-vpn.sh |
Fix Red Hat Global VPN connection |
archive-claude-session.sh |
Archive Claude Code session transcripts |
new-ticket.sh |
Create JIRA ticket documentation directory |
track_promoted-fearures.sh |
Query OSP trunk for promoted builds |
install-man-page.sh |
Install yq man page |
| Plugin | What it does |
|---|---|
| tmux-resurrect | Save/restore sessions across tmux restarts |
| tmux-continuum | Auto-save every 15 min, auto-restore on start |
| tmux-yank | Copy to system clipboard from copy mode |
# 1. Fill in SSH placeholders with your actual IPs and keys
vim ~/.ssh/config
# 2. Set up SSH for a Red Hat training lab
rht-lab-ssh-setup.sh AU245 "ssh -i ~/.ssh/rht_classroom.rsa -J cloud-user@IP:22022 student@workstation"
ssh au245
# 3. On a remote lab VM — set up vim for YAML editing
vim-cheatsheet.sh setup # writes a YAML-ready ~/.vimrc
vim-cheatsheet.sh plugin # installs the ansible-vim pluginRemove symlinks and restore your original configs:
./uninstall.sh # remove symlinks, restore .bak backups
./uninstall.sh --full # also remove tmux plugins and packages
./uninstall.sh --dry # preview without making changesDoes the same thing as install.sh but via Ansible. Useful for deploying to multiple machines at once.
# Install ansible + git first
sudo dnf install -y ansible git # Fedora/RHEL
sudo apt install -y ansible git # Ubuntu/Debian
# Clone and run
git clone git@github.com:malingatembo/dotfiles.git ~/projects/personal/dotfiles
cd ~/projects/personal/dotfiles
ansible-playbook -i localhost, -c local ansible/playbook.yml --ask-become-pass