This is my personal dotfiles setup for Linux systems (primarily Linux Mint), using GNU Stow for easy symlink management and git for version control.
.bash_aliases
– useful command aliases for better terminal productivity.gitconfig
– Git configuration with user identity, aliases, etc.bin/
– custom scripts added to~/bin
for quick access- e.g.,
generate_commit_history.sh
for quick Git summaries
-
Install GNU Stow
sudo apt install stow
-
Clone the repository
git clone https://github.com/yourusername/dotfiles.git ~/dotfiles cd ~/dotfiles
-
Stow your configs
stow bash stow git stow bin
This will:
- Link
.bash_aliases
to~/.bash_aliases
- Link
.gitconfig
to~/.gitconfig
- Link all custom scripts to
~/bin
- Link
-
Reload your terminal config
source ~/.bashrc
To keep the home directory clean, this setup now follows the XDG Base Directory Specification. Configurations are stored in ~/.config/
where possible.
The new folder structure is:
dotfiles/
├── bash/
│ └── .bash_aliases
├── git/
│ └── .config/
│ └── git/
│ └── config
├── tmux/
│ └── .config/
│ └── tmux/
│ └── tmux.conf
└── bin/
└── bin/
└── generate_commit_history.sh
└── tmpenv
A utility to quickly create isolated development environments using Docker.
Usage:
tmpenv <environment-name>
This will:
- Create a new Docker container with a specified name.
- Expose a unique SSH port for the environment.
- Install basic development tools (Git, curl, vim, etc.).
- Set a default password (
dev
) for theroot
user.
Example:
tmpenv my-project
Managing Environments:
- SSH Access:
ssh -p <PORT> root@localhost
- Stop:
docker stop <environment-name>
- Start:
docker start <environment-name>
- Clean Up:
docker rm -f <environment-name> && docker volume rm <environment-name>-data
To add a new application's configuration (e.g., for nvim
):
- Create the package directory:
mkdir nvim
- Create the target directory structure inside it:
mkdir -p nvim/.config/nvim
- Place your configuration file at the target path:
mv ~/my-nvim-config nvim/.config/nvim/init.vim
- Stow the new package:
stow nvim
To remove the symlinks for a package, use the -D
flag:
stow -D git
stow -D tmux
It makes it super easy to:
- Apply or remove individual config groups (like bash, git, etc.)
- Keep your home directory clean
- Avoid manual copying of dotfiles
MIT — feel free to use, fork, or modify!
Maintained by SYED SADIQ ALI Follow on LinkedIn or GitHub