Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

My personal Linux dotfiles for Bash, Git, and CLI tools — managed with GNU Stow and backed up using Git.

Notifications You must be signed in to change notification settings

SadiqOnGithub/dotfiles

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
53 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛠️ Dotfiles – Bash, Git, and CLI Utilities

This is my personal dotfiles setup for Linux systems (primarily Linux Mint), using GNU Stow for easy symlink management and git for version control.


📁 Included

  • .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

🔧 How to Use (on a new machine)

  1. Install GNU Stow

    sudo apt install stow
  2. Clone the repository

    git clone https://github.com/yourusername/dotfiles.git ~/dotfiles
    cd ~/dotfiles
  3. 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
  4. Reload your terminal config

    source ~/.bashrc

XDG Base Directory Structure

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

tmpenv – Temporary Development Environment

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 the root 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

Adding New Dotfiles

To add a new application's configuration (e.g., for nvim):

  1. Create the package directory: mkdir nvim
  2. Create the target directory structure inside it: mkdir -p nvim/.config/nvim
  3. Place your configuration file at the target path: mv ~/my-nvim-config nvim/.config/nvim/init.vim
  4. Stow the new package: stow nvim

Unlinking (Removing) Packages

To remove the symlinks for a package, use the -D flag:

stow -D git
stow -D tmux

✅ Why use GNU Stow?

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

🌐 License

MIT — feel free to use, fork, or modify!


🔗 Author

Maintained by SYED SADIQ ALI Follow on LinkedIn or GitHub

About

My personal Linux dotfiles for Bash, Git, and CLI tools — managed with GNU Stow and backed up using Git.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.