Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

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.

Install

There are three ways to install, depending on what you're starting with:

Option 1: Bare machine (nothing installed, not even git)

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 ~/.bashrc

Option 2: Git is already installed

Clone 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 ~/.bashrc

Option 3: Lab VM (no sudo access)

If 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 ~/.bashrc

Preview mode

Run with --dry to see what the installer would do without making any changes:

./install.sh --dry

What's included

Configs

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

SSH templates

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

Scripts (~/bin/)

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

Tmux plugins (auto-installed)

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

After install

# 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 plugin

Uninstall

Remove 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 changes

Ansible alternative

Does 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

About

contains my dotfiles with an ansible supported deployment for essential tool consistency acoss my VMs.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages