A developer-focused dotfiles and machine bootstrap toolkit. Clone it on a fresh Ubuntu machine and get a fully configured development environment in minutes — shell, editor, terminal multiplexer, Kubernetes tools, runtimes, and apps all set up automatically via Ansible.

Designed to be reusable across teams so any developer can onboard a new machine without manual setup.

Supported OS

OSStatus
Ubuntu 22.04+Supported
Debian 12+Planned
FedoraPlanned
Arch LinuxPlanned
AlmaLinuxPlanned
CentOS StreamPlanned

Quick Start

One command to set up your entire machine:

curl -fsSL https://raw.githubusercontent.com/9ovindyadav/dotfiles/main/bootstrap.sh | bash

That’s it. The script installs git and ansible, clones the repo, and runs the full playbook automatically.

Or clone manually:

git clone https://github.com/9ovindyadav/dotfiles ~/dotfiles
cd ~/dotfiles
ansible-playbook ansible/playbook.yml --ask-become-pass

What Gets Installed

System Packages

PackagePurpose
gitVersion control
vimTerminal editor
tmuxTerminal multiplexer
stowDotfile symlink manager
fzfFuzzy finder
jqJSON processor
htopProcess monitor
curl / wgetHTTP clients
rsyncFile sync
xclipClipboard integration
podmanRootless containers
build-essentialC/C++ compiler toolchain
cmake / ccacheBuild tools
gnupgGPG encryption
openssh-clientSSH client
unzip / zipArchive tools

Development Runtimes

RuntimeManagerVersion
Node.jsNVM24
JavaSDKMAN27
GoDirect binary1.26.4
DockerOfficial install scriptLatest

Kubernetes Tools

ToolPurpose
kubectlKubernetes CLI (latest stable)
helmKubernetes package manager
k9sTerminal UI for Kubernetes

All installed with architecture detection for amd64 and arm64.

Applications

AppPurpose
BravePrivacy-focused browser
BitwardenPassword manager
ZedCode editor
Sublime MergeGit GUI client
VLCMedia player

Dotfiles

FilePurpose
.bashrcShell config with git prompt, aliases, lazy NVM/SDKMAN loading
.vimrcVim configuration
.tmux.confTmux with Catppuccin theme and TPM plugin manager
.gitconfigGit aliases, default branch, rebase settings

All symlinked into $HOME via GNU Stow.

How It Works

The bootstrap is a single bootstrap.sh script that installs git and ansible, clones the repo, and runs the Ansible playbook. The playbook is structured into four roles you can run selectively via tags:

ansible/
└── roles/
    ├── packages/   # apt packages
    ├── dotfiles/   # stow symlinks
    ├── tools/      # runtimes + k8s tools
    └── apps/       # GUI applications
# Install only packages and dotfiles (fast)
ansible-playbook ansible/playbook.yml --tags packages,dotfiles

# Install only Kubernetes tools
ansible-playbook ansible/playbook.yml --tags tools

Versions are centralized in ansible/roles/tools/vars/main.yml — change one file to standardize a runtime version across the whole team.

Contributing

Contributions are welcome! If you need a tool, runtime, or app added — or want to request a feature — open an issue on GitHub. For bug fixes or improvements, feel free to send a pull request.